summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2011-02-11 00:49:28 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2011-02-11 00:49:28 -0500
commit09efc11fbc95f8a47200dd102d304b90609e9408 (patch)
tree58cbd0dafa6a8d0ae791b9dfc7652d1393beb84a /lib
parented4534ea8a003c89441064b028b0b22c5b5ea97a (diff)
downloadsqlalchemy-09efc11fbc95f8a47200dd102d304b90609e9408.tar.gz
- need to limit the list of oracle fn's that don't get parens to a
fixed list. window functions need parens
Diffstat (limited to 'lib')
-rw-r--r--lib/sqlalchemy/dialects/firebird/base.py4
-rw-r--r--lib/sqlalchemy/dialects/oracle/base.py24
2 files changed, 18 insertions, 10 deletions
diff --git a/lib/sqlalchemy/dialects/firebird/base.py b/lib/sqlalchemy/dialects/firebird/base.py
index 84222e428..4b8df55bb 100644
--- a/lib/sqlalchemy/dialects/firebird/base.py
+++ b/lib/sqlalchemy/dialects/firebird/base.py
@@ -244,6 +244,10 @@ class FBCompiler(sql.compiler.SQLCompiler):
visit_char_length_func = visit_length_func
def function_argspec(self, func, **kw):
+ # TODO: this probably will need to be
+ # narrowed to a fixed list, some no-arg functions
+ # may require parens - see similar example in the oracle
+ # dialect
if func.clauses is not None and len(func.clauses):
return self.process(func.clause_expr)
else:
diff --git a/lib/sqlalchemy/dialects/oracle/base.py b/lib/sqlalchemy/dialects/oracle/base.py
index 5ef11c37d..d3c1bc139 100644
--- a/lib/sqlalchemy/dialects/oracle/base.py
+++ b/lib/sqlalchemy/dialects/oracle/base.py
@@ -133,15 +133,19 @@ from sqlalchemy import types as sqltypes
from sqlalchemy.types import VARCHAR, NVARCHAR, CHAR, DATE, DATETIME, \
BLOB, CLOB, TIMESTAMP, FLOAT
-RESERVED_WORDS = set('SHARE RAW DROP BETWEEN FROM DESC OPTION PRIOR LONG THEN '
- 'DEFAULT ALTER IS INTO MINUS INTEGER NUMBER GRANT IDENTIFIED '
- 'ALL TO ORDER ON FLOAT DATE HAVING CLUSTER NOWAIT RESOURCE ANY '
- 'TABLE INDEX FOR UPDATE WHERE CHECK SMALLINT WITH DELETE BY ASC '
- 'REVOKE LIKE SIZE RENAME NOCOMPRESS NULL GROUP VALUES AS IN VIEW '
- 'EXCLUSIVE COMPRESS SYNONYM SELECT INSERT EXISTS NOT TRIGGER '
- 'ELSE CREATE INTERSECT PCTFREE DISTINCT USER CONNECT SET MODE '
- 'OF UNIQUE VARCHAR2 VARCHAR LOCK OR CHAR DECIMAL UNION PUBLIC '
- 'AND START UID COMMENT'.split())
+RESERVED_WORDS = \
+ set('SHARE RAW DROP BETWEEN FROM DESC OPTION PRIOR LONG THEN '\
+ 'DEFAULT ALTER IS INTO MINUS INTEGER NUMBER GRANT IDENTIFIED '\
+ 'ALL TO ORDER ON FLOAT DATE HAVING CLUSTER NOWAIT RESOURCE '\
+ 'ANY TABLE INDEX FOR UPDATE WHERE CHECK SMALLINT WITH DELETE '\
+ 'BY ASC REVOKE LIKE SIZE RENAME NOCOMPRESS NULL GROUP VALUES '\
+ 'AS IN VIEW EXCLUSIVE COMPRESS SYNONYM SELECT INSERT EXISTS '\
+ 'NOT TRIGGER ELSE CREATE INTERSECT PCTFREE DISTINCT USER '\
+ 'CONNECT SET MODE OF UNIQUE VARCHAR2 VARCHAR LOCK OR CHAR '\
+ 'DECIMAL UNION PUBLIC AND START UID COMMENT'.split())
+
+NO_ARG_FNS = set('UID CURRENT_DATE SYSDATE USER '
+ 'CURRENT_TIME CURRENT_TIMESTAMP'.split())
class RAW(sqltypes.LargeBinary):
pass
@@ -382,7 +386,7 @@ class OracleCompiler(compiler.SQLCompiler):
)
def function_argspec(self, fn, **kw):
- if len(fn.clauses) > 0:
+ if len(fn.clauses) > 0 or fn.name.upper() not in NO_ARG_FNS:
return compiler.SQLCompiler.function_argspec(self, fn, **kw)
else:
return ""