| // +----------------------------------------------------------------------+ // // $Id$ // /** * @package MDB2 * @category Database */ /** * These are constants for the tableInfo-function * they are bitwised or'ed. so if there are more constants to be defined * in the future, adjust MDB2_TABLEINFO_FULL accordingly */ define('MDB2_TABLEINFO_ORDER', 1); define('MDB2_TABLEINFO_ORDERTABLE', 2); define('MDB2_TABLEINFO_FULL', 3); /** * Base class for the schema reverse engineering module that is extended by each MDB2 driver * * @package MDB2 * @category Database * @author Lukas Smith */ class MDB2_Driver_Reverse_Common extends MDB2_Module_Common { // }}} // {{{ getTableFieldDefinition() /** * get the stucture of a field into an array * * @param string $table name of table that should be used in method * @param string $fields name of field that should be used in method * @return mixed data array on success, a MDB2 error on failure * @access public */ function getTableFieldDefinition($table, $field) { $db =& $this->getDBInstance(); if (PEAR::isError($db)) { return $db; } return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, 'getTableFieldDefinition: table field definition is not supported'); } // }}} // {{{ getTableIndexDefinition() /** * get the stucture of an index into an array * * @param string $table name of table that should be used in method * @param string $index name of index that should be used in method * @return mixed data array on success, a MDB2 error on failure * @access public */ function getTableIndexDefinition($table, $index) { $db =& $this->getDBInstance(); if (PEAR::isError($db)) { return $db; } return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, 'getTableIndexDefinition: getting index definition is not supported'); } // }}} // {{{ getSequenceDefinition() /** * get the stucture of a sequence into an array * * @param string $sequence name of sequence that should be used in method * @return mixed data array on success, a MDB2 error on failure * @access public */ function getSequenceDefinition($sequence) { $db =& $this->getDBInstance(); if (PEAR::isError($db)) { return $db; } $start = $db->currId($sequence); if (PEAR::isError($start)) { return $start; } if ($db->supports('current_id')) { $start++; } else { $db->warnings[] = 'database does not support getting current sequence value, the sequence value was incremented'; } $definition = array(); if ($start != 1) { $definition = array('start' => $start); } return $definition; } // }}} // {{{ tableInfo() /** * Returns information about a table or a result set * * The format of the resulting array depends on which $mode * you select. The sample output below is based on this query: *
     *    SELECT tblFoo.fldID, tblFoo.fldPhone, tblBar.fldId
     *    FROM tblFoo
     *    JOIN tblBar ON tblFoo.fldId = tblBar.fldId
     * 
* * * * The flags element contains a space separated list * of extra information about the field. This data is inconsistent * between DBMS's due to the way each DBMS works. * + primary_key * + unique_key * + multiple_key * + not_null * * Most DBMS's only provide the table and flags * elements if $result is a table name. The following DBMS's * provide full information from queries: * + fbsql * + mysql * * If the 'portability' option has MDB2_PORTABILITY_FIX_CASE * turned on, the names of tables and fields will be lower or upper cased. * * @param object|string $result MDB2_result object from a query or a * string containing the name of a table. * While this also accepts a query result * resource identifier, this behavior is * deprecated. * @param int $mode either unused or one of the tableInfo modes: * MDB2_TABLEINFO_ORDERTABLE, * MDB2_TABLEINFO_ORDER or * MDB2_TABLEINFO_FULL (which does both). * These are bitwise, so the first two can be * combined using |. * * @return array an associative array with the information requested. * A MDB2_Error object on failure. * * @see MDB2_Driver_Common::setOption() */ function tableInfo($result, $mode = null) { $db =& $this->getDBInstance(); if (PEAR::isError($db)) { return $db; } return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, 'tableInfo: method not implemented'); } } ?>