Use sprintf() to build queries.
authorJan Schneider <jan@horde.org>
Thu, 6 Jan 2011 10:44:43 +0000 (11:44 +0100)
committerJan Schneider <jan@horde.org>
Thu, 6 Jan 2011 11:30:13 +0000 (12:30 +0100)
framework/Db/lib/Horde/Db/Adapter/Base/Schema.php
framework/Db/lib/Horde/Db/Adapter/Mysql/Schema.php
framework/Db/lib/Horde/Db/Adapter/Postgresql/Schema.php
framework/Db/lib/Horde/Db/Adapter/Sqlite/Schema.php

index 5676185..f86d482 100644 (file)
@@ -198,7 +198,7 @@ abstract class Horde_Db_Adapter_Base_Schema
      */
     public function quoteString($string)
     {
-        return "'".str_replace(array('\\', '\''), array('\\\\', '\\\''), $string)."'";
+        return "'" . str_replace(array('\\', '\''), array('\\\\', '\\\''), $string) . "'";
     }
 
     /**
@@ -466,10 +466,11 @@ abstract class Horde_Db_Adapter_Base_Schema
         $temp = !empty($options['temporary']) ? 'TEMPORARY'           : null;
         $opts = !empty($options['options'])   ? $options['options']   : null;
 
-        $sql  = "CREATE $temp TABLE ".$this->quoteTableName($tableDefinition->getName())." (\n".
-                  $tableDefinition->toSql()."\n".
-                ") $opts";
-
+        $sql  = sprintf("CREATE %s TABLE %s (\n%s\n) %s",
+                        $temp,
+                        $this->quoteTableName($tableDefinition->getName()),
+                        $tableDefinition->toSql(),
+                        $opts);
         return $this->execute($sql);
     }
 
@@ -512,9 +513,10 @@ abstract class Horde_Db_Adapter_Base_Schema
         $scale     = isset($options['scale'])     ? $options['scale']     : null;
         $unsigned  = isset($options['unsigned'])  ? $options['unsigned']  : null;
 
-        $sql = 'ALTER TABLE ' . $this->quoteTableName($tableName) .
-            ' ADD '.$this->quoteColumnName($columnName) .
-            ' '.$this->typeToSql($type, $limit, $precision, $scale, $unsigned);
+        $sql = sprintf('ALTER TABLE %s ADD %s %s',
+                       $this->quoteTableName($tableName),
+                       $this->quoteColumnName($columnName),
+                       $this->typeToSql($type, $limit, $precision, $scale, $unsigned));
         $sql = $this->addColumnOptions($sql, $options);
         return $this->execute($sql);
     }
@@ -531,7 +533,9 @@ abstract class Horde_Db_Adapter_Base_Schema
     {
         $this->_clearTableCache($tableName);
 
-        $sql = 'ALTER TABLE ' . $this->quoteTableName($tableName).' DROP '.$this->quoteColumnName($columnName);
+        $sql = sprintf('ALTER TABLE %s DROP %s',
+                       $this->quoteTableName($tableName),
+                       $this->quoteColumnName($columnName));
         return $this->execute($sql);
     }
 
@@ -547,7 +551,7 @@ abstract class Horde_Db_Adapter_Base_Schema
      * @param   string  $type
      * @param   array   $options
      */
-    abstract public function changeColumn($tableName, $columnName, $type, $options=array());
+    abstract public function changeColumn($tableName, $columnName, $type, $options = array());
 
     /**
      * Sets a new default value for a column.  If you want to set the default
@@ -615,15 +619,18 @@ abstract class Horde_Db_Adapter_Base_Schema
         $columnNames = (array)($columnName);
         $indexName = $this->indexName($tableName, array('column' => $columnNames));
 
-        $indexType = !empty($options['unique']) ? "UNIQUE"         : null;
+        $indexType = !empty($options['unique']) ? 'UNIQUE'         : null;
         $indexName = !empty($options['name'])   ? $options['name'] : $indexName;
 
         foreach ($columnNames as $colName) {
             $quotedCols[] = $this->quoteColumnName($colName);
         }
         $quotedColumnNames = implode(', ', $quotedCols);
-        $sql = "CREATE $indexType INDEX ".$this->quoteColumnName($indexName).
-            'ON '.$this->quoteTableName($tableName) . " ($quotedColumnNames)";
+        $sql = sprintf('CREATE %s INDEX %s ON %s (%s)',
+                       $indexType,
+                       $this->quoteColumnName($indexName),
+                       $this->quoteTableName($tableName),
+                       $quotedColumnNames);
         return $this->execute($sql);
     }
 
@@ -649,7 +656,9 @@ abstract class Horde_Db_Adapter_Base_Schema
         $this->_clearTableCache($tableName);
 
         $index = $this->indexName($tableName, $options);
-        $sql = "DROP INDEX ".$this->quoteColumnName($index).' ON ' . $this->quoteTableName($tableName);
+        $sql = sprintf('DROP INDEX %s ON %s',
+                       $this->quoteColumnName($index),
+                       $this->quoteTableName($tableName));
         return $this->execute($sql);
     }
 
@@ -719,7 +728,9 @@ abstract class Horde_Db_Adapter_Base_Schema
     {
         $natives = $this->nativeDatabaseTypes();
         $native = isset($natives[$type]) ? $natives[$type] : null;
-        if (empty($native)) { return $type; }
+        if (empty($native)) {
+            return $type;
+        }
 
         $sql = is_array($native) ? $native['name'] : $native;
         if ($type == 'decimal') {
@@ -766,7 +777,7 @@ abstract class Horde_Db_Adapter_Base_Schema
         if (isset($options['default'])) {
             $default = $options['default'];
             $column  = isset($options['column'])  ? $options['column']  : null;
-            $sql .= ' DEFAULT '.$this->quote($default, $column);
+            $sql .= ' DEFAULT ' . $this->quote($default, $column);
         }
 
         return $sql;
@@ -784,7 +795,7 @@ abstract class Horde_Db_Adapter_Base_Schema
      */
     public function distinct($columns, $orderBy=null)
     {
-        return "DISTINCT $columns";
+        return 'DISTINCT ' . $columns;
     }
 
     /**
@@ -797,7 +808,7 @@ abstract class Horde_Db_Adapter_Base_Schema
      */
     public function addOrderByForAssocLimiting($sql, $options)
     {
-        return $sql.'ORDER BY '.$options['order'];
+        return $sql . 'ORDER BY ' . $options['order'];
     }
 
 
@@ -810,7 +821,7 @@ abstract class Horde_Db_Adapter_Base_Schema
      */
     protected function _clearTableCache($tableName)
     {
-        $this->_cache->set("tables/columns/$tableName", '');
-        $this->_cache->set("tables/indexes/$tableName", '');
+        $this->_cache->set('tables/columns/' . $tableName, '');
+        $this->_cache->set('tables/indexes/' . $tableName, '');
     }
 }
index 66ab22e..af7a3c6 100644 (file)
@@ -227,7 +227,7 @@ class Horde_Db_Adapter_Mysql_Schema extends Horde_Db_Adapter_Base_Schema
     {
         $opts = 'ENGINE=InnoDB';
         if (!empty($options['charset'])) {
-            $opts .=' DEFAULT CHARSET=' . $options['charset'];
+            $opts .= ' DEFAULT CHARSET=' . $options['charset'];
         }
         return parent::endTable($name, array_merge(array('options' => $opts), $options));
     }
@@ -239,8 +239,10 @@ class Horde_Db_Adapter_Mysql_Schema extends Horde_Db_Adapter_Base_Schema
     public function renameTable($name, $newName)
     {
         $this->_clearTableCache($name);
-
-        return $this->execute('ALTER TABLE '.$this->quoteTableName($name).' RENAME '.$this->quoteTableName($newName));
+        $sql = sprintf('ALTER TABLE %s RENAME %s',
+                       $this->quoteTableName($name),
+                       $this->quoteTableName($newName));
+        return $this->execute($sql);
     }
 
     /**
@@ -255,13 +257,19 @@ class Horde_Db_Adapter_Mysql_Schema extends Horde_Db_Adapter_Base_Schema
         $quotedTableName = $this->quoteTableName($tableName);
         $quotedColumnName = $this->quoteColumnName($columnName);
 
-        $sql = "SHOW COLUMNS FROM $quotedTableName LIKE ".$this->quoteString($columnName);
+        $sql = sprintf('SHOW COLUMNS FROM %s LIKE %s',
+                       $quotedTableName,
+                       $this->quoteString($columnName));
         $res = $this->selectOne($sql);
         $currentType = $res['Type'];
 
         $default = $this->quote($default);
-        $sql = "ALTER TABLE $quotedTableName CHANGE $quotedColumnName $quotedColumnName
-                $currentType DEFAULT $default";
+        $sql = sprintf('ALTER TABLE %s CHANGE %s %s %s DEFAULT %s',
+                       $quotedTableName,
+                       $quotedColumnName,
+                       $quotedColumnName,
+                       $currentType,
+                       $default);
         return $this->execute($sql);
     }
 
@@ -279,7 +287,10 @@ class Horde_Db_Adapter_Mysql_Schema extends Horde_Db_Adapter_Base_Schema
         $quotedColumnName = $this->quoteColumnName($columnName);
 
         if (!array_key_exists('default', $options)) {
-            $row = $this->selectOne("SHOW COLUMNS FROM $quotedTableName LIKE ".$this->quoteString($columnName));
+            $sql = sprintf('SHOW COLUMNS FROM %s LIKE %s',
+                           $quotedTableName,
+                           $this->quoteString($columnName));
+            $row = $this->selectOne($sql);
             $options['default'] = $row['Default'];
         }
 
@@ -290,7 +301,11 @@ class Horde_Db_Adapter_Mysql_Schema extends Horde_Db_Adapter_Base_Schema
 
         $typeSql = $this->typeToSql($type, $limit, $precision, $scale, $unsigned);
 
-        $sql = "ALTER TABLE $quotedTableName CHANGE $quotedColumnName $quotedColumnName $typeSql";
+        $sql = sprintf('ALTER TABLE %s CHANGE %s %s %s',
+                       $quotedTableName,
+                       $quotedColumnName,
+                       $quotedColumnName,
+                       $typeSql);
         $sql = $this->addColumnOptions($sql, $options);
         $this->execute($sql);
     }
@@ -307,14 +322,17 @@ class Horde_Db_Adapter_Mysql_Schema extends Horde_Db_Adapter_Base_Schema
         $quotedTableName = $this->quoteTableName($tableName);
         $quotedColumnName = $this->quoteColumnName($columnName);
 
-        $sql = "SHOW COLUMNS FROM $quotedTableName LIKE ".$this->quoteString($columnName);
+        $sql = sprintf('SHOW COLUMNS FROM %s LIKE %s',
+                       $quotedTableName,
+                       $this->quoteString($columnName));
         $res = $this->selectOne($sql);
-        $currentType = $res["Type"];
+        $currentType = $res['Type'];
 
-        $sql = "ALTER TABLE $quotedTableName CHANGE ".
-                $quotedColumnName.' '.
-                $this->quoteColumnName($newColumnName)." ".
-                $currentType;
+        $sql = sprintf('ALTER TABLE %s CHANGE %s %s %s',
+                       $quotedTableName,
+                       $quotedColumnName,
+                       $this->quoteColumnName($newColumnName),
+                       $currentType);
         return $this->execute($sql);
     }
 
@@ -341,7 +359,7 @@ class Horde_Db_Adapter_Mysql_Schema extends Horde_Db_Adapter_Base_Schema
      */
     public function showVariable($name)
     {
-        $value = $this->selectOne('SHOW VARIABLES LIKE '.$this->quoteString($name));
+        $value = $this->selectOne('SHOW VARIABLES LIKE ' . $this->quoteString($name));
         if ($value['Variable_name'] == $name) {
             return $value['Value'];
         } else {
@@ -376,7 +394,9 @@ class Horde_Db_Adapter_Mysql_Schema extends Horde_Db_Adapter_Base_Schema
         if ($type == 'integer' && !empty($unsigned) && empty($limit)) {
             $natives = $this->nativeDatabaseTypes();
             $native = isset($natives[$type]) ? $natives[$type] : null;
-            if (empty($native)) { return $type; }
+            if (empty($native)) {
+                return $type;
+            }
 
             $nativeLimit = is_array($native) ? $native['limit'] : null;
             if (is_integer($nativeLimit)) {
@@ -404,12 +424,11 @@ class Horde_Db_Adapter_Mysql_Schema extends Horde_Db_Adapter_Base_Schema
     {
         $sql = parent::addColumnOptions($sql, $options);
         if (isset($options['after'])) {
-            $sql .= " AFTER ".$this->quoteColumnName($options['after']);
+            $sql .= ' AFTER ' . $this->quoteColumnName($options['after']);
         }
         if (!empty($options['autoincrement'])) {
             $sql .= ' AUTO_INCREMENT';
         }
         return $sql;
     }
-
 }
index ce862eb..e819fee 100644 (file)
@@ -71,10 +71,13 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde_Db_Adapter_Base_Schema
      */
     public function quote($value, $column = null)
     {
-        if (!$column)
+        if (!$column) {
             return parent::quote($value, $column);
+        }
 
-        if (is_string($value) && ($column->getType() == 'binary') && method_exists($column, 'stringToBinary')) {
+        if (is_string($value) &&
+            $column->getType() == 'binary' &&
+            method_exists($column, 'stringToBinary')) {
             /*@TODO test blobs/bytea fields with postgres/pdo and figure out how
               this should work */
             return $this->quotedStringPrefix() . "'" . $column->stringToBinary($value) . "'";
@@ -83,7 +86,8 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde_Db_Adapter_Base_Schema
         } elseif (is_numeric($value) && $column->getSqlType() == 'money') {
             // Not truly string input, so doesn't require (or allow) escape string syntax.
             return "'" . $value . "'";
-        } elseif (is_string($value) && substr($column->getSqlType(), 0, 3) == 'bit') {
+        } elseif (is_string($value) &&
+                  substr($column->getSqlType(), 0, 3) == 'bit') {
             if (preg_match('/^[01]*$/', $value)) {
                 // Bit-string notation
                 return "B'" . $value . "'";
@@ -110,17 +114,17 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde_Db_Adapter_Base_Schema
     {
         return array(
             'primaryKey' => 'serial primary key',
-            'string'     => array('name' => 'character varying',  'limit' => 255),
-            'text'       => array('name' => 'text',               'limit' => null),
-            'integer'    => array('name' => 'integer',            'limit' => null),
-            'float'      => array('name' => 'float',              'limit' => null),
-            'decimal'    => array('name' => 'decimal',            'limit' => null),
-            'datetime'   => array('name' => 'timestamp',          'limit' => null),
-            'timestamp'  => array('name' => 'timestamp',          'limit' => null),
-            'time'       => array('name' => 'time',               'limit' => null),
-            'date'       => array('name' => 'date',               'limit' => null),
-            'binary'     => array('name' => 'bytea',              'limit' => null),
-            'boolean'    => array('name' => 'boolean',            'limit' => null),
+            'string'     => array('name' => 'character varying', 'limit' => 255),
+            'text'       => array('name' => 'text',              'limit' => null),
+            'integer'    => array('name' => 'integer',           'limit' => null),
+            'float'      => array('name' => 'float',             'limit' => null),
+            'decimal'    => array('name' => 'decimal',           'limit' => null),
+            'datetime'   => array('name' => 'timestamp',         'limit' => null),
+            'timestamp'  => array('name' => 'timestamp',         'limit' => null),
+            'time'       => array('name' => 'time',              'limit' => null),
+            'date'       => array('name' => 'date',              'limit' => null),
+            'binary'     => array('name' => 'bytea',             'limit' => null),
+            'boolean'    => array('name' => 'boolean',           'limit' => null),
         );
     }
 
@@ -215,10 +219,9 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde_Db_Adapter_Base_Schema
      */
     public function primaryKey($tableName, $name = null)
     {
-        $sql = 'SELECT column_name
-                  FROM information_schema.constraint_column_usage
-                  WHERE table_name = ' . $this->quoteString($tableName) .
-                  ' AND constraint_name = ' . $this->quoteString($tableName . '_pkey');
+        $sql = sprintf('SELECT column_name FROM information_schema.constraint_column_usage WHERE table_name = %s AND constraint_name = %s',
+                       $this->quoteString($tableName),
+                       $this->quoteString($tableName . '_pkey'));
         $pk = $this->selectValues($sql, $name);
 
         return $this->makeIndex($tableName, 'PRIMARY', true, true, $pk);
@@ -240,7 +243,7 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde_Db_Adapter_Base_Schema
             $sql = "
               SELECT distinct i.relname, d.indisunique, a.attname
                  FROM pg_class t, pg_class i, pg_index d, pg_attribute a
-               WHERE i.relkind = 'i'
+              WHERE i.relkind = 'i'
                  AND d.indexrelid = i.oid
                  AND d.indisprimary = 'f'
                  AND t.oid = d.indrelid
@@ -316,7 +319,7 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde_Db_Adapter_Base_Schema
     public function setSchemaSearchPath($schemaCsv)
     {
         if ($schemaCsv) {
-            $this->execute("SET search_path TO $schemaCsv");
+            $this->execute('SET search_path TO ' . $schemaCsv);
             $this->_schemaSearchPath = $schemaCsv;
         }
     }
@@ -367,8 +370,12 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde_Db_Adapter_Base_Schema
     {
         if (!($pk && $sequence)) {
             list($defaultPk, $efaultSequence) = $this->pkAndSequenceFor($table);
-            if (!$pk) $pk = $defaultPk;
-            if (!$sequence) $sequence = $defaultSequence;
+            if (!$pk) {
+                $pk = $defaultPk;
+            }
+            if (!$sequence) {
+                $sequence = $defaultSequence;
+            }
         }
 
         if ($pk) {
@@ -377,10 +384,17 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde_Db_Adapter_Base_Schema
                 $quotedTable = $this->quoteTableName($table);
                 $quotedPk = $this->quoteColumnName($pk);
 
-                $sql = "SELECT setval($quotedSequence, (SELECT COALESCE(MAX($quotedPk)+(SELECT increment_by FROM $quotedSequence), (SELECT min_value FROM $quotedSequence)) FROM $quotedTable), false)";
+                $sql = sprintf('SELECT setval(%s, (SELECT COALESCE(MAX(%s) + (SELECT increment_by FROM %s), (SELECT min_value FROM %s)) FROM %s), false)',
+                               $quotedSequence,
+                               $quotedPk,
+                               $quotedSequence,
+                               $quotedSequence,
+                               $quotedTable);
                 $this->selectValue($sql, 'Reset sequence');
             } else {
-                if ($this->_logger) { $this->_logger->warn("$table has primary key $pk with no default sequence"); }
+                if ($this->_logger) {
+                    $this->_logger->warn(sprintf('%s has primary key %s with no default sequence', $table, $pk));
+                }
             }
         }
     }
@@ -399,14 +413,14 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde_Db_Adapter_Base_Schema
                pg_depend     dep,
                pg_namespace  name,
                pg_constraint cons
-          WHERE seq.oid           = dep.objid
-            AND seq.relkind       = 'S'
-            AND attr.attrelid     = dep.refobjid
-            AND attr.attnum       = dep.refobjsubid
-            AND attr.attrelid     = cons.conrelid
-            AND attr.attnum       = cons.conkey[1]
-            AND cons.contype      = 'p'
-            AND dep.refobjid      = '$table'::regclass";
+          WHERE seq.oid       = dep.objid
+            AND seq.relkind   = 'S'
+            AND attr.attrelid = dep.refobjid
+            AND attr.attnum   = dep.refobjsubid
+            AND attr.attrelid = cons.conrelid
+            AND attr.attnum   = cons.conkey[1]
+            AND cons.contype  = 'p'
+            AND dep.refobjid  = '$table'::regclass";
         $result = $this->selectOne($sql, 'PK and serial sequence');
 
         if (!$result) {
@@ -443,7 +457,7 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde_Db_Adapter_Base_Schema
     {
         $this->_clearTableCache($name);
 
-        return $this->execute('ALTER TABLE ' . $this->quoteTableName($name) . ' RENAME TO ' . $this->quoteTableName($newName));
+        return $this->execute(sprintf('ALTER TABLE %s RENAME TO %s', $this->quoteTableName($name), $this->quoteTableName($newName)));
     }
 
     /**
@@ -456,9 +470,9 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde_Db_Adapter_Base_Schema
         $this->_clearTableCache($tableName);
 
         $autoincrement = isset($options['autoincrement']) ? $options['autoincrement'] : null;
-        $limit     = isset($options['limit'])     ? $options['limit']     : null;
-        $precision = isset($options['precision']) ? $options['precision'] : null;
-        $scale     = isset($options['scale'])     ? $options['scale']     : null;
+        $limit         = isset($options['limit'])         ? $options['limit']     : null;
+        $precision     = isset($options['precision'])     ? $options['precision'] : null;
+        $scale         = isset($options['scale'])         ? $options['scale']     : null;
 
         $sqltype = $this->typeToSql($type, $limit, $precision, $scale);
 
@@ -477,7 +491,11 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde_Db_Adapter_Base_Schema
         }
 
         // Add the column.
-        $this->execute('ALTER TABLE ' . $this->quoteTableName($tableName) . ' ADD COLUMN ' . $this->quoteColumnName($columnName) . ' ' . $sqltype);
+        $sql = sprintf('ALTER TABLE %s ADD COLUMN %s %s',
+                       $this->quoteTableName($tableName),
+                       $this->quoteColumnName($columnName),
+                       $sqltype);
+        $this->execute($sql);
 
         $default = isset($options['default']) ? $options['default'] : null;
         $notnull = isset($options['null']) && $options['null'] === false;
@@ -499,14 +517,18 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde_Db_Adapter_Base_Schema
         $this->_clearTableCache($tableName);
 
         $autoincrement = isset($options['autoincrement']) ? $options['autoincrement'] : null;
-        $limit     = isset($options['limit'])     ? $options['limit']     : null;
-        $precision = isset($options['precision']) ? $options['precision'] : null;
-        $scale     = isset($options['scale'])     ? $options['scale']     : null;
+        $limit         = isset($options['limit'])         ? $options['limit']     : null;
+        $precision     = isset($options['precision'])     ? $options['precision'] : null;
+        $scale         = isset($options['scale'])         ? $options['scale']     : null;
 
         $quotedTableName = $this->quoteTableName($tableName);
 
         try {
-            $this->execute('ALTER TABLE '.$quotedTableName.' ALTER COLUMN '.$this->quoteColumnName($columnName).' TYPE '.$this->typeToSql($type, $limit, $precision, $scale));
+            $sql = sprintf('ALTER TABLE %s ALTER COLUMN %s TYPE %s',
+                           $quotedTableName,
+                           $this->quoteColumnName($columnName),
+                           $this->typeToSql($type, $limit, $precision, $scale));
+            $this->execute($sql);
         } catch (Horde_Db_Exception $e) {
             // This is PostgreSQL 7.x, or the old type could not be coerced to
             // the new type, so we have to use a more arcane way of doing it.
@@ -531,11 +553,19 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde_Db_Adapter_Base_Schema
                 $this->addColumn($tableName, $tmpColumnName, $type, $options);
 
                 if ($oldType == 'boolean') {
-                    $this->execute('UPDATE '.$quotedTableName.' SET '.$this->quoteColumnName($tmpColumnName).' = CAST(CASE WHEN '.$this->quoteColumnName($columnName).' IS TRUE THEN 1 ELSE 0 END AS '.$this->typeToSql($type, $limit, $precision, $scale).')');
+                    $sql = sprintf('UPDATE %s SET %s = CAST(CASE WHEN %s IS TRUE THEN 1 ELSE 0 END AS %s)',
+                                   $quotedTableName,
+                                   $this->quoteColumnName($tmpColumnName),
+                                   $this->quoteColumnName($columnName),
+                                   $this->typeToSql($type, $limit, $precision, $scale));
                 } else {
-                    $this->execute('UPDATE '.$quotedTableName.' SET '.$this->quoteColumnName($tmpColumnName).' = CAST('.$this->quoteColumnName($columnName).' AS '.$this->typeToSql($type, $limit, $precision, $scale).')');
+                    $sql = sprintf('UPDATE %s SET %s = CAST(%s AS %s)',
+                                   $quotedTableName,
+                                   $this->quoteColumnName($tmpColumnName),
+                                   $this->quoteColumnName($columnName),
+                                   $this->typeToSql($type, $limit, $precision, $scale));
                 }
-
+                $this->execute($sql);
                 $this->removeColumn($tableName, $columnName);
                 $this->renameColumn($tableName, $tmpColumnName, $columnName);
 
@@ -559,7 +589,11 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde_Db_Adapter_Base_Schema
              * default value (NEXTVAL is a postgres keyword, not a text
              * value). */
             $this->_clearTableCache($tableName);
-            $this->execute('ALTER TABLE ' . $this->quoteTableName($tableName) . ' ALTER COLUMN ' . $this->quoteColumnName($columnName) . ' SET DEFAULT NEXTVAL(' . $this->quoteSequenceName($seq_name) . ')');
+            $sql = sprintf('ALTER TABLE %s ALTER COLUMN %s SET DEFAULT NEXTVAL(%s)',
+                           $this->quoteTableName($tableName),
+                           $this->quoteColumnName($columnName),
+                           $this->quoteSequenceName($seq_name));
+            $this->execute($sql);
         } elseif (array_key_exists('default', $options)) {
             $this->changeColumnDefault($tableName, $columnName, $default);
         }
@@ -575,16 +609,29 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde_Db_Adapter_Base_Schema
     public function changeColumnDefault($tableName, $columnName, $default)
     {
         $this->_clearTableCache($tableName);
-        return $this->execute('ALTER TABLE '.$this->quoteTableName($tableName). ' ALTER COLUMN '.$this->quoteColumnName($columnName).' SET DEFAULT '.$this->quote($default));
+        $sql = sprintf('ALTER TABLE %s ALTER COLUMN %s SET DEFAULT %s',
+                       $this->quoteTableName($tableName),
+                       $this->quoteColumnName($columnName),
+                       $this->quote($default));
+        return $this->execute($sql);
     }
 
     public function changeColumnNull($tableName, $columnName, $null, $default = null)
     {
         $this->_clearTableCache($tableName);
         if (!($null || is_null($default))) {
-            $this->execute('UPDATE '.$this->quoteTableName($tableName).' SET '.$this->quoteColumnName($columnName).' = '.$this->quote($default).' WHERE '.$this->quoteColumnName($columnName).' IS NULL');
+            $sql = sprintf('UPDATE %s SET %s = %s WHERE %s IS NULL',
+                           $this->quoteTableName($tableName),
+                           $this->quoteColumnName($columnName),
+                           $this->quote($default),
+                           $this->quoteColumnName($columnName));
+            $this->execute($sql);
         }
-        return $this->execute('ALTER TABLE '.$this->quoteTableName($tableName).' ALTER '.$this->quoteColumnName($columnName).' '.($null ? 'DROP' : 'SET').' NOT NULL');
+        $sql = sprintf('ALTER TABLE %s ALTER %s %s NOT NULL',
+                       $this->quoteTableName($tableName),
+                       $this->quoteColumnName($columnName),
+                       $null ? 'DROP' : 'SET');
+        return $this->execute($sql);
     }
 
     /**
@@ -593,7 +640,11 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde_Db_Adapter_Base_Schema
     public function renameColumn($tableName, $columnName, $newColumnName)
     {
         $this->_clearTableCache($tableName);
-        return $this->execute('ALTER TABLE '.$this->quoteTableName($tableName).' RENAME COLUMN '.$this->quoteColumnName($columnName).' TO '.$this->quoteColumnName($newColumnName));
+        $sql = sprintf('ALTER TABLE %s RENAME COLUMN %s TO %s',
+                       $this->quoteTableName($tableName),
+                       $this->quoteColumnName($columnName),
+                       $this->quoteColumnName($newColumnName));
+        return $this->execute($sql);
     }
 
     /**
@@ -602,7 +653,7 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde_Db_Adapter_Base_Schema
     public function removeIndex($tableName, $options = array())
     {
         $this->_clearTableCache($tableName);
-        return $this->execute('DROP INDEX '.$this->indexName($tableName, $options));
+        return $this->execute('DROP INDEX ' . $this->indexName($tableName, $options));
     }
 
     /**
@@ -648,7 +699,7 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde_Db_Adapter_Base_Schema
     public function distinct($columns, $orderBy = null)
     {
         if (empty($orderBy)) {
-            return "DISTINCT $columns";
+            return 'DISTINCT ' . $columns;
         }
 
         // Construct a clean list of column names from the ORDER BY clause, removing
@@ -660,7 +711,8 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde_Db_Adapter_Base_Schema
 
         // Return a DISTINCT ON() clause that's distinct on the columns we want but includes
         // all the required columns for the ORDER BY to work properly.
-        return 'DISTINCT ON ('.$colummns.') '.$columns.', '.implode(', ', $orderColumns);
+        return sprintf('DISTINCT ON (%s) %s, %s',
+                       $colummns, $columns, implode(', ', $orderColumns));
     }
 
     /**
@@ -671,7 +723,9 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde_Db_Adapter_Base_Schema
      */
     public function addOrderByForAssociationLimiting($sql, $options)
     {
-        if (empty($options['order'])) return $sql;
+        if (empty($options['order'])) {
+            return $sql;
+        }
 
         $order = array();
         foreach (preg_split('/\s*,\s*/', $options['order'], -1, PREG_SPLIT_NO_EMPTY) as $s) {
@@ -680,7 +734,8 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde_Db_Adapter_Base_Schema
         }
         $order = implode(', ', $order);
 
-        return "SELECT * FROM ($sql) AS id_list ORDER BY $order";
+        return sprintf('SELECT * FROM (%s) AS id_list ORDER BY %s',
+                       $sql, $order);
     }
 
     /**
@@ -710,7 +765,7 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde_Db_Adapter_Base_Schema
             SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
               FROM pg_attribute a LEFT JOIN pg_attrdef d
                 ON a.attrelid = d.adrelid AND a.attnum = d.adnum
-             WHERE a.attrelid = '.$this->quote($tableName).'::regclass
+             WHERE a.attrelid = ' . $this->quote($tableName) . '::regclass
                AND a.attnum > 0 AND NOT a.attisdropped
              ORDER BY a.attnum', $name);
     }
@@ -728,5 +783,4 @@ class Horde_Db_Adapter_Postgresql_Schema extends Horde_Db_Adapter_Base_Schema
 
         return 0;
     }
-
 }
index 2449423..dc5f098 100644 (file)
@@ -204,8 +204,10 @@ class Horde_Db_Adapter_Sqlite_Schema extends Horde_Db_Adapter_Base_Schema
     public function renameTable($name, $newName)
     {
         $this->_clearTableCache($name);
-
-        return $this->execute('ALTER TABLE ' . $this->quoteTableName($name) . ' RENAME TO ' . $this->quoteTableName($newName));
+        $sql = sprintf('ALTER TABLE %s RENAME TO %s',
+                       $this->quoteTableName($name),
+                       $this->quoteTableName($newName));
+        return $this->execute($sql);
     }
 
     /**
@@ -244,7 +246,7 @@ class Horde_Db_Adapter_Sqlite_Schema extends Horde_Db_Adapter_Base_Schema
         $this->_clearTableCache($tableName);
 
         return $this->_alterTable($tableName, array(),
-            create_function('$definition', 'unset($definition["'.$columnName.'"]);'));
+            create_function('$definition', 'unset($definition["' . $columnName . '"]);'));
     }
 
     /**
@@ -257,11 +259,19 @@ class Horde_Db_Adapter_Sqlite_Schema extends Horde_Db_Adapter_Base_Schema
     {
         $this->_clearTableCache($tableName);
 
-        $defs = array('$definition["'.$columnName.'"]->setType("'.$type.'");');
-        if (isset($options['limit'])) { $defs[] = '$definition["'.$columnName.'"]->setLimit("'.$options['limit'].'");'; }
-        if (isset($options['null'])) { $defs[] = '$definition["'.$columnName.'"]->setNull("'.$options['null'].'");'; }
-        if (isset($options['precision'])) { $defs[] = '$definition["'.$columnName.'"]->setPrecision("'.$options['precision'].'");'; }
-        if (isset($options['scale'])) { $defs[] = '$definition["'.$columnName.'"]->setScale("'.$options['scale'].'");'; }
+        $defs = array(sprintf('$definition["%s"]->setType("%s");', $columnName, $type));
+        if (isset($options['limit'])) {
+            $defs[] = sprintf('$definition["%s"]->setLimit("%s");', $columnName, $options['limit']);
+        }
+        if (isset($options['null'])) {
+            $defs[] = sprintf('$definition["%s"]->setNull("%s");', $columnName, $options['null']);
+        }
+        if (isset($options['precision'])) {
+            $defs[] = sprintf('$definition["%s"]->setPrecision("%s");', $columnName, $options['precision']);
+        }
+        if (isset($options['scale'])) {
+            $defs[] = sprintf('$definition["%s"]->setScale("%s");', $columnName, $options['scale']);
+        }
 
         if (array_key_exists('default', $options)) {
             if ($options['default'] === true) {
@@ -273,7 +283,8 @@ class Horde_Db_Adapter_Sqlite_Schema extends Horde_Db_Adapter_Base_Schema
             } else {
                 $default = '"' . $options['default'] . '"';
             }
-            $defs[] = '$definition["'.$columnName.'"]->setDefault('.$default.');'; }
+            $defs[] = sprintf('$definition["%s"]->setDefault(%s);', $columnName, $default);
+        }
 
         return $this->_alterTable($tableName, array(),
             create_function('$definition', implode("\n", $defs)));
@@ -290,7 +301,7 @@ class Horde_Db_Adapter_Sqlite_Schema extends Horde_Db_Adapter_Base_Schema
 
         $default = is_null($default) ? 'null' : '"' . $default . '"';
         return $this->_alterTable($tableName, array(),
-            create_function('$definition', '$definition["'.$columnName.'"]->setDefault('.$default.');'));
+                                  create_function('$definition', sprintf('$definition["%s"]->setDefault(%s);', $columnName, $default)));
     }
 
     /**
@@ -327,7 +338,7 @@ class Horde_Db_Adapter_Sqlite_Schema extends Horde_Db_Adapter_Base_Schema
         $this->_clearTableCache($tableName);
 
         $index = $this->indexName($tableName, $options);
-        $sql = 'DROP INDEX '.$this->quoteColumnName($index);
+        $sql = 'DROP INDEX ' . $this->quoteColumnName($index);
         return $this->execute($sql);
     }
 
@@ -349,7 +360,7 @@ class Horde_Db_Adapter_Sqlite_Schema extends Horde_Db_Adapter_Base_Schema
     {
         $this->beginDbTransaction();
 
-        $alteredTableName = "altered_$tableName";
+        $alteredTableName = 'altered_' . $tableName;
         $this->_moveTable($tableName, $alteredTableName, array_merge($options, array('temporary' => true)));
         $this->_moveTable($alteredTableName, $tableName, array(), $callback);
 
@@ -371,7 +382,9 @@ class Horde_Db_Adapter_Sqlite_Schema extends Horde_Db_Adapter_Base_Schema
 
         $definition = $this->createTable($to, $options);
         foreach ($fromColumns as $column) {
-            $columnName = isset($options['rename'][$column->getName()]) ? $options['rename'][$column->getName()] : $column->getName();
+            $columnName = isset($options['rename'][$column->getName()])
+                ? $options['rename'][$column->getName()]
+                : $column->getName();
 
             $definition->column($columnName, $column->getType(), array(
                 'limit' => $column->getLimit(),
@@ -380,7 +393,9 @@ class Horde_Db_Adapter_Sqlite_Schema extends Horde_Db_Adapter_Base_Schema
         }
 
         $primaryKey = $this->primaryKey($from);
-        if ($primaryKey) { $definition->primaryKey($primaryKey); }
+        if ($primaryKey) {
+            $definition->primaryKey($primaryKey);
+        }
 
         if (is_callable($callback)) {
             call_user_func($callback, $definition);
@@ -403,9 +418,9 @@ class Horde_Db_Adapter_Sqlite_Schema extends Horde_Db_Adapter_Base_Schema
 
         foreach ($this->indexes($from) as $index) {
             $name = $index->getName();
-            if ($to == "altered_$from") {
-                $name = "temp_$name";
-            } elseif ($from == "altered_$to") {
+            if ($to == 'altered_' . $from) {
+                $name = 'temp_' . $name;
+            } elseif ($from == 'altered_' . $to) {
                 $name = substr($name, 5);
             }
 
@@ -421,8 +436,10 @@ class Horde_Db_Adapter_Sqlite_Schema extends Horde_Db_Adapter_Base_Schema
 
             if (!empty($columns)) {
                 // Index name can't be the same
-                $opts = array('name' => str_replace("_$from_", "_$to_", $name));
-                if ($index->unique) { $opts['unique'] = true; }
+                $opts = array('name' => str_replace('_' . $from . '_', '_' . $to . '_', $name));
+                if ($index->unique) {
+                    $opts['unique'] = true;
+                }
                 $this->addIndex($to, $columns, $opts);
             }
         }
@@ -460,6 +477,11 @@ class Horde_Db_Adapter_Sqlite_Schema extends Horde_Db_Adapter_Base_Schema
         $quotedFrom = $this->quoteTableName($from);
         $quotedFromColumns = implode(', ', array_map(array($this, 'quoteColumnName'), $fromColumns));
 
-        $this->execute("INSERT INTO $quotedTo ($quotedToColumns) SELECT $quotedFromColumns FROM $quotedFrom");
+        $sql = sprintf('INSERT INTO %s (%s) SELECT %s FROM %s',
+                       $quotedTo,
+                       $quotedToColumns,
+                       $quotedFromColumns,
+                       $quotedFrom);
+        $this->execute($sql);
     }
 }