2require_once(
'class.ilDBPdoReverse.php');
 
   31        $query = 
"SELECT a.attname AS name, 
   36                                   WHEN 'numeric' THEN (a.atttypmod / 65536) 
   37                                   WHEN 'decimal' THEN (a.atttypmod / 65536) 
   38                                   WHEN 'money'   THEN (a.atttypmod / 65536) 
   47                               WHEN 'numeric' THEN (a.atttypmod % 65536) - 4 
   48                               WHEN 'decimal' THEN (a.atttypmod % 65536) - 4 
   49                               WHEN 'money'   THEN (a.atttypmod % 65536) - 4 
   55                         (SELECT substring(pg_get_expr(d.adbin, d.adrelid) for 128) 
   57                           WHERE d.adrelid = a.attrelid 
   58                             AND d.adnum = a.attnum 
   64                   WHERE c.relname = " . $db->quote(
$table, 
'text') . 
" 
   65                     AND a.atttypid = t.oid 
   66                     AND c.oid = a.attrelid 
   67                     AND NOT a.attisdropped 
   69                     AND a.attname = " . $db->quote($field_name, 
'text') . 
" 
   78        $mapped_datatype = $db->getFieldDefinition()->mapNativeDatatype(
$column);
 
   80        list($types, $length, $unsigned, $fixed) = $mapped_datatype;
 
   82        if (!empty(
$column[
'attnotnull']) && 
$column[
'attnotnull'] == 
't') {
 
   86        if (
$column[
'atthasdef'] === 
't' 
   87            && !preg_match(
"/nextval\('([^']+)'/", 
$column[
'default'])
 
   90            if (is_null($default) && $notnull) {
 
   94        $autoincrement = 
false;
 
   95        if (preg_match(
"/nextval\('([^']+)'/", 
$column[
'default'], $nextvals)) {
 
   96            $autoincrement = 
true;
 
   98        $definition[0] = array( 
'notnull' => $notnull, 
'nativetype' => 
$column[
'type'] );
 
   99        if (!is_null($length)) {
 
  100            $definition[0][
'length'] = $length;
 
  102        if (!is_null($unsigned)) {
 
  103            $definition[0][
'unsigned'] = $unsigned;
 
  105        if (!is_null($fixed)) {
 
  106            $definition[0][
'fixed'] = $fixed;
 
  108        if ($default !== 
false) {
 
  109            $definition[0][
'default'] = $default;
 
  111        if ($autoincrement !== 
false) {
 
  112            $definition[0][
'autoincrement'] = $autoincrement;
 
  115            $definition[
$key] = $definition[0];
 
  117                unset($definition[
$key][
'default']);
 
  141        $query = 
'SELECT relname, indkey FROM pg_index, pg_class';
 
  142        $query .= 
' WHERE pg_class.oid = pg_index.indexrelid';
 
  143        $query .= 
" AND indisunique != 't' AND indisprimary != 't'";
 
  144        $query .= 
' AND pg_class.relname = %s';
 
  145        $index_name_mdb2 = $db->getIndexName($index_name);
 
  149        } 
catch (Exception $e) {
 
  160        $row = array_change_key_case(
$row, CASE_LOWER);
 
  164        $definition = array();
 
  166        $index_column_numbers = explode(
' ', 
$row[
'indkey']);
 
  169        foreach ($index_column_numbers as $number) {
 
  170            $definition[
'fields'][
$columns[($number - 1)]] = array(
 
  171                'position' => $colpos++,
 
  172                'sorting'  => 
'ascending',
 
  193        $query = 
'SELECT relname, indisunique, indisprimary, indkey FROM pg_index, pg_class';
 
  194        $query .= 
' WHERE pg_class.oid = pg_index.indexrelid';
 
  195        $query .= 
" AND (indisunique = 't' OR indisprimary = 't')";
 
  196        $query .= 
' AND pg_class.relname = %s';
 
  197        $constraint_name_mdb2 = $db->getIndexName($constraint_name);
 
  200        } 
catch (Exception $e) {
 
  203        if ($e instanceof PDOException || empty(
$row)) {
 
  212        $row = array_change_key_case(
$row, CASE_LOWER);
 
  215        $definition = array();
 
  216        if (
$row[
'indisprimary'] == 
't') {
 
  217            $definition[
'primary'] = 
true;
 
  218        } elseif (
$row[
'indisunique'] == 
't') {
 
  219            $definition[
'unique'] = 
true;
 
  222        $index_column_numbers = explode(
' ', 
$row[
'indkey']);
 
  225        foreach ($index_column_numbers as $number) {
 
  226            $definition[
'fields'][
$columns[($number - 1)]] = array(
 
  227                'position' => $colpos++,
 
  228                'sorting'  => 
'ascending',
 
  256        $query = 
"SELECT trg.tgname AS trigger_name, 
  257                         tbl.relname AS table_name, 
  259                            WHEN p.proname IS NOT NULL THEN 'EXECUTE PROCEDURE ' || p.proname || '();' 
  262                         CASE trg.tgtype & cast(2 as int2) 
  266                         CASE trg.tgtype & cast(28 as int2) 
  267                            WHEN 16 THEN 'UPDATE' 
  270                            WHEN 20 THEN 'INSERT, UPDATE' 
  271                            WHEN 28 THEN 'INSERT, UPDATE, DELETE' 
  272                            WHEN 24 THEN 'UPDATE, DELETE' 
  273                            WHEN 12 THEN 'INSERT, DELETE' 
  274                         END AS trigger_event, 
  275                         trg.tgenabled AS trigger_enabled, 
  276                         obj_description(trg.oid, 'pg_trigger') AS trigger_comment 
  280                   WHERE trg.tgrelid = tbl.oid 
  281                     AND trg.tgfoid = p.oid 
  282                     AND trg.tgname = " . $db->quote($trigger, 
'text');
 
  284            'trigger_name'    => 
'text',
 
  285            'table_name'      => 
'text',
 
  286            'trigger_body'    => 
'text',
 
  287            'trigger_type'    => 
'text',
 
  288            'trigger_event'   => 
'text',
 
  289            'trigger_comment' => 
'text',
 
  290            'trigger_enabled' => 
'boolean',
 
  320            return parent::tableInfo(
$result, $mode);
 
  326        if (!is_resource($resource)) {
 
  330        if ($db->options[
'portability']) {
 
  331            if ($db->options[
'field_case'] == CASE_LOWER) {
 
  332                $case_func = 
'strtolower';
 
  334                $case_func = 
'strtoupper';
 
  337            $case_func = 
'strval';
 
  340        $count = @pg_num_fields($resource);
 
  344            $res[
'num_fields'] = $count;
 
  347        $db->loadModule(
'Datatype', 
null, 
true);
 
  348        for (
$i = 0; 
$i < $count; 
$i++) {
 
  350                'table'  => function_exists(
'pg_field_table') ? @pg_field_table($resource, 
$i) : 
'',
 
  351                'name'   => $case_func(@pg_field_name($resource, 
$i)),
 
  352                'type'   => @pg_field_type($resource, 
$i),
 
  353                'length' => @pg_field_size($resource, 
$i),
 
  356            $mdb2type_info = $db->datatype->mapNativeDatatype(
$res[
$i]);
 
  358                return $mdb2type_info;
 
  360            $res[
$i][
'mdb2type'] = $mdb2type_info[0][0];
 
sprintf('%.4f', $callTime)
const MDB2_ERROR_NEED_MORE_DATA
const MDB2_FETCHMODE_ASSOC
Column data indexed by column names.
const MDB2_TABLEINFO_ORDERTABLE
const MDB2_TABLEINFO_ORDER
These are constants for the tableInfo-function they are bitwised or'ed.
An exception for terminatinating execution or to throw for unit testing.
isResultCommon($value)
Tell whether a value is a MDB2 result implementing the common interface.
isError($data, $code=null)
Tell whether a value is a PEAR error.
tableInfo($result, $mode=null)
Returns information about a table or a result set.
getTriggerDefinition($trigger)
Get the structure of a trigger into an array.
getTableConstraintDefinition($table, $constraint_name)
Get the structure of a constraint into an array.
getTableIndexDefinition($table, $index_name)
getTableFieldDefinition($table_name, $field_name)
Class ilDatabaseException.
if(empty($password)) $table
foreach($_POST as $key=> $value) $res