From: Jan Schneider Date: Thu, 6 Jan 2011 10:44:43 +0000 (+0100) Subject: Use sprintf() to build queries. X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=a44d7e56f7b64ce14d3402f03fee20637d4dae0f;p=horde.git Use sprintf() to build queries. --- diff --git a/framework/Db/lib/Horde/Db/Adapter/Base/Schema.php b/framework/Db/lib/Horde/Db/Adapter/Base/Schema.php index 56761854f..f86d4823f 100644 --- a/framework/Db/lib/Horde/Db/Adapter/Base/Schema.php +++ b/framework/Db/lib/Horde/Db/Adapter/Base/Schema.php @@ -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, ''); } } diff --git a/framework/Db/lib/Horde/Db/Adapter/Mysql/Schema.php b/framework/Db/lib/Horde/Db/Adapter/Mysql/Schema.php index 66ab22e25..af7a3c697 100644 --- a/framework/Db/lib/Horde/Db/Adapter/Mysql/Schema.php +++ b/framework/Db/lib/Horde/Db/Adapter/Mysql/Schema.php @@ -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; } - } diff --git a/framework/Db/lib/Horde/Db/Adapter/Postgresql/Schema.php b/framework/Db/lib/Horde/Db/Adapter/Postgresql/Schema.php index ce862ebb1..e819feeca 100644 --- a/framework/Db/lib/Horde/Db/Adapter/Postgresql/Schema.php +++ b/framework/Db/lib/Horde/Db/Adapter/Postgresql/Schema.php @@ -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; } - } diff --git a/framework/Db/lib/Horde/Db/Adapter/Sqlite/Schema.php b/framework/Db/lib/Horde/Db/Adapter/Sqlite/Schema.php index 244942344..dc5f0986c 100644 --- a/framework/Db/lib/Horde/Db/Adapter/Sqlite/Schema.php +++ b/framework/Db/lib/Horde/Db/Adapter/Sqlite/Schema.php @@ -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); } }