summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/dialects
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/dialects')
-rw-r--r--lib/sqlalchemy/dialects/oracle/base.py22
-rw-r--r--lib/sqlalchemy/dialects/postgresql/base.py13
2 files changed, 15 insertions, 20 deletions
diff --git a/lib/sqlalchemy/dialects/oracle/base.py b/lib/sqlalchemy/dialects/oracle/base.py
index 0d51bf73d..41b9ac43d 100644
--- a/lib/sqlalchemy/dialects/oracle/base.py
+++ b/lib/sqlalchemy/dialects/oracle/base.py
@@ -854,7 +854,7 @@ class OracleCompiler(compiler.SQLCompiler):
def visit_function(self, func, **kw):
text = super().visit_function(func, **kw)
if kw.get("asfrom", False):
- text = "TABLE (%s)" % func
+ text = "TABLE (%s)" % text
return text
def visit_table_valued_column(self, element, **kw):
@@ -1222,20 +1222,18 @@ class OracleCompiler(compiler.SQLCompiler):
self.process(binary.right),
)
- def _get_regexp_args(self, binary, kw):
+ def visit_regexp_match_op_binary(self, binary, operator, **kw):
string = self.process(binary.left, **kw)
pattern = self.process(binary.right, **kw)
flags = binary.modifiers["flags"]
- if flags is not None:
- flags = self.process(flags, **kw)
- return string, pattern, flags
-
- def visit_regexp_match_op_binary(self, binary, operator, **kw):
- string, pattern, flags = self._get_regexp_args(binary, kw)
if flags is None:
return "REGEXP_LIKE(%s, %s)" % (string, pattern)
else:
- return "REGEXP_LIKE(%s, %s, %s)" % (string, pattern, flags)
+ return "REGEXP_LIKE(%s, %s, %s)" % (
+ string,
+ pattern,
+ self.process(flags, **kw),
+ )
def visit_not_regexp_match_op_binary(self, binary, operator, **kw):
return "NOT %s" % self.visit_regexp_match_op_binary(
@@ -1243,8 +1241,10 @@ class OracleCompiler(compiler.SQLCompiler):
)
def visit_regexp_replace_op_binary(self, binary, operator, **kw):
- string, pattern, flags = self._get_regexp_args(binary, kw)
+ string = self.process(binary.left, **kw)
+ pattern = self.process(binary.right, **kw)
replacement = self.process(binary.modifiers["replacement"], **kw)
+ flags = binary.modifiers["flags"]
if flags is None:
return "REGEXP_REPLACE(%s, %s, %s)" % (
string,
@@ -1256,7 +1256,7 @@ class OracleCompiler(compiler.SQLCompiler):
string,
pattern,
replacement,
- flags,
+ self.process(flags, **kw),
)
diff --git a/lib/sqlalchemy/dialects/postgresql/base.py b/lib/sqlalchemy/dialects/postgresql/base.py
index 99c48fb2f..f9108094f 100644
--- a/lib/sqlalchemy/dialects/postgresql/base.py
+++ b/lib/sqlalchemy/dialects/postgresql/base.py
@@ -1747,14 +1747,11 @@ class PGCompiler(compiler.SQLCompiler):
return self._generate_generic_binary(
binary, " %s* " % base_op, **kw
)
- flags = self.process(flags, **kw)
- string = self.process(binary.left, **kw)
- pattern = self.process(binary.right, **kw)
return "%s %s CONCAT('(?', %s, ')', %s)" % (
- string,
+ self.process(binary.left, **kw),
base_op,
- flags,
- pattern,
+ self.process(flags, **kw),
+ self.process(binary.right, **kw),
)
def visit_regexp_match_op_binary(self, binary, operator, **kw):
@@ -1767,8 +1764,6 @@ class PGCompiler(compiler.SQLCompiler):
string = self.process(binary.left, **kw)
pattern = self.process(binary.right, **kw)
flags = binary.modifiers["flags"]
- if flags is not None:
- flags = self.process(flags, **kw)
replacement = self.process(binary.modifiers["replacement"], **kw)
if flags is None:
return "REGEXP_REPLACE(%s, %s, %s)" % (
@@ -1781,7 +1776,7 @@ class PGCompiler(compiler.SQLCompiler):
string,
pattern,
replacement,
- flags,
+ self.process(flags, **kw),
)
def visit_empty_set_expr(self, element_types):