diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-02-11 00:49:28 -0500 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-02-11 00:49:28 -0500 |
| commit | 09efc11fbc95f8a47200dd102d304b90609e9408 (patch) | |
| tree | 58cbd0dafa6a8d0ae791b9dfc7652d1393beb84a /lib | |
| parent | ed4534ea8a003c89441064b028b0b22c5b5ea97a (diff) | |
| download | sqlalchemy-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.py | 4 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/oracle/base.py | 24 |
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 "" |
