summaryrefslogtreecommitdiff
path: root/test/dialect
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2022-08-04 13:32:17 +0000
committerGerrit Code Review <gerrit@ci3.zzzcomputing.com>2022-08-04 13:32:17 +0000
commit0027b3a4bc54599ac8102a4a3d81d8007738903e (patch)
tree5355294f6a81c5b413684dd371cc58c94bdcb5ab /test/dialect
parentdc5a1c482ee1a8faf15fd81db866e5f72c1c719f (diff)
parentf684bb7659ff195d4c55414162c1de4fbfdafc2f (diff)
downloadsqlalchemy-0027b3a4bc54599ac8102a4a3d81d8007738903e.tar.gz
Merge "ensure RETURNING renders in stringify w/ no server version" into main
Diffstat (limited to 'test/dialect')
-rw-r--r--test/dialect/mssql/test_compiler.py16
-rw-r--r--test/dialect/mysql/test_compiler.py20
-rw-r--r--test/dialect/oracle/test_compiler.py16
-rw-r--r--test/dialect/postgresql/test_compiler.py16
-rw-r--r--test/dialect/test_sqlite.py16
5 files changed, 84 insertions, 0 deletions
diff --git a/test/dialect/mssql/test_compiler.py b/test/dialect/mssql/test_compiler.py
index 74722e949..8605ea9c0 100644
--- a/test/dialect/mssql/test_compiler.py
+++ b/test/dialect/mssql/test_compiler.py
@@ -53,6 +53,22 @@ class CompileTest(fixtures.TestBase, AssertsCompiledSQL):
self.assert_compile(sql.false(), "0")
self.assert_compile(sql.true(), "1")
+ def test_plain_stringify_returning(self):
+ t = Table(
+ "t",
+ MetaData(),
+ Column("myid", Integer, primary_key=True),
+ Column("name", String, server_default="some str"),
+ Column("description", String, default=func.lower("hi")),
+ )
+ stmt = t.insert().values().return_defaults()
+ eq_ignore_whitespace(
+ str(stmt.compile(dialect=mssql.dialect())),
+ "INSERT INTO t (description) "
+ "OUTPUT inserted.myid, inserted.name, inserted.description "
+ "VALUES (lower(:lower_1))",
+ )
+
@testing.combinations(
("plain", "sometable", "sometable"),
("matched_square_brackets", "colo[u]r", "[colo[u]]r]"),
diff --git a/test/dialect/mysql/test_compiler.py b/test/dialect/mysql/test_compiler.py
index 3fb52416e..9d2c43bfe 100644
--- a/test/dialect/mysql/test_compiler.py
+++ b/test/dialect/mysql/test_compiler.py
@@ -61,6 +61,7 @@ from sqlalchemy.sql.expression import literal_column
from sqlalchemy.testing import assert_raises_message
from sqlalchemy.testing import AssertsCompiledSQL
from sqlalchemy.testing import eq_
+from sqlalchemy.testing import eq_ignore_whitespace
from sqlalchemy.testing import expect_warnings
from sqlalchemy.testing import fixtures
from sqlalchemy.testing import mock
@@ -146,6 +147,25 @@ class CompileTest(ReservedWordFixture, fixtures.TestBase, AssertsCompiledSQL):
dialect=dialect,
)
+ def test_plain_stringify_returning(self):
+ t = Table(
+ "t",
+ MetaData(),
+ Column("myid", Integer, primary_key=True),
+ Column("name", String, server_default="some str"),
+ Column("description", String, default=func.lower("hi")),
+ )
+ stmt = t.insert().values().return_defaults()
+ eq_ignore_whitespace(
+ str(stmt.compile(dialect=mysql.dialect(is_mariadb=True))),
+ "INSERT INTO t (description) VALUES (lower(%s)) "
+ "RETURNING t.myid, t.name, t.description",
+ )
+ eq_ignore_whitespace(
+ str(stmt.compile(dialect=mysql.dialect())),
+ "INSERT INTO t (description) VALUES (lower(%s))",
+ )
+
def test_create_index_simple(self):
m = MetaData()
tbl = Table("testtbl", m, Column("data", String(255)))
diff --git a/test/dialect/oracle/test_compiler.py b/test/dialect/oracle/test_compiler.py
index 45a83ed77..96969b459 100644
--- a/test/dialect/oracle/test_compiler.py
+++ b/test/dialect/oracle/test_compiler.py
@@ -57,6 +57,22 @@ class CompileTest(fixtures.TestBase, AssertsCompiledSQL):
self.assert_compile(sql.false(), "0")
self.assert_compile(sql.true(), "1")
+ def test_plain_stringify_returning(self):
+ t = Table(
+ "t",
+ MetaData(),
+ Column("myid", Integer, primary_key=True),
+ Column("name", String, server_default="some str"),
+ Column("description", String, default=func.lower("hi")),
+ )
+ stmt = t.insert().values().return_defaults()
+ eq_ignore_whitespace(
+ str(stmt.compile(dialect=oracle.OracleDialect())),
+ "INSERT INTO t (description) VALUES (lower(:lower_1)) "
+ "RETURNING t.myid, t.name, t.description "
+ "INTO :ret_0, :ret_1, :ret_2",
+ )
+
def test_owner(self):
meta = MetaData()
parent = Table(
diff --git a/test/dialect/postgresql/test_compiler.py b/test/dialect/postgresql/test_compiler.py
index 9be76130d..5e5c4f9bd 100644
--- a/test/dialect/postgresql/test_compiler.py
+++ b/test/dialect/postgresql/test_compiler.py
@@ -56,6 +56,7 @@ from sqlalchemy.testing import fixtures
from sqlalchemy.testing.assertions import assert_raises
from sqlalchemy.testing.assertions import assert_raises_message
from sqlalchemy.testing.assertions import AssertsCompiledSQL
+from sqlalchemy.testing.assertions import eq_ignore_whitespace
from sqlalchemy.testing.assertions import expect_warnings
from sqlalchemy.testing.assertions import is_
from sqlalchemy.util import OrderedDict
@@ -101,6 +102,21 @@ class CompileTest(fixtures.TestBase, AssertsCompiledSQL):
__dialect__ = postgresql.dialect()
+ def test_plain_stringify_returning(self):
+ t = Table(
+ "t",
+ MetaData(),
+ Column("myid", Integer, primary_key=True),
+ Column("name", String, server_default="some str"),
+ Column("description", String, default=func.lower("hi")),
+ )
+ stmt = t.insert().values().return_defaults()
+ eq_ignore_whitespace(
+ str(stmt.compile(dialect=postgresql.dialect())),
+ "INSERT INTO t (description) VALUES (lower(%(lower_1)s)) "
+ "RETURNING t.myid, t.name, t.description",
+ )
+
def test_update_returning(self):
dialect = postgresql.dialect()
table1 = table(
diff --git a/test/dialect/test_sqlite.py b/test/dialect/test_sqlite.py
index 286c6bcf8..643a56c1b 100644
--- a/test/dialect/test_sqlite.py
+++ b/test/dialect/test_sqlite.py
@@ -51,6 +51,7 @@ from sqlalchemy.testing import combinations
from sqlalchemy.testing import config
from sqlalchemy.testing import engines
from sqlalchemy.testing import eq_
+from sqlalchemy.testing import eq_ignore_whitespace
from sqlalchemy.testing import expect_raises
from sqlalchemy.testing import expect_warnings
from sqlalchemy.testing import fixtures
@@ -972,6 +973,21 @@ class SQLTest(fixtures.TestBase, AssertsCompiledSQL):
"INTEGER) AS anon_1 FROM t" % subst,
)
+ def test_plain_stringify_returning(self):
+ t = Table(
+ "t",
+ MetaData(),
+ Column("myid", Integer, primary_key=True),
+ Column("name", String, server_default="some str"),
+ Column("description", String, default=func.lower("hi")),
+ )
+ stmt = t.insert().values().return_defaults()
+ eq_ignore_whitespace(
+ str(stmt.compile(dialect=sqlite.SQLiteDialect())),
+ "INSERT INTO t (description) VALUES (lower(?)) "
+ "RETURNING myid, name, description",
+ )
+
def test_true_false(self):
self.assert_compile(sql.false(), "0")
self.assert_compile(sql.true(), "1")