Commits

Victor Shih committed 26b17be

More robust removal of CHECK and IDENTITY properties when declaring output table.

  • Participants
  • Parent commits 0f8ddcf

Comments (4)

      1. Victor Shih author

        I see what happened. I needed to create BigAutoField and BigIntegerField classes since Django still doesn't include them yet, and the strings returned by my db_type implementations differ from yours.

        Because of this scenario, though rare, I still recommend this change.

Files changed (1)

sqlserver_ado/compiler.py

         # map a copy of outer_fields for injected subselect
         f = []
         for x in outer_fields.split(','):
-            i = x.find(' AS ')
+            i = x.upper().find(' AS ')
             if i != -1:
                 x = x[i+4:]
             if x.find('.') != -1:
 
             # Determine datatype for use with the table variable that will return the inserted ID            
             pk_db_type = meta.pk.db_type(self.connection)
-            if ' IDENTITY ' in pk_db_type:
-                # separate off IDENTITY clause
-                pk_db_type, _ = pk_db_type.split(' IDENTITY ', 2)
-            if ' CHECK ' in pk_db_type:
-                # separate off CHECK clause
-                pk_db_type, _ = pk_db_type.split(' CHECK ', 2)
+            # Strip CHECK and IDENTITY properties
+            pk_db_type = re.sub(r'\b(?i)(check|identity)\b', '', pk_db_type)
             
             # NOCOUNT ON to prevent additional trigger/stored proc related resultsets
             sql = 'SET NOCOUNT ON;{declare_table_var};{sql};{select_return_id}'.format(