[CalendarServer-changes] [9715] CalendarServer/trunk

source_changes at macosforge.org source_changes at macosforge.org
Thu Aug 16 14:49:52 PDT 2012


Revision: 9715
          http://trac.macosforge.org/projects/calendarserver/changeset/9715
Author:   glyph at apple.com
Date:     2012-08-16 14:49:52 -0700 (Thu, 16 Aug 2012)
Log Message:
-----------
support parsing a default value in the schema with parentheses.

Modified Paths:
--------------
    CalendarServer/trunk/twext/enterprise/dal/parseschema.py
    CalendarServer/trunk/twext/enterprise/dal/test/test_parseschema.py

Property Changed:
----------------
    CalendarServer/trunk/

Modified: CalendarServer/trunk/twext/enterprise/dal/parseschema.py
===================================================================
--- CalendarServer/trunk/twext/enterprise/dal/parseschema.py	2012-08-16 21:49:51 UTC (rev 9714)
+++ CalendarServer/trunk/twext/enterprise/dal/parseschema.py	2012-08-16 21:49:52 UTC (rev 9715)
@@ -389,6 +389,10 @@
                     self.table.checkConstraint(self.readExpression(self.next()))
                 elif val.match(Keyword, 'DEFAULT'):
                     theDefault = self.next()
+                    if isinstance(theDefault, Parenthesis):
+                        iDefault = iterSignificant(theDefault)
+                        expect(iDefault, ttype=Punctuation, value="(")
+                        theDefault = iDefault.next()
                     if isinstance(theDefault, Function):
                         thingo = theDefault.tokens[0].get_name()
                         parens = expectSingle(

Modified: CalendarServer/trunk/twext/enterprise/dal/test/test_parseschema.py
===================================================================
--- CalendarServer/trunk/twext/enterprise/dal/test/test_parseschema.py	2012-08-16 21:49:51 UTC (rev 9714)
+++ CalendarServer/trunk/twext/enterprise/dal/test/test_parseschema.py	2012-08-16 21:49:52 UTC (rev 9715)
@@ -129,6 +129,25 @@
                           False)
 
 
+    def test_sequenceDefaultWithParens(self):
+        """
+        SQLite requires 'default' expression to be in parentheses, and that
+        should be equivalent on other databases; we should be able to parse
+        that too.
+        """
+        s = self.schemaFromString(
+            """
+            create sequence alpha;
+            create table foo (
+                bar integer default (nextval('alpha')) not null,
+                qux integer not null
+            );
+            """
+        )
+        self.assertEquals(s.tableNamed("foo").columnNamed("bar").needsValue(),
+                          False)
+
+
     def test_defaultConstantColumns(self):
         """
         Parsing a 'default' column with an appropriate type in it will return
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20120816/29279870/attachment-0001.html>


More information about the calendarserver-changes mailing list