[CalendarServer-changes] [6646] CalendarServer/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Wed Nov 17 11:25:42 PST 2010
Revision: 6646
http://trac.macosforge.org/projects/calendarserver/changeset/6646
Author: cdaboo at apple.com
Date: 2010-11-17 11:25:39 -0800 (Wed, 17 Nov 2010)
Log Message:
-----------
Some minor improvements to PUT SQL usage.
Modified Paths:
--------------
CalendarServer/trunk/twistedcaldav/method/put_common.py
CalendarServer/trunk/txdav/base/propertystore/sql.py
CalendarServer/trunk/txdav/common/datastore/sql.py
Modified: CalendarServer/trunk/twistedcaldav/method/put_common.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/put_common.py 2010-11-17 16:21:03 UTC (rev 6645)
+++ CalendarServer/trunk/twistedcaldav/method/put_common.py 2010-11-17 19:25:39 UTC (rev 6646)
@@ -888,16 +888,6 @@
self.request.addResponseFilter(_removeEtag, atEnd=True)
- # Remember the resource's content-type.
- if self.destinationcal:
- content_type = self.request.headers.getHeader("content-type")
- if self.internal_request or content_type is None:
- content_type = MimeType("text", "calendar",
- params={"charset":"utf-8"})
- self.destination.writeDeadProperty(
- davxml.GETContentType.fromString(generateContentType(content_type))
- )
-
# Do quota check on destination
yield self.doDestinationQuotaCheck()
Modified: CalendarServer/trunk/txdav/base/propertystore/sql.py
===================================================================
--- CalendarServer/trunk/txdav/base/propertystore/sql.py 2010-11-17 16:21:03 UTC (rev 6645)
+++ CalendarServer/trunk/txdav/base/propertystore/sql.py 2010-11-17 19:25:39 UTC (rev 6646)
@@ -39,21 +39,23 @@
@classmethod
@inlineCallbacks
- def load(cls, defaultuser, txn, resourceID):
+ def load(cls, defaultuser, txn, resourceID, created=False):
self = cls.__new__(cls)
super(PropertyStore, self).__init__(defaultuser)
self._txn = txn
self._resourceID = resourceID
self._cached = {}
- rows = yield self._txn.execSQL(
- """
- select NAME, VIEWER_UID, VALUE from RESOURCE_PROPERTY
- where RESOURCE_ID = %s
- """,
- [self._resourceID]
- )
- for name, uid, value in rows:
- self._cached[(name, uid)] = value
+ if not created:
+ # Cache existing properties
+ rows = yield self._txn.execSQL(
+ """
+ select NAME, VIEWER_UID, VALUE from RESOURCE_PROPERTY
+ where RESOURCE_ID = %s
+ """,
+ [self._resourceID]
+ )
+ for name, uid, value in rows:
+ self._cached[(name, uid)] = value
returnValue(self)
@classmethod
Modified: CalendarServer/trunk/txdav/common/datastore/sql.py
===================================================================
--- CalendarServer/trunk/txdav/common/datastore/sql.py 2010-11-17 16:21:03 UTC (rev 6645)
+++ CalendarServer/trunk/txdav/common/datastore/sql.py 2010-11-17 19:25:39 UTC (rev 6646)
@@ -794,7 +794,7 @@
child._created = created
child._modified = modified
child._syncTokenRevision = revisions[resource_id]
- child._loadPropertyStore(propertyStores.get(resource_id, None))
+ yield child._loadPropertyStore(propertyStores.get(resource_id, None))
results.append(child)
returnValue(results)
@@ -1275,27 +1275,24 @@
@inlineCallbacks
def _changeRevision(self, action, name):
- nextrevision = yield self._txn.execSQL("""
- select nextval('%(sequence)s')
- """ % self._revisionsTable
- )
-
if action == "delete":
- yield self._txn.execSQL("""
+ self._syncTokenRevision = (yield self._txn.execSQL("""
update %(name)s
- set (%(column_REVISION)s, %(column_DELETED)s) = (%%s, TRUE)
+ set (%(column_REVISION)s, %(column_DELETED)s) = (nextval('%(sequence)s'), TRUE)
where %(column_RESOURCE_ID)s = %%s and %(column_RESOURCE_NAME)s = %%s
+ returning %(column_REVISION)s
""" % self._revisionsTable,
- [nextrevision, self._resourceID, name]
- )
+ [self._resourceID, name]
+ ))[0][0]
elif action == "update":
- yield self._txn.execSQL("""
+ self._syncTokenRevision = (yield self._txn.execSQL("""
update %(name)s
- set (%(column_REVISION)s) = (%%s)
+ set (%(column_REVISION)s) = (nextval('%(sequence)s'))
where %(column_RESOURCE_ID)s = %%s and %(column_RESOURCE_NAME)s = %%s
+ returning %(column_REVISION)s
""" % self._revisionsTable,
- [nextrevision, self._resourceID, name]
- )
+ [self._resourceID, name]
+ ))[0][0]
elif action == "insert":
# Note that an "insert" may happen for a resource that previously existed and then
# was deleted. In that case an entry in the REVISIONS table still exists so we have to
@@ -1308,25 +1305,24 @@
[self._resourceID, name, ]
)) )
if found:
- yield self._txn.execSQL("""
+ self._syncTokenRevision = (yield self._txn.execSQL("""
update %(name)s
- set (%(column_REVISION)s, %(column_DELETED)s) = (%%s, FALSE)
+ set (%(column_REVISION)s, %(column_DELETED)s) = (nextval('%(sequence)s'), FALSE)
where %(column_RESOURCE_ID)s = %%s and %(column_RESOURCE_NAME)s = %%s
+ returning %(column_REVISION)s
""" % self._revisionsTable,
- [nextrevision, self._resourceID, name]
- )
+ [self._resourceID, name]
+ ))[0][0]
else:
- yield self._txn.execSQL("""
+ self._syncTokenRevision = (yield self._txn.execSQL("""
insert into %(name)s
(%(column_HOME_RESOURCE_ID)s, %(column_RESOURCE_ID)s, %(column_RESOURCE_NAME)s, %(column_REVISION)s, %(column_DELETED)s)
- values (%%s, %%s, %%s, %%s, FALSE)
+ values (%%s, %%s, %%s, nextval('%(sequence)s'), FALSE)
+ returning %(column_REVISION)s
""" % self._revisionsTable,
- [self._home._resourceID, self._resourceID, name, nextrevision]
- )
-
- self._syncTokenRevision = nextrevision
+ [self._home._resourceID, self._resourceID, name]
+ ))[0][0]
-
@inlineCallbacks
def _loadPropertyStore(self, props=None):
if props is None:
@@ -1450,7 +1446,7 @@
for row in dataRows:
child = cls(parent, "", None)
child._initFromRow(tuple(row))
- child._loadPropertyStore(propertyStores.get(child._resourceID, None))
+ yield child._loadPropertyStore(props=propertyStores.get(child._resourceID, None))
results.append(child)
returnValue(results)
@@ -1473,7 +1469,7 @@
objectResource = cls(parent, name, None, metadata)
yield objectResource.setComponent(component, inserting=True)
- yield objectResource._loadPropertyStore()
+ yield objectResource._loadPropertyStore(created=True)
# Note: setComponent triggers a notification, so we don't need to
# call notify( ) here like we do for object removal.
@@ -1542,12 +1538,13 @@
self._modified,) = tuple(row)
@inlineCallbacks
- def _loadPropertyStore(self, props=None):
+ def _loadPropertyStore(self, props=None, created=False):
if props is None:
props = yield PropertyStore.load(
self._parentCollection.ownerHome().uid(),
self._txn,
- self._resourceID
+ self._resourceID,
+ created=created
)
self.initPropertyStore(props)
self._propertyStore = props
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20101117/0a55cb8d/attachment-0001.html>
More information about the calendarserver-changes
mailing list