; * @copyright Tommy Gildseth, September 2004 * @version 0.1 * @access private * @package DBTableInfo */ class DBTIPgsql { //{{{ parseFlags(flags) /** * Extract information about a column, from the string contained in $flags * * Example of possible values for the $flags string: * not_null default_nextval%28dogsorts.breed_breed_id_seq%29 primary_key * default_n%2Fa * * @param string $flags column flags as returned by the * DB_Common::tableInfo() function * @access public */ function parseFlags($flags) { $flags = explode(' ', urldecode($flags)); $return = array('primaryKey' => false, 'required' => false, 'default' => false); foreach($flags as $flag) { switch($flag) { case 'not_null': $return['required'] = true; break; case 'primary_key': $return['primaryKey'] = true; break; default: if (stristr($flag, 'nextval')) { preg_match('/\(.*\)/', $flag, $matches); $return['sequence'] = str_replace(array('(', ')'), '', $matches[0]); $return['default'] = 'sequence'; } else if (stristr($flag, 'default')) { $return['default'] = str_replace('default_', '', $flag); } } } return $return; } // }}} end parseFlags //{{{ pkValue(pearDB, flags) /** * Get the currval() for this tables sequence, if any. * * @param object $pearDB An instance of the PEAR DB class. * @param array $flags column flags for all the columns in the table * @throws DBTIError * @access public */ function pkValue(&$pearDB, $flags) { $return = ''; //TODO: Fix errormessage. foreach($flags as $colName=>$colVal) { if (isset($colVal['sequence'])) { $query = "SELECT currval('".$colVal['sequence']."')"; $res = $pearDB->getOne($query); if (DB::isError($res)) { $return = new DBTIError(DBTI_NO_CURRVAL); } else { $return = array($colName => $res); } } } return $return; } // }}} end pkValue } ?>