diff --git a/phpgwapi/inc/class.schema_proc_pgsql.inc.php b/phpgwapi/inc/class.schema_proc_pgsql.inc.php index 1e9e5b403f..f5c0533df1 100644 --- a/phpgwapi/inc/class.schema_proc_pgsql.inc.php +++ b/phpgwapi/inc/class.schema_proc_pgsql.inc.php @@ -36,6 +36,7 @@ /* Return a type suitable for DDL */ function TranslateType($sType, $iPrecision = 0, $iScale = 0) { + $sTranslated = $sType; switch($sType) { case 'auto': @@ -82,12 +83,6 @@ $sTranslated = 'text'; } break; - case 'date': - case 'text': - case 'timestamp': - case 'bool': - $sTranslated = $sType; - break; } return $sTranslated; } @@ -601,25 +596,16 @@ if($GLOBALS['DEBUG']) { echo '
RenameTable(): Altering column default for: ' . $sField; } $oProc->m_odb->query("ALTER TABLE $sOldTableName ALTER $sField SET DEFAULT nextval('seq_" . $sNewTableName . "')",__LINE__,__FILE__); } - - $indexes = array(); - $indexnames = $oProc->m_odb->index_names(); - while(list($key,$val) = @each($indexnames)) + // renameing existing indexes and primary keys + $indexes = $oProc->m_odb->Link_ID->MetaIndexes($sOldTableName,True); + if($GLOBALS['DEBUG']) { echo '
RenameTable(): Fetching indexes: '.print_r($indexes,True); } + foreach($indexes as $name => $data) { - $indexes[] = $val['index_name']; + $new_name = str_replace($sOldTableName,$sNewTableName,$name); + $sql = "ALTER TABLE $name RENAME TO $new_name"; + if($GLOBALS['DEBUG']) { echo "
RenameTable(): Renaming the index '$name': $sql"; } + $oProc->m_odb->query($sql); } - $pkeys = $oProc->m_odb->pkey_columns($sOldTableName); - if(!in_array($sOldTableName . '_pkey',$indexes) && !isset($pkeys[0])) // no idea how this can happen - { - // this happens if the table has no primary key --> nothing to do - // trying to drop the (not existing) constrain results in an error - //$oProc->m_odb->query("ALTER TABLE " . $sOldTableName . " DROP CONSTRAINT " . $sOldTableName . "_pkey",__LINE__,__FILE__); - } - else // rename the index - { - $oProc->m_odb->query('ALTER TABLE '.$sOldTableName.'_pkey RENAME TO '.$sNewTableName.'_pkey'); - } - return !!($oProc->m_odb->query("ALTER TABLE $sOldTableName RENAME TO $sNewTableName")); }