예제 #1
0
 def SpecialColumns(self,
                    identifierType,
                    CatalogName,
                    SchemaName,
                    TableName,
                    scope,
                    nullable,
                    handler,
                    row,
                    rh,
                    canceled=None):
     q = CScopeUQueue.Lock().SaveShort(identifierType).SaveString(
         CatalogName).SaveString(SchemaName).SaveString(
             TableName).SaveShort(scope).SaveShort(nullable)
     cb = CAsyncDBHandler.Pair(COdbc.idSQLSpecialColumns, handler)
     index = self.GetCallIndex()
     q.SaveULong(index)
     ok = True
     with self._csOneSending:
         with self._csDB:
             self._mapRowset[index] = CAsyncDBHandler.Pair(rh, row)
             self._deqResult.append(cb)
         ok = self.SendRequest(COdbc.idSQLSpecialColumns, q, None, canceled)
         if not ok:
             with self._csDB:
                 self._deqResult.remove(cb)
                 self._mapRowset.pop(index)
     CScopeUQueue.Unlock(q)
     return ok
예제 #2
0
 def ForeignKeys(self,
                 PKCatalogName,
                 PKSchemaName,
                 PKTableName,
                 FKCatalogName,
                 FKSchemaName,
                 FKTableName,
                 handler,
                 row,
                 rh,
                 canceled=None):
     q = CScopeUQueue.Lock().SaveString(PKCatalogName).SaveString(
         PKSchemaName).SaveString(PKTableName).SaveString(
             FKCatalogName).SaveString(FKSchemaName).SaveString(FKTableName)
     cb = CAsyncDBHandler.Pair(COdbc.idSQLForeignKeys, handler)
     index = self.GetCallIndex()
     q.SaveULong(index)
     ok = True
     with self._csOneSending:
         with self._csDB:
             self._mapRowset[index] = CAsyncDBHandler.Pair(rh, row)
             self._deqResult.append(cb)
         ok = self.SendRequest(COdbc.idSQLForeignKeys, q, None, canceled)
         if not ok:
             with self._csDB:
                 self._deqResult.remove(cb)
                 self._mapRowset.pop(index)
     CScopeUQueue.Unlock(q)
     return ok
예제 #3
0
 def Statistics(self,
                CatalogName,
                SchemaName,
                TableName,
                unique,
                reserved,
                handler,
                row,
                rh,
                canceled=None):
     q = CScopeUQueue.Lock().SaveString(CatalogName).SaveString(
         SchemaName).SaveString(TableName).SaveUShort(unique).SaveUShort(
             reserved)
     cb = CAsyncDBHandler.Pair(COdbc.idSQLStatistics, handler)
     index = self.GetCallIndex()
     q.SaveULong(index)
     with self._csOneSending:
         with self._csDB:
             self._mapRowset[index] = CAsyncDBHandler.Pair(rh, row)
             self._deqResult.append(cb)
         ok = self.SendRequest(COdbc.idSQLStatistics, q, None, canceled)
         if not ok:
             with self._csDB:
                 self._deqResult.remove(cb)
                 self._mapRowset.pop(index)
     CScopeUQueue.Unlock(q)
     return ok
예제 #4
0
 def _DoMeta3(self, id, s0, s1, s2, handler, row, rh, canceled):
     q = CScopeUQueue.Lock().SaveString(s0).SaveString(s1).SaveString(s2)
     cb = CAsyncDBHandler.Pair(id, handler)
     index = self.GetCallIndex()
     q.SaveULong(index)
     ok = True
     with self._csOneSending:
         with self._csDB:
             self._mapRowset[index] = CAsyncDBHandler.Pair(rh, row)
             self._deqResult.append(cb)
         ok = self.SendRequest(id, q, None, canceled)
         if not ok:
             with self._csDB:
                 self._deqResult.remove(cb)
                 self._mapRowset.pop(index)
     CScopeUQueue.Unlock(q)
     return ok
예제 #5
0
 def _DoMeta4(self, id, s0, s1, s2, s3, handler, row, rh):
     q = CScopeUQueue.Lock().SaveString(s0).SaveString(s1).SaveString(s2).SaveString(s3)
     cb = CAsyncDBHandler.Pair(id, handler)
     index = 0
     ok = True
     with self._csDB:
         self._nCall += 1
         index = self._nCall
         self._mapRowset[index] = CAsyncDBHandler.Pair(rh, row)
         self._deqResult.append(cb)
     q.SaveULong(index)
     ok = self.SendRequest(id, q, None)
     if not ok:
         with self._csDB:
             self._deqResult.remove(cb)
             self._mapRowset.pop(index)
     CScopeUQueue.Unlock(q)
     return ok