Update of /cvsroot/webware/Webware/MiddleKit/Design
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24671/Design
Modified Files:
MSSQLSQLGenerator.py
Log Message:
- Put a "go" after each klass' samples are inserted. Makes things work
better.
- Made a fix to support the new "foo by bar" enhancement.
Index: MSSQLSQLGenerator.py
===================================================================
RCS file: /cvsroot/webware/Webware/MiddleKit/Design/MSSQLSQLGenerator.py,v
retrieving revision 1.23
retrieving revision 1.24
diff -C2 -d -r1.23 -r1.24
*** MSSQLSQLGenerator.py 14 Sep 2004 03:07:17 -0000 1.23
--- MSSQLSQLGenerator.py 23 Feb 2005 01:17:03 -0000 1.24
***************
*** 32,35 ****
--- 32,38 ----
self._klasses.writeSQL(generator, os.path.join(dirname, 'Create.sql'))
+ def writePostKlassSamplesSQL(self, generator, file):
+ file.write('go\n')
+
class Klasses:
***************
*** 301,304 ****
--- 304,309 ----
class ObjRefAttr:
+ refVarCount = 1
+
def sqlType(self):
if self.setting('UseBigIntObjRefColumns', False):
***************
*** 324,327 ****
--- 329,347 ----
constraintName, targetKlass.sqlTableName(), targetKlass.sqlSerialColumnName())
+ def sqlForNonNoneSampleInput(self, input):
+ sql = ObjRefAttr.mixInSuperSqlForNonNoneSampleInput(self, input)
+ if sql.find('(select')!=-1:
+ # MS SQL 2000 does not allow a subselect where an INSERT value is expected.
+ # It will complain:
+ # "Subqueries are not allowed in this context. Only scalar expressions are allowed."
+ # So we pass back some "pre-statements" to set up the scalar in a temp variable.
+ classId, objId = sql.split(',', 1) # objId is the '(select...' part
+ refVarName = str('@ref_%03i_%s' % (ObjRefAttr.refVarCount, self.targetKlass().name()))
+ ObjRefAttr.refVarCount += 1
+ preSql = str('declare %s as int; set %s = %s;\n' % (refVarName, refVarName, objId))
+ sqlForValue = classId + ',' + refVarName
+ return (preSql, sqlForValue)
+ else:
+ return sql
|