From 50206ec2adcd1c38bc4dad98c7775c7ea8ecd10c Mon Sep 17 00:00:00 2001 From: Catherine Devlin Date: Thu, 20 Mar 2008 02:47:46 +0000 Subject: adding zzzeek's patch from ticket #994, which fixed virtually all remaining broken unit tests in the Oracle module --- lib/sqlalchemy/databases/oracle.py | 93 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) (limited to 'lib/sqlalchemy/databases/oracle.py') diff --git a/lib/sqlalchemy/databases/oracle.py b/lib/sqlalchemy/databases/oracle.py index fc35df2bb..df45f69bb 100644 --- a/lib/sqlalchemy/databases/oracle.py +++ b/lib/sqlalchemy/databases/oracle.py @@ -659,6 +659,16 @@ class OracleCompiler(compiler.DefaultCompiler): """Need to determine how to get ``LIMIT``/``OFFSET`` into a ``UNION`` for Oracle.""" pass + def create_insert_update_bind(self, col, value): + key = col.key + # TODO: make this check more specific to reserved words + if len(key) < 30: + key += '_' + bindparam = sql.bindparam(key, value, shortname=col.key, type_=col.type) + self.binds[col.key] = bindparam + return self.bindparam_string(self._truncate_bindparam(bindparam)) + + def visit_select(self, select, **kwargs): """Look for ``LIMIT`` and OFFSET in a select statement, and if so tries to wrap it in a subquery with ``row_number()`` criterion. @@ -735,3 +745,86 @@ dialect.schemagenerator = OracleSchemaGenerator dialect.schemadropper = OracleSchemaDropper dialect.preparer = OracleIdentifierPreparer dialect.defaultrunner = OracleDefaultRunner + + +RESERVED_WORDS = util.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 +CONNECT +SET +MODE +OF +UNIQUE +VARCHAR2 +VARCHAR +LOCK +OR +CHAR +DECIMAL +UNION +PUBLIC +AND +START'''.splitlines()) \ No newline at end of file -- cgit v1.2.1