Contact: fumanchu@aminus.org

Log in as guest/geniusql to create tickets

Changeset 7

Show
Ignore:
Timestamp:
02/12/07 23:39:14
Author:
fumanchu
Message:

Various bugfixes related to Table.created.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/geniusql/__init__.py

    r6 r7  
    225225     
    226226    def __copy__(self): 
    227         # Don't set db when copying! 
    228         newtable = self.__class__(self.name, self.qname
     227        # Don't set 'created' when copying! 
     228        newtable = self.__class__(self.name, self.qname, self.db
    229229        for key, c in self.iteritems(): 
    230230            dict.__setitem__(newtable, key, c.copy()) 
     
    701701               key=False, autoincrement=False): 
    702702        """Return a Column object from the given arguments.""" 
    703         col = Column(pytype, dbtype, default, hints) 
    704         col.key = key 
     703        col = Column(pytype, dbtype, default, hints, key) 
    705704        col.autoincrement = autoincrement 
    706705         
  • trunk/geniusql/providers/ado.py

    r6 r7  
    406406        # (u'TABLE_PROPID', 19), (u'DATE_CREATED', 7), (u'DATE_MODIFIED', 7)] 
    407407        data, _ = self.fetch(adSchemaTables, conn=conn, schema=True) 
    408         return [self.tableclass(str(row[2]), self.quote(str(row[2])), self) 
     408        return [self.tableclass(str(row[2]), self.quote(str(row[2])), 
     409                                self, created=True) 
    409410                for row in data 
    410411                # Ignore linked and system tables 
     
    420421            name = str(row[2]) 
    421422            if name == tablename: 
    422                 return self.tableclass(name, self.quote(name), self) 
     423                return self.tableclass(name, self.quote(name), 
     424                                       self, created=True) 
    423425        raise errors.MappingError(tablename) 
    424426     
  • trunk/geniusql/providers/firebird.py

    r6 r7  
    294294                             "WHERE RDB$SYSTEM_FLAG=0 AND RDB$VIEW_BLR IS NULL;", 
    295295                             conn=conn) 
    296         return [self.tableclass(name.strip(), self.quote(name.strip()), self) 
     296        return [self.tableclass(name.strip(), self.quote(name.strip()), 
     297                                self, created=True) 
    297298                for name, in data] 
    298299     
     
    305306            name = name.strip() 
    306307            if name == tablename: 
    307                 return self.tableclass(name, self.quote(name), self) 
     308                return self.tableclass(name, self.quote(name), 
     309                                       self, created=True) 
    308310        raise errors.MappingError(tablename) 
    309311     
  • trunk/geniusql/providers/mysql.py

    r6 r7  
    305305    def _get_tables(self, conn=None): 
    306306        data, _ = self.fetch("SHOW TABLES FROM %s" % self.qname, conn=conn) 
    307         return [self.tableclass(row[0], self.quote(row[0]), self) 
     307        return [self.tableclass(row[0], self.quote(row[0]), 
     308                                self, created=True) 
    308309                for row in data] 
    309310     
     
    314315            name = row[0] 
    315316            if name == tablename: 
    316                 return self.tableclass(name, self.quote(name), self) 
     317                return self.tableclass(name, self.quote(name), 
     318                                       self, created=True) 
    317319        raise errors.MappingError(tablename) 
    318320     
  • trunk/geniusql/providers/psycopg.py

    r6 r7  
    168168                             " not in ('information_schema', 'pg_catalog')", 
    169169                             conn=conn) 
    170         return [self.tableclass(row[0], self.quote(row[0]), self) 
     170        return [self.tableclass(row[0], self.quote(row[0]), 
     171                                self, created=True) 
    171172                for row in data] 
    172173     
     
    177178        for name, in data: 
    178179            if name == tablename: 
    179                 return self.tableclass(name, self.quote(name), self) 
     180                return self.tableclass(name, self.quote(name), 
     181                                       self, created=True) 
    180182        raise errors.MappingError(tablename) 
    181183     
  • trunk/geniusql/providers/pypgsql.py

    r6 r7  
    155155                             " not in ('information_schema', 'pg_catalog')", 
    156156                             conn=conn) 
    157         return [self.tableclass(row[0], self.quote(row[0]), self) 
     157        return [self.tableclass(row[0], self.quote(row[0]), 
     158                                self, created=True) 
    158159                for row in data] 
    159160     
     
    164165        for name, in data: 
    165166            if name == tablename: 
    166                 return self.tableclass(name, self.quote(name), self) 
     167                return self.tableclass(name, self.quote(name), 
     168                                       self, created=True) 
    167169        raise errors.MappingError(tablename) 
    168170     
  • trunk/geniusql/providers/sqlite.py

    r6 r7  
    306306    if not _add_column_support: 
    307307        def __setitem__(self, key, column): 
    308             db = self.db 
    309              
    310             if db is None: 
     308            if not self.created: 
    311309                dict.__setitem__(self, key, column) 
    312310                return 
     
    315313                del self[key] 
    316314             
     315            db = self.db 
    317316            if column.autoincrement: 
    318317                # This may or may not be a no-op, depending on the DB. 
     
    345344     
    346345    def __delitem__(self, key): 
    347         db = self.db 
    348          
    349346        if key in self.indices: 
    350347            del self.indices[key] 
    351348         
    352         if db is None
     349        if not self.created
    353350            dict.__delitem__(self, key) 
    354351            return 
    355352         
     353        db = self.db 
    356354        db.lock("Dropping property. Transactions not allowed.") 
    357355        try: 
     
    508506    def _get_tables(self, conn=None): 
    509507        data, _ = self.fetch("SELECT name FROM sqlite_master WHERE type = 'table';") 
    510         # Note that we set Table.db here, since these already exist in the DB. 
    511         return [self.tableclass(row[0], self.quote(row[0]), self) 
     508        # Note that we set Table.created here, since these already exist in the DB. 
     509        return [self.tableclass(row[0], self.quote(row[0]), 
     510                                self, created=True) 
    512511                for row in data] 
    513512     
     
    515514        data, _ = self.fetch("SELECT name FROM sqlite_master WHERE " 
    516515                             "name = '%s' AND type = 'table';" % tablename) 
    517         # Note that we set Table.db here, since these already exist in the DB. 
     516        # Note that we set Table.created here, since these already exist in the DB. 
    518517        for name, in data: 
    519518            if name == tablename: 
    520                 return self.tableclass(name, self.quote(name), self) 
     519                return self.tableclass(name, self.quote(name), 
     520                                       self, created=True) 
    521521        raise errors.MappingError(tablename) 
    522522     
     
    646646            del self[key] 
    647647         
    648         # Set table.db to self, which should "turn on" 
     648        # Set table.created to True, which should "turn on" 
    649649        # any future ALTER TABLE statements. 
    650         table.db = self 
     650        table.created = True 
    651651         
    652652        fields = []