[CalendarServer-changes] [6955] CalendarServer/branches/users/glyph/dalify/twext/enterprise/dal

source_changes at macosforge.org source_changes at macosforge.org
Wed Feb 16 06:30:20 PST 2011


Revision: 6955
          http://trac.macosforge.org/projects/calendarserver/changeset/6955
Author:   glyph at apple.com
Date:     2011-02-16 06:30:20 -0800 (Wed, 16 Feb 2011)
Log Message:
-----------
'for update' clause

Modified Paths:
--------------
    CalendarServer/branches/users/glyph/dalify/twext/enterprise/dal/syntax.py
    CalendarServer/branches/users/glyph/dalify/twext/enterprise/dal/test/test_sqlsyntax.py

Modified: CalendarServer/branches/users/glyph/dalify/twext/enterprise/dal/syntax.py
===================================================================
--- CalendarServer/branches/users/glyph/dalify/twext/enterprise/dal/syntax.py	2011-02-16 14:30:09 UTC (rev 6954)
+++ CalendarServer/branches/users/glyph/dalify/twext/enterprise/dal/syntax.py	2011-02-16 14:30:20 UTC (rev 6955)
@@ -443,7 +443,7 @@
     """
 
     def __init__(self, columns=None, Where=None, From=None, OrderBy=None,
-                 GroupBy=None, Limit=None):
+                 GroupBy=None, Limit=None, ForUpdate=False):
         self.From = From
         self.Where = Where
         if not isinstance(OrderBy, (list, tuple, type(None))):
@@ -461,6 +461,7 @@
 
             columns = _SomeColumns(columns)
         self.columns = columns
+        self.ForUpdate = ForUpdate
 
 
     def toSQL(self, placeholder="?", quote=lambda x: x):
@@ -493,6 +494,8 @@
             stmt.text += quote(" limit ")
             stmt.append(Constant(self.Limit).subSQL(placeholder, quote,
                                                     allTables))
+        if self.ForUpdate:
+            stmt.text += quote(" for update")
         return stmt
 
 

Modified: CalendarServer/branches/users/glyph/dalify/twext/enterprise/dal/test/test_sqlsyntax.py
===================================================================
--- CalendarServer/branches/users/glyph/dalify/twext/enterprise/dal/test/test_sqlsyntax.py	2011-02-16 14:30:09 UTC (rev 6954)
+++ CalendarServer/branches/users/glyph/dalify/twext/enterprise/dal/test/test_sqlsyntax.py	2011-02-16 14:30:20 UTC (rev 6955)
@@ -138,6 +138,17 @@
         )
 
 
+    def test_forUpdate(self):
+        """
+        L{Select}'s L{ForUpdate} parameter generates a 'for update' clause at
+        the end of the query.
+        """
+        self.assertEquals(
+            Select(From=self.schema.FOO, ForUpdate=True).toSQL(),
+            SQLFragment("select * from FOO for update")
+        )
+
+
     def test_groupBy(self):
         """
         L{Select}'s L{GroupBy} parameter generates a 'group by' clause for a
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20110216/9f36ffe0/attachment-0001.html>


More information about the calendarserver-changes mailing list