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"));
}