3 require_once(
'./Services/Database/classes/PDO/Manager/class.ilDBPdoManagerPostgres.php');
4 require_once(
'class.ilDBPdo.php');
5 require_once(
'./Services/Database/classes/PDO/FieldDefinition/class.ilDBPdoPostgresFieldDefinition.php');
6 require_once(
'./Services/Database/classes/PDO/Reverse/class.ilDBPdoReversePostgres.php');
19 protected $port = self::POSTGRE_STD_PORT;
33 $this->
setPort(self::POSTGRE_STD_PORT);
35 $this->dsn =
'pgsql:host=' . $this->
getHost() .
';port=' . $this->
getPort() .
';dbname=' . $this->
getDbname() .
';user=' 45 public function connect($return_false_for_error =
false)
52 $this->error_code = $e->getCode();
53 if ($return_false_for_error) {
59 return ($this->pdo->errorCode() == PDO::ERR_NONE);
66 PDO::ATTR_EMULATE_PREPARES =>
true,
67 PDO::ATTR_STRINGIFY_FETCHES =>
true,
114 $a_constraint = str_replace($a_table .
'_',
'', $a_constraint);
116 return $a_table .
'_' . $a_constraint;
126 return parent::getIndexName($index_name_base);
137 public function replace($a_table, $a_pk_columns, $a_other_columns)
139 $a_columns = array_merge($a_pk_columns, $a_other_columns);
141 $field_values = array();
142 $placeholders = array();
147 $val_field = array();
150 foreach ($a_columns as $k => $col) {
151 if ($col[0] ==
'clob' or $col[0] ==
'blob') {
152 $val_field[] = $this->
quote($col[1],
'text') .
" " . $k;
154 $val_field[] = $this->
quote($col[1], $col[0]) .
" " . $k;
157 $placeholders[] =
"%s";
158 $placeholders2[] =
":$k";
161 $field_values[$k] = $col[1];
162 if ($col[0] ==
"blob" || $col[0] ==
"clob") {
172 foreach ($a_pk_columns as $k => $col) {
173 $abpk[] =
"a." . $k .
" = b." . $k;
174 $delwhere[] = $k .
" = " . $this->
quote($col[1], $col[0]);
176 foreach ($a_other_columns as $k => $col) {
177 $aboc[] =
"a." . $k .
" = b." . $k;
181 $this->
manipulate(
"DELETE FROM " . $a_table .
" WHERE " . implode(
" AND ", $delwhere));
182 $this->
insert($a_table, $a_columns);
198 foreach ($a_tables as
$table) {
199 if (!isset($table[
'sequence']) && $table[
'sequence']) {
200 $lock =
'LOCK TABLE ' . $table[
'name'];
202 switch ($table[
'type']) {
204 $lock .=
' IN SHARE MODE ';
208 $lock .=
' IN EXCLUSIVE MODE ';
218 foreach ($locks as $lock) {
258 $sequence_name = $table_name .
'_seq';
259 $query =
"SELECT NEXTVAL('$sequence_name')";
263 return $data->nextval;
272 public function dropTable($table_name, $error_if_not_existing =
false)
275 $this->pdo->exec(
"DROP TABLE $table_name");
277 if ($error_if_not_existing) {
295 return '"' . $identifier .
'"';
307 if (is_array($tables)) {
308 if (in_array($table_name, $tables)) {
323 if ($this->limit !== null && $this->offset !== null) {
326 $this->offset = null;
343 return in_array($column_name, $this->manager->listTableFields($table_name));
366 $this->manager->alterTable($a_name, array(
"name" => $a_new_name ),
false);
382 if (in_array($table_name, $this->manager->listSequences())) {
386 parent::createSequence($table_name,
$start);
401 public function createTable($table_name, $fields, $drop_table =
false, $ignore_erros =
false)
407 return parent::createTable($table_name, $fields, $drop_table, $ignore_erros);
421 require_once(
'./Services/Database/classes/class.ilDBAnalyzer.php');
423 if ($ilDBAnalyzer->getPrimaryKeyInformation($table_name)) {
427 return parent::addPrimaryKey($table_name, $primary_keys);
434 public function addIndex($table_name, $fields, $index_name =
'', $fulltext =
false)
436 $indices = $this->manager->listTableIndexes($table_name);
437 if (in_array($this->
constraintName($table_name, $index_name), $indices)) {
441 return parent::addIndex($table_name, $fields, $index_name, $fulltext);
451 return parent::addUniqueConstraint(
$table, $fields,
$name);
463 return $this->manager->dropConstraint($table_name,
"pk",
true);
createTable($table_name, $fields, $drop_table=false, $ignore_erros=false)
dropTable($table_name, $error_if_not_existing=false)
renameTable($a_name, $a_new_name)
Class ilDBPdoPostgresFieldDefinition.
quote($value, $type=null)
getPrimaryKeyIdentifier()
Primary key identifier.
setStorageEngine($storage_engine)
Class ilDatabaseException.
replace($a_table, $a_pk_columns, $a_other_columns)
constraintName($a_table, $a_constraint)
quoteIdentifier($identifier, $check_option=false)
tableColumnExists($table_name, $column_name)
dropPrimaryKey($table_name)
addPrimaryKey($table_name, $primary_keys)
addIndex($table_name, $fields, $index_name='', $fulltext=false)
createSequence($table_name, $start=1)
getIndexName($index_name_base)
getAdditionalAttributes()
insert($table_name, $values)
addUniqueConstraint($table, $fields, $name="con")
if(empty($password)) $table
This class gives all kind of DB information using the database manager and reverse module...
connect($return_false_for_error=false)