commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gnue/common/src/dbdrivers/sapdb DBdriver.py


From: Jason Cater
Subject: gnue/common/src/dbdrivers/sapdb DBdriver.py
Date: Tue, 02 Apr 2002 20:10:38 -0500

CVSROOT:        /home/cvs
Module name:    gnue
Changes by:     Jason Cater <address@hidden>    02/04/02 20:10:38

Modified files:
        common/src/dbdrivers/sapdb: DBdriver.py 

Log message:
        added introspection support for SAP-DB [untested]

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/common/src/dbdrivers/sapdb/DBdriver.py.diff?cvsroot=OldCVS&tr1=1.6&tr2=1.7&r1=text&r2=text

Patches:
Index: gnue/common/src/dbdrivers/sapdb/DBdriver.py
diff -c gnue/common/src/dbdrivers/sapdb/DBdriver.py:1.6 
gnue/common/src/dbdrivers/sapdb/DBdriver.py:1.7
*** gnue/common/src/dbdrivers/sapdb/DBdriver.py:1.6     Thu Jan 10 15:59:18 2002
--- gnue/common/src/dbdrivers/sapdb/DBdriver.py Tue Apr  2 20:10:38 2002
***************
*** 84,111 ****
  
      self._postConnect()
  
  
  
    #
    # Schema (metadata) functions
    #
  
-   # TODO: See postgresql for an example of what these functions do.
- 
    # Return a list of the types of Schema objects this driver provides
    def getSchemaTypes(self):
!     return [('view','View',1), ('table','Table',1)]
  
    # Return a list of Schema objects
    def getSchemaList(self, type=None):
!     return []
  
    # Find a schema object with specified name
    def getSchemaByName(self, name, type=None):
-     return None
  
!   def _postConnect(self):
!     self.triggerExtensions = TriggerExtensions(self._dataConnection)
  
  
  class SAP_DataObject_Object(SAP_DataObject, \
--- 84,231 ----
  
      self._postConnect()
  
+   def _postConnect(self):
+     self.triggerExtensions = TriggerExtensions(self._dataConnection)
  
  
    #
    # Schema (metadata) functions
    #
  
    # Return a list of the types of Schema objects this driver provides
    def getSchemaTypes(self):
!     return [ ('table',    'Table',1),
!              ('view',     'View', 1),
!              ('synonym',  'Synonym',1),
!              ('result',   'Result Table',1) ]
! 
  
    # Return a list of Schema objects
    def getSchemaList(self, type=None):
! 
!     where_user = ""
!     if type == None:
!       where_type = ''
!     else:
!       where_type = "where TYPE='%s'" % string.upper(type)
! 
! 
!     statement = \
!       "select owner||'.'||tablename||'.'||type, " + \
!         "owner||'.'||tablename table_name, " + \
!         "type table_type " + \
!         "from domain.tables %s" \
!               % (where_type) + \
!           "order by tablename "
! 
!     GDebug.printMesg(5,statement)
! 
!     cursor = self._dataConnection.cursor()
!     cursor.execute(statement)
! 
!     list = []
!     for rs in cursor.fetchall():
!       list.append(GDataObjects.Schema(attrs={'id':rs[0], 'name':rs[1],
!                          'type':string.lower(rs[2])},
!                          getChildSchema=self.__getFieldSchema))
! 
!     cursor.close()
!     return list
! 
  
    # Find a schema object with specified name
    def getSchemaByName(self, name, type=None):
  
!     where_user = ""
!     parts = string.split(string.upper(name),'.')
!     name = parts[-1]
!     if len(parts) > 1:
!       schema = " and owner='%s'" % parts[-2]
!     else:
!       schema = ""
! 
!     statement = \
!       "select owner||'.'||tablename||'.'||type, " + \
!         "owner||'.'||tablename table_name, " + \
!         "type table_type " + \
!         "from domain.tables where owner='%s'%s" \
!               % (name, schema) + \
!           "order by tablename "
! 
!     GDebug.printMesg(5,statement)
! 
!     cursor = self._dataConnection.cursor()
!     cursor.execute(statement)
! 
!     list = []
!     for rs in cursor.fetchall():
!       list.append(GDataObjects.Schema(attrs={'id':string.lower(rs[0]), 
'name':rs[1],
!                          'type':rs[2]},
!                          getChildSchema=self.__getFieldSchema))
! 
!     cursor.close()
! 
!     try:
!       return list[0]
!     except:
!       return None
! 
! 
! 
!   # Get fields for a table
!   def __getFieldSchema(self, parent):
! 
!     # TODO: This does not support user-defined datatypes...
!     # TODO: it will always report such as TEXT-like fields.
! 
!     schema, name, type = string.split(parent.id,'.')
! 
!     cursor = self._dataConnection.cursor()
! 
! #    if type == 'synonym':
! #      statement = "select base_tabschema, base_tabname " + \
! #                  "from syscat.tables " + \
! #                  "where tabschema = '%s' and tabname='%s'" % (schema, name)
! #
! #      GDebug.printMesg(5,statement)
! #
! #      cursor.execute(statement)
! #      rs = cursor.fetchone()
! #      schema, name = rs
! 
!     statement = \
!        "select owner||'.'||tablename||'.'||columnname, " + \
!        "columnname, datatype, 'Y', len, dec " + \
!        "from domain.columns" + \
!        "where owner = '%s' and tablename = '%s' " % (schema, name) + \
!        "order by pos"
! 
!     GDebug.printMesg(5,statement)
! 
!     cursor.execute(statement)
! 
!     list = []
!     for rs in cursor.fetchall():
! 
!       attrs={'id': rs[0], 'name': rs[1],
!              'type':'field', 'nativetype': rs[2],
!              'required': 'N'}
! 
!       if rs[2] in ('BOOLEAN','FIXED','FLOAT','INTEGER','LONG','SMALLINT'):
!         attrs['precision'] = rs[5]
!         attrs['datatype'] = 'number'
!       elif rs[2] in ('DATE','TIME','TIMESTAMP'):
!         attrs['datatype'] = 'date'
!       else:
!         attrs['datatype'] = 'text'
! 
!       if rs[5] != 0:
!         attrs['length'] = rs[4]
! 
!       list.append(GDataObjects.Schema(attrs=attrs))
! 
!     cursor.close()
!     return tuple(list)
  
  
  class SAP_DataObject_Object(SAP_DataObject, \



reply via email to

[Prev in Thread] Current Thread [Next in Thread]