[CalendarServer-dev] [Calendar and Contacts Server] #469: incompatible with python-sqlparse 0.1.3 (Debian Testing)

Calendar and Contacts Server trac at macosforge.org
Mon Nov 14 08:13:28 PST 2011


#469: incompatible with python-sqlparse 0.1.3 (Debian Testing)
---------------------------------+------------------------------------------
 Reporter:  patrick.ohly@…       |       Owner:  wsanchez@…        
     Type:  Enhancement          |      Status:  new               
 Priority:  5: Not set           |   Milestone:                    
Component:  Calendar Server      |    Severity:  Other             
 Keywords:                       |       Radar:                    
---------------------------------+------------------------------------------
 When starting the server with the system's python-sqlparse 0.1.3 instead
 of the version 0.1.2 that it would use as fallback, the server fails with:

 ...
   File
 "/home/pohly/src/CalendarServer/CalendarServer/twext/enterprise/dal/parseschema.py",
 line 232, in nextColumn
     return self.parseColumn(maybeIdent.value)
   File
 "/home/pohly/src/CalendarServer/CalendarServer/twext/enterprise/dal/parseschema.py",
 line 307, in parseColumn
     theType = SQLType(typeName.value.encode("utf-8"), typeLength)
 AttributeError: 'NoneType' object has no attribute 'encode'

 Adding some print statements showed that it fails for varchar entries:

 txdav/common/datastore/sql_schema/current.sql
 create table CALENDAR_HOME (
   RESOURCE_ID      integer      primary key default
 nextval('RESOURCE_ID_SEQ'),
 =>  OWNER_UID        varchar(255) not null unique
 );

 In python-sqlparse, typeName.value was "varchar", same as the string
 representation of typeName itself. Based on that observation here's a
 crude patch which uses str(typeName) as default. Works for me, no idea
 whether it is the right fix...


 diff --git a/CalendarServer/twext/enterprise/dal/parseschema.py
 b/CalendarServer/twext/enterprise/dal/parseschema.py
 index 0978b5f..4e3fcb1 100644
 --- a/CalendarServer/twext/enterprise/dal/parseschema.py
 +++ b/CalendarServer/twext/enterprise/dal/parseschema.py
 @@ -304,7 +304,7 @@ class _ColumnParser(object):
                  # something else
                  typeLength = None
                  self.pushback(maybeTypeArgs)
 -        theType = SQLType(typeName.value.encode("utf-8"), typeLength)
 +        theType = SQLType((typeName.value or
 str(typeName)).encode("utf-8"), typeLength)
          theColumn = self.table.addColumn(
              name=name.encode("utf-8"), type=theType
          )

-- 
Ticket URL: <http://trac.calendarserver.org/ticket/469>
Calendar and Contacts Server </>
HTTP/WebDAV/CalDAV Server


More information about the calendarserver-dev mailing list