summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql/compiler.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2007-09-01 21:21:29 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2007-09-01 21:21:29 +0000
commit5df1759e151274594ca4691419f6be7e91257635 (patch)
tree9b0d4feb0811f2320cb15a3c5305449a81845d79 /lib/sqlalchemy/sql/compiler.py
parent61f2ca2c9d708660c45d5e81bfd3337bb82bbe62 (diff)
downloadsqlalchemy-5df1759e151274594ca4691419f6be7e91257635.tar.gz
- got all examples working
- inline default execution occurs for *all* non-PK columns unconditionally - preexecute only for non-executemany PK cols on PG, Oracle, etc. - new default docs
Diffstat (limited to 'lib/sqlalchemy/sql/compiler.py')
-rw-r--r--lib/sqlalchemy/sql/compiler.py30
1 files changed, 12 insertions, 18 deletions
diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py
index 617b2468a..7f9d0e31b 100644
--- a/lib/sqlalchemy/sql/compiler.py
+++ b/lib/sqlalchemy/sql/compiler.py
@@ -614,7 +614,7 @@ class DefaultCompiler(engine.Compiled, visitors.ClauseVisitor):
return False
def visit_sequence(self, seq):
- raise NotImplementedError()
+ return None
def visit_insert(self, insert_stmt):
@@ -688,32 +688,26 @@ class DefaultCompiler(engine.Compiled, visitors.ClauseVisitor):
values.append((c, value))
elif isinstance(c, schema.Column):
if self.isinsert:
- if isinstance(c.default, schema.ColumnDefault):
- if self.inline and isinstance(c.default.arg, sql.ClauseElement):
+ if c.primary_key and self.uses_sequences_for_inserts() and not self.inline:
+ values.append((c, create_bind_param(c, None)))
+ self.prefetch.add(c)
+ elif isinstance(c.default, schema.ColumnDefault):
+ if isinstance(c.default.arg, sql.ClauseElement):
values.append((c, self.process(c.default.arg)))
self.postfetch.add(c)
else:
values.append((c, create_bind_param(c, None)))
self.prefetch.add(c)
elif isinstance(c.default, schema.PassiveDefault):
- if c.primary_key and self.uses_sequences_for_inserts() and not self.inline:
- values.append((c, create_bind_param(c, None)))
- self.prefetch.add(c)
- else:
+ self.postfetch.add(c)
+ elif isinstance(c.default, schema.Sequence):
+ proc = self.process(c.default)
+ if proc is not None:
+ values.append((c, proc))
self.postfetch.add(c)
- elif (c.primary_key or isinstance(c.default, schema.Sequence)) and self.uses_sequences_for_inserts():
- if self.inline:
- if c.default is not None:
- proc = self.process(c.default)
- if proc is not None:
- values.append((c, proc))
- self.postfetch.add(c)
- else:
- values.append((c, create_bind_param(c, None)))
- self.prefetch.add(c)
elif self.isupdate:
if isinstance(c.onupdate, schema.ColumnDefault):
- if self.inline and isinstance(c.onupdate.arg, sql.ClauseElement):
+ if isinstance(c.onupdate.arg, sql.ClauseElement):
values.append((c, self.process(c.onupdate.arg)))
self.postfetch.add(c)
else: