Since DatabaseMetaData seems to have been a subject of interest lately I
have composed a list of concrete things that need to be done there.

The spec of DatabaseMetaData is here:

All the functions listed in the spec and not listed below I have recently
checked and updated for correctness and compliance.  Thus, this list is
complete.  Functions marked with '?' I have not checked yet.

If someone wants to tackle some of the getThings() functions, a
description of the system catalogs is in the Developer's Guide.  Also note
that some functions currently incorrectly handle the case of null patterns
vs. "" patterns vs. "%" patterns.

At least two parameters obtained by a DatabaseMetaData method are
user-tunable on the server side.  The only way to get at those numbers
currently is to use SHOW and parse the NOTICE: it sends back (which is
impossible in the days of internationalized messages), so a nice
side-project would be to implement a get_config_variable(text) returns
text (better names possible) function to allow easier access.

Now the list:

allProceduresAreCallable()              not all procedures listed are
                                        callable (triggers, in/out)
allTablesAreSelectable()                should this check access
                                        privileges or what?
getSQLKeywords()                        outdated, could be automated like
getNumericFunctions()                   decide what exactly is a "numeric function"?
getStringFunctions()                    ditto
getSystemFunctions()                    ditto
getTimeDateFunctions()                  ditto
getExtraNameCharacters()                server allows \200 to \377, how
                                        does this fit in with Unicode?
getMaxColumnNameLength()                32 is hard-coded here, maybe query server
getMaxColumnsInIndex()                  this should be detected from server
getMaxColumnsInTable()                  this limit is probably shaky
getMaxConnections()                     could query the server for this
                                        (SHOW, see above)
getMaxCursorNameLength()                32 hard-coded
getMaxSchemaNameLength()                will be 32 when done
getMaxProcedureNameLength()             32 hard-coded
getMaxCatalogNameLength()               should be NAMEDATALEN
doesMaxRowSizeIncludeBlobs()            since we don't have blobs, should
                                        this throw an exception?
getMaxStatements()                      questionable, see comment there
getMaxTableNameLength()                 32 hard-coded
getMaxUserNameLength()                  32 hard-coded
getDefaultTransactionIsolation()        This is configurable in 7.2.
                                        (SHOW, see above)
getProcedures()                         missing catalog (database) and
                                        remarks columns
getProcedureColumns()                   only dummy implementation
getTables()                             fails to handle pre-7.1 servers
                                        (relkind 'v')
getSchemas()                            This should throw an exception.
getTableTypes()                         ?
getColumns()                            ?
getColumnPrivileges()                   not implemented
getTablePrivileges()                    not implemented
getBestRowIdentifier()                  only dummy implementation
getVersionColumns()                     not implemented
getPrimaryKeys()                        ?
getImportedKeys()                       ?
getExportedKeys()                       not implemented
getCrossReference()                     not implemented
getTypeInfo()                           ?
getIndexInfo()                          ?
getUDTs()                               ?

Peter Eisentraut   [EMAIL PROTECTED]

---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

Reply via email to