summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/dialects/oracle/base.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/dialects/oracle/base.py')
-rw-r--r--lib/sqlalchemy/dialects/oracle/base.py22
1 files changed, 16 insertions, 6 deletions
diff --git a/lib/sqlalchemy/dialects/oracle/base.py b/lib/sqlalchemy/dialects/oracle/base.py
index 74441e9a8..c0d9732b4 100644
--- a/lib/sqlalchemy/dialects/oracle/base.py
+++ b/lib/sqlalchemy/dialects/oracle/base.py
@@ -664,14 +664,24 @@ class OracleCompiler(compiler.SQLCompiler):
tmp = ' FOR UPDATE'
- if isinstance(select.for_update_of, list):
- tmp += ' OF ' + ', '.join(['.'.join(of) for of in select.for_update_of])
- elif isinstance(select.for_update_of, tuple):
- tmp += ' OF ' + '.'.join(select.for_update_of)
+ # backwards compatibility
+ if isinstance(select.for_update, bool):
+ if select.for_update:
+ return tmp
+ elif isinstance(select.for_update, str):
+ if select.for_update == 'nowait':
+ return tmp + ' NOWAIT'
+ else:
+ return tmp
+
+ if isinstance(select.for_update.of, list):
+ tmp += ' OF ' + ', '.join(['.'.join(of) for of in select.for_update.of])
+ elif isinstance(select.for_update.of, tuple):
+ tmp += ' OF ' + '.'.join(select.for_update.of)
- if select.for_update == 'nowait':
+ if select.for_update.mode == 'update_nowait':
return tmp + ' NOWAIT'
- elif select.for_update:
+ elif select.for_update.mode == 'update':
return tmp
else:
return super(OracleCompiler, self).for_update_clause(select)