diff options
author | mike bayer <mike_mp@zzzcomputing.com> | 2020-03-24 19:55:44 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@bbpush.zzzcomputing.com> | 2020-03-24 19:55:44 +0000 |
commit | 7ab1a62d886a9fe40eb368bbbe73b6436b9cbb4b (patch) | |
tree | de7a5d1cdf9538474f56eba42afb1c6a540c4da6 /lib/sqlalchemy/sql/compiler.py | |
parent | fa1f67a01e80367d73cf5d1d93b6f7f51dc1746b (diff) | |
parent | 8e3a05ab987dcb783385e555aa607248df1469ca (diff) | |
download | sqlalchemy-7ab1a62d886a9fe40eb368bbbe73b6436b9cbb4b.tar.gz |
Merge "Implement SQL VALUES in core."
Diffstat (limited to 'lib/sqlalchemy/sql/compiler.py')
-rw-r--r-- | lib/sqlalchemy/sql/compiler.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py index ae9c3c73a..14f4bda8c 100644 --- a/lib/sqlalchemy/sql/compiler.py +++ b/lib/sqlalchemy/sql/compiler.py @@ -2292,6 +2292,46 @@ class SQLCompiler(Compiled): return text + def visit_values(self, element, asfrom=False, from_linter=None, **kw): + v = "VALUES %s" % ", ".join( + self.process(elem, literal_binds=element.literal_binds) + for elem in element._data + ) + + if isinstance(element.name, elements._truncated_label): + name = self._truncated_identifier("values", element.name) + else: + name = element.name + + if element._is_lateral: + lateral = "LATERAL " + else: + lateral = "" + + if asfrom: + if from_linter: + from_linter.froms[element] = ( + name if name is not None else "(unnamed VALUES element)" + ) + + if name: + v = "%s(%s)%s (%s)" % ( + lateral, + v, + self.get_render_as_alias_suffix(self.preparer.quote(name)), + ( + ", ".join( + c._compiler_dispatch( + self, include_table=False, **kw + ) + for c in element.columns + ) + ), + ) + else: + v = "%s(%s)" % (lateral, v) + return v + def get_render_as_alias_suffix(self, alias_name_text): return " AS " + alias_name_text |