diff options
Diffstat (limited to 'lib/sqlalchemy/sql')
| -rw-r--r-- | lib/sqlalchemy/sql/compiler.py | 12 | ||||
| -rw-r--r-- | lib/sqlalchemy/sql/elements.py | 4 |
2 files changed, 10 insertions, 6 deletions
diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py index 0c701cb52..a466216e3 100644 --- a/lib/sqlalchemy/sql/compiler.py +++ b/lib/sqlalchemy/sql/compiler.py @@ -1914,10 +1914,14 @@ class SQLCompiler(Compiled): ): if not values: - assert not parameter.type._is_tuple_type - replacement_expression = self.visit_empty_set_expr( - [parameter.type] - ) + if parameter.type._is_tuple_type: + replacement_expression = ( + "VALUES " if self.dialect.tuple_in_values else "" + ) + self.visit_empty_set_expr(parameter.type.types) + else: + replacement_expression = self.visit_empty_set_expr( + [parameter.type] + ) elif isinstance(values[0], (tuple, list)): assert parameter.type._is_tuple_type diff --git a/lib/sqlalchemy/sql/elements.py b/lib/sqlalchemy/sql/elements.py index e97ed252e..699a874fb 100644 --- a/lib/sqlalchemy/sql/elements.py +++ b/lib/sqlalchemy/sql/elements.py @@ -1407,8 +1407,8 @@ class BindParameter(roles.InElementRole, ColumnElement): self.type = type_api._resolve_value_to_type(check_value) elif isinstance(type_, type): self.type = type_() - elif type_._is_tuple_type: - if expanding and value: + elif type_._is_tuple_type and value: + if expanding: check_value = value[0] else: check_value = value |
