vshih avatar vshih committed 26b17be

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

Comments (4)

      1. vshih 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(
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.