Differences between revisions 17 and 18
Revision 17 as of 2006-11-01 23:04:21
Size: 1946
Editor: oxygen
Comment:
Revision 18 as of 2006-11-02 17:06:21
Size: 4077
Editor: oxygen
Comment: Added preliminary task list
Deletions are marked like this. Additions are marked like this.
Line 9: Line 9:
[http://www.bivio.biz bivio Software, Inc.], 28th and Iris. Above Hair Elite in Suite S. [http://maps.google.com/maps?f=q&hl=en&q=2701+Iris+Ave.,+Boulder+CO&ie=UTF8&z=15&om=1&iwloc=A Google Maps link] [http://www.bivio.biz/ bivio Software, Inc.], 28th and Iris. Above Hair Elite in Suite S. [http://maps.google.com/maps?f=q&hl=en&q=2701+Iris+Ave.,+Boulder+CO&ie=UTF8&z=15&om=1&iwloc=A Google Maps link]
Line 24: Line 24:
== Preliminary Tasks ==
(Many of these are refinements and performance improvements that we won't get to, since we're focused only on correct behavior right now. But several of us reviewed the code and didn't want to lose any feedback. After the sprint, we will enter the outstanding issues in [http://code.djangoproject.com/newticket the Django project Trac].)

 * CREATE [SEQUENCE|CONSTRAINTS] gets logged twice
 * backend creates LONG columns, should use LOBs instead
 * backend may create two LONG columns, but Oracle allows one per table (don't use LONG columns..)
 * In "syncdb", foreign keys should be created as a second pass after table creation, using ALTER statements. Otherwise the DDL will reference tables not yet created, and Oracle throws errors.
 * Primary key "id" column (AutoField) is NUMBER(38) in creation.py. Does it need to be that large?
 * "syncdb" should always create indexes for foreign key columns, or Oracle will optimize poorly
 * "syncdb" doesn't check for table existence before running table creation SQL?
 * FormatStylePlaceholderCursor object: is it needed? We thought cx_Oracle already did named params...
 * fulltext search isn't supported
 * Use INSTR instead of costly LIKE for the endswith construct (LIKE %s) ?
 * get_indexes() and get_relations() unimplemented. Use USER_CONSTRAINTS and USER_INDEXES from Oracle.
 * SlugField, PhoneNumberField, etc., use VARCHAR and CHAR, but all should use VARCHAR2 consistently.
 * TimeField should use "INTERVAL DAY TO SECOND" datatype
 * NullBooleanField should be NUMBER(1) like BooleanField, not NUMBER(38)
 * Don't use Oracle's non-native Integer and SmallInteger types, which result in a NUMBER(38).
 * XmlField unimplemented, although Oracle now has native support for this.
 * In db/models/base.py, should use COUNT(*) instead of Oracle LIMIT 1 conditional test
 * Create a function-based index on lower() columns, or else check if DB is Oracle 10g
 * move query.py oracle tests out to the db module
 * Which versions of Oracle do we need to support? (9i and 10g, hopefully, although old versions of cx_Oracle still support 8i)
Line 27: Line 51:
 0. Matt Boersma, Aries  0. Matt Boersma, Ares
Line 32: Line 56:
 0. Jacob Kaplan-Moss, one of the original Django developers!  0. Jacob Kaplan-Moss, lead Django developer

For more information about sprints in general, read the SprintIntroduction page. SteveHolden has a useful [http://www.onlamp.com/pub/a/python/2006/10/19/running-a-sprint.html article] in the [http://www.onlamp.com/python/ OnLamp Python DevCenter ] on how to run a sprint.

Date/time

  • November 4, 2006 (Saturday), 9 AM - 6 PM

Location

[http://www.bivio.biz/ bivio Software, Inc.], 28th and Iris. Above Hair Elite in Suite S. [http://maps.google.com/maps?f=q&hl=en&q=2701+Iris+Ave.,+Boulder+CO&ie=UTF8&z=15&om=1&iwloc=A Google Maps link]

Thanks to Alex Viggio, Eric Dobbs, and Rob Nagler of bivio for generously providing us this sprint space.

Projects

Complete support for Oracle in Django in time for 1.0. Suggested by Matt Boersma.

Specifically, we would like to build on the good work already done by the Django community to produce a single patch that can be applied to current subversion sources, enabling Django's ORM to pass basic tests against an Oracle database. The current patches available have Oracle-specific conditional tests in many locations; we will try to confine such code to the django.db.backends.oracle package.

References

The bug report stipulating Oracle support by Django version 1.0 is here: http://code.djangoproject.com/ticket/1990

Preliminary Tasks

(Many of these are refinements and performance improvements that we won't get to, since we're focused only on correct behavior right now. But several of us reviewed the code and didn't want to lose any feedback. After the sprint, we will enter the outstanding issues in [http://code.djangoproject.com/newticket the Django project Trac].)

  • CREATE [SEQUENCE|CONSTRAINTS] gets logged twice
  • backend creates LONG columns, should use LOBs instead
  • backend may create two LONG columns, but Oracle allows one per table (don't use LONG columns..)
  • In "syncdb", foreign keys should be created as a second pass after table creation, using ALTER statements. Otherwise the DDL will reference tables not yet created, and Oracle throws errors.
  • Primary key "id" column (AutoField) is NUMBER(38) in creation.py. Does it need to be that large?

  • "syncdb" should always create indexes for foreign key columns, or Oracle will optimize poorly
  • "syncdb" doesn't check for table existence before running table creation SQL?
  • FormatStylePlaceholderCursor object: is it needed? We thought cx_Oracle already did named params...

  • fulltext search isn't supported
  • Use INSTR instead of costly LIKE for the endswith construct (LIKE %s) ?
  • get_indexes() and get_relations() unimplemented. Use USER_CONSTRAINTS and USER_INDEXES from Oracle.
  • SlugField, PhoneNumberField, etc., use VARCHAR and CHAR, but all should use VARCHAR2 consistently.

  • TimeField should use "INTERVAL DAY TO SECOND" datatype

  • NullBooleanField should be NUMBER(1) like BooleanField, not NUMBER(38)

  • Don't use Oracle's non-native Integer and SmallInteger types, which result in a NUMBER(38).

  • XmlField unimplemented, although Oracle now has native support for this.

  • In db/models/base.py, should use COUNT(*) instead of Oracle LIMIT 1 conditional test
  • Create a function-based index on lower() columns, or else check if DB is Oracle 10g
  • move query.py oracle tests out to the db module
  • Which versions of Oracle do we need to support? (9i and 10g, hopefully, although old versions of cx_Oracle still support 8i)

Participants

  1. Jim Baker
  2. Matt Boersma, Ares
  3. Eric Dobbs
  4. Ian Kelly
  5. Matt Drew, Capricorn
  6. Michelle Cyr, Cancer
  7. Jacob Kaplan-Moss, lead Django developer
  8. Malcolm Tredinnick (working remotely from Sydney)

Post Sprint Party

Some of us are planning to go to the [http://www.bouldercuba.org/ Cuban Connection fundraiser], 6 PM - 1 AM, St. Julien Hotel (our favorite meeting place for FrontRangePythoneers). In addition to raising money for a good cause, this will be a chance to stretch our weary coding muscles while dancing salsa to Quemando and Havana NRG.

BoulderSprint (last edited 2008-11-15 13:59:57 by localhost)

Unable to edit the page? See the FrontPage for instructions.