]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
unwrapped _get_colparams a bit, dropped out an isinstance() call
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 8 Aug 2009 17:24:02 +0000 (17:24 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 8 Aug 2009 17:24:02 +0000 (17:24 +0000)
lib/sqlalchemy/sql/compiler.py
lib/sqlalchemy/sql/expression.py
test/aaa_profiling/test_zoomark.py

index 6935e31e5d7f8d6d58ef1f03c7f0c7a536fec2ff..a47922cc517a959639aa8904c8b142ad7e9e6976 100644 (file)
@@ -764,7 +764,10 @@ class SQLCompiler(engine.Compiled):
         # no parameters in the statement, no parameters in the
         # compiled params - return binds for all columns
         if self.column_keys is None and stmt.parameters is None:
-            return [(c, self._create_crud_bind_param(c, None)) for c in stmt.table.columns]
+            return [
+                        (c, self._create_crud_bind_param(c, None)) 
+                        for c in stmt.table.columns
+                    ]
 
         # if we have statement parameters - set defaults in the
         # compiled params
@@ -789,6 +792,8 @@ class SQLCompiler(engine.Compiled):
                                 self.dialect.implicit_returning and \
                                 stmt.table.implicit_returning
         
+        postfetch_lastrowid = need_pks and self.dialect.postfetch_lastrowid
+        
         for c in stmt.table.columns:
             if c.key in parameters:
                 value = parameters[c.key]
@@ -798,14 +803,13 @@ class SQLCompiler(engine.Compiled):
                     self.postfetch.append(c)
                     value = self.process(value.self_group())
                 values.append((c, value))
-
-            elif isinstance(c, schema.Column):
+            else:
                 if self.isinsert:
                     if c.primary_key and \
                         need_pks and \
                         (
-                            c is not stmt.table._autoincrement_column or 
-                            not self.dialect.postfetch_lastrowid
+                            not postfetch_lastrowid or 
+                            c is not stmt.table._autoincrement_column
                         ):
                         
                         if implicit_returning:
@@ -835,26 +839,26 @@ class SQLCompiler(engine.Compiled):
 
                                 values.append((c, self._create_crud_bind_param(c, None)))
                                 self.prefetch.append(c)
-                                
-                    elif isinstance(c.default, schema.ColumnDefault):
-                        if isinstance(c.default.arg, sql.ClauseElement):
-                            values.append((c, self.process(c.default.arg.self_group())))
-                            
-                            if not c.primary_key:
-                                # dont add primary key column to postfetch
-                                self.postfetch.append(c)
-                        else:
-                            values.append((c, self._create_crud_bind_param(c, None)))
-                            self.prefetch.append(c)
-                    elif c.server_default is not None:
-                        if not c.primary_key:
-                            self.postfetch.append(c)
+
                     elif isinstance(c.default, schema.Sequence):
                         proc = self.process(c.default)
                         if proc is not None:
                             values.append((c, proc))
                             if not c.primary_key:
                                 self.postfetch.append(c)
+                    elif isinstance(c.default, schema.ColumnDefault) and \
+                            isinstance(c.default.arg, sql.ClauseElement):
+                        values.append((c, self.process(c.default.arg.self_group())))
+                        
+                        if not c.primary_key:
+                            # dont add primary key column to postfetch
+                            self.postfetch.append(c)
+                    elif c.default is not None:
+                        values.append((c, self._create_crud_bind_param(c, None)))
+                        self.prefetch.append(c)
+                    elif c.server_default is not None:
+                        if not c.primary_key:
+                            self.postfetch.append(c)
                 elif self.isupdate:
                     if isinstance(c.onupdate, schema.ColumnDefault):
                         if isinstance(c.onupdate.arg, sql.ClauseElement):
@@ -865,9 +869,6 @@ class SQLCompiler(engine.Compiled):
                             self.prefetch.append(c)
                     elif c.server_onupdate is not None:
                         self.postfetch.append(c)
-                    # deprecated? or remove?
-                    elif isinstance(c.onupdate, schema.FetchedValue):
-                        self.postfetch.append(c)
         return values
 
     def visit_delete(self, delete_stmt):
index 91e0e74ae45e7812d09aeddf56c5bd17c6ea43c4..960fc031032dde93cbbdce395c630a558ea599f6 100644 (file)
@@ -2964,6 +2964,8 @@ class ColumnClause(_Immutable, ColumnElement):
     """
     __visit_name__ = 'column'
 
+    onupdate = default = server_default = server_onupdate = None
+
     def __init__(self, text, selectable=None, type_=None, is_literal=False):
         self.key = self.name = text
         self.table = selectable
index e413031926bd78fa85a07cf15f54ba08dfdda528..e3621444f14d4283e08a9cc69d02cf89635ad318 100644 (file)
@@ -327,7 +327,7 @@ class ZooMarkTest(TestBase):
     def test_profile_1a_populate(self):
         self.test_baseline_1a_populate()
 
-    @profiling.function_call_count(305, {'2.4': 202})
+    @profiling.function_call_count(282, {'2.4': 202})
     def test_profile_2_insert(self):
         self.test_baseline_2_insert()