[prev in list] [next in list] [prev in thread] [next in thread]
List: pear-cvs
Subject: [PEAR-CVS] cvs: pear /MDB2/MDB2/Driver/Manager mssql.php
From: "Ali Fazelzadeh" <afz () php ! net>
Date: 2008-01-30 16:00:51
Message-ID: cvsafz1201708851 () cvsserver
[Download RAW message or body]
afz Wed Jan 30 16:00:51 2008 UTC
Modified files:
/pear/MDB2/MDB2/Driver/Manager mssql.php
Log:
alterTable + mssql fully implemented
http://cvs.php.net/viewvc.cgi/pear/MDB2/MDB2/Driver/Manager/mssql.php?r1=1.96&r2=1.97&diff_format=u
Index: pear/MDB2/MDB2/Driver/Manager/mssql.php
diff -u pear/MDB2/MDB2/Driver/Manager/mssql.php:1.96 \
pear/MDB2/MDB2/Driver/Manager/mssql.php:1.97
--- pear/MDB2/MDB2/Driver/Manager/mssql.php:1.96 Tue Jan 29 07:37:24 2008
+++ pear/MDB2/MDB2/Driver/Manager/mssql.php Wed Jan 30 16:00:51 2008
@@ -44,7 +44,7 @@
// | Lorenzo Alberton <l.alberton@quipo.it> |
// +----------------------------------------------------------------------+
//
-// $Id: mssql.php,v 1.96 2008/01/29 07:37:24 quipo Exp $
+// $Id: mssql.php,v 1.97 2008/01/30 16:00:51 afz Exp $
//
require_once 'MDB2/Driver/Manager/Common.php';
@@ -353,16 +353,16 @@
if (PEAR::isError($db)) {
return $db;
}
+ $name = $db->quoteIdentifier($name, true);
foreach ($changes as $change_name => $change) {
switch ($change_name) {
- case 'add':
- break;
case 'remove':
- break;
- case 'name':
case 'rename':
+ case 'add':
case 'change':
+ case 'name':
+ break;
default:
return $db->raiseError(MDB2_ERROR_CANNOT_ALTER, null, null,
'change type "'.$change_name.'" not yet supported', \
__FUNCTION__); @@ -373,34 +373,75 @@
return MDB2_OK;
}
- $query = '';
+ if (!empty($changes['remove']) && is_array($changes['remove'])) {
+ $query = '';
+ foreach ($changes['remove'] as $field_name => $field) {
+ if ($query) {
+ $query.= ', ';
+ }
+ $field_name = $db->quoteIdentifier($field_name, true);
+ $query.= 'DROP COLUMN ' . $field_name;
+ }
+
+ $result = $db->exec("ALTER TABLE $name $query");
+ if (PEAR::isError($result)) {
+ return $result;
+ }
+ }
+
+ if (!empty($changes['rename']) && is_array($changes['rename'])) {
+ foreach ($changes['rename'] as $field_name => $field) {
+ $field_name = $db->quoteIdentifier($field_name, true);
+ $result = $db->exec("sp_rename '$name.$field_name', \
'".$field['name']."', 'COLUMN'"); + if (PEAR::isError($result)) {
+ return $result;
+ }
+ }
+ }
+
if (!empty($changes['add']) && is_array($changes['add'])) {
+ $query = '';
foreach ($changes['add'] as $field_name => $field) {
if ($query) {
$query.= ', ';
} else {
- $query.= 'ADD COLUMN ';
+ $query.= 'ADD ';
}
$query.= $db->getDeclaration($field['type'], $field_name, $field);
}
+
+ $result = $db->exec("ALTER TABLE $name $query");
+ if (PEAR::isError($result)) {
+ return $result;
+ }
}
- if (!empty($changes['remove']) && is_array($changes['remove'])) {
- foreach ($changes['remove'] as $field_name => $field) {
+ if (!empty($changes['change']) && is_array($changes['change'])) {
+ $query = '';
+ foreach ($changes['change'] as $field_name => $field) {
if ($query) {
$query.= ', ';
+ } else {
+ $query.= 'ALTER COLUMN ';
}
- $field_name = $db->quoteIdentifier($field_name, true);
- $query.= 'DROP COLUMN ' . $field_name;
+ $query.= $db->getDeclaration($field['definition']['type'], \
$field_name, $field['definition'], true); + }
+
+ $result = $db->exec("ALTER TABLE $name $query");
+ if (PEAR::isError($result)) {
+ return $result;
}
}
- if (!$query) {
- return MDB2_OK;
+ if (!empty($changes['name'])) {
+ $new_name = $db->quoteIdentifier($changes['name'], true);
+ $result = $db->exec("sp_rename '$name', '$new_name'");
+ if (PEAR::isError($result)) {
+ return $result;
+ }
}
- $name = $db->quoteIdentifier($name, true);
- return $db->exec("ALTER TABLE $name $query");
+ return MDB2_OK;
}
// }}}
--
PEAR CVS Mailing List (http://pear.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic