/**
  * {@inheritdoc}
  */
 protected function _getPortableTableIndexesList($tableIndexRows, $tableName = null)
 {
     foreach ($tableIndexRows as &$tableIndex) {
         $tableIndex['non_unique'] = (bool) $tableIndex['non_unique'];
         $tableIndex['primary'] = (bool) $tableIndex['primary'];
         $tableIndex['flags'] = $tableIndex['flags'] ? array($tableIndex['flags']) : null;
     }
     return parent::_getPortableTableIndexesList($tableIndexRows, $tableName);
 }
 /**
  * {@inheritdoc}
  */
 protected function _getPortableTableIndexesList($tableIndexes, $tableName = null)
 {
     $indexes = array();
     foreach ($tableIndexes as $k) {
         $k['primary'] = (bool) $k['primary'];
         $indexes[] = $k;
     }
     return parent::_getPortableTableIndexesList($indexes, $tableName);
 }
Ejemplo n.º 3
0
 /**
  * {@inheritdoc}
  */
 protected function _getPortableTableIndexesList($tableIndexes, $tableName = null)
 {
     foreach ($tableIndexes as $k => $v) {
         $v = array_change_key_case($v, CASE_LOWER);
         if ($v['key_name'] == 'PRIMARY') {
             $v['primary'] = true;
         } else {
             $v['primary'] = false;
         }
         if (strpos($v['index_type'], 'FULLTEXT') !== false) {
             $v['flags'] = array('FULLTEXT');
         }
         $tableIndexes[$k] = $v;
     }
     return parent::_getPortableTableIndexesList($tableIndexes, $tableName);
 }
 protected function _getPortableTableIndexesList($tableIndexes, $tableName = null)
 {
     //return array();// @todo метод должен возвращать индексы (как я понял исключая Первичные ключи)
     foreach ($tableIndexes as $k => $v) {
         $v = array_change_key_case($v, CASE_LOWER);
         if ($v['key_name'] == 'PRIMARY') {
             $v['primary'] = true;
         } else {
             $v['primary'] = false;
         }
         if (strpos($v['index_type'], 'FULLTEXT') !== false) {
             $v['flags'] = array('FULLTEXT');
         }
         $tableIndexes[$k] = $v;
     }
     return parent::_getPortableTableIndexesList($tableIndexes, $tableName);
 }
Ejemplo n.º 5
0
 /**
  * {@inheritdoc}
  *
  * @license New BSD License
  * @link http://ezcomponents.org/docs/api/trunk/DatabaseSchema/ezcDbSchemaPgsqlReader.html
  */
 protected function _getPortableTableIndexesList($tableIndexes, $tableName = null)
 {
     $indexBuffer = array();
     foreach ($tableIndexes as $tableIndex) {
         $tableIndex = \array_change_key_case($tableIndex, CASE_LOWER);
         $keyName = strtolower($tableIndex['name']);
         if (strtolower($tableIndex['is_primary']) == "p") {
             $keyName = 'primary';
             $buffer['primary'] = true;
             $buffer['non_unique'] = false;
         } else {
             $buffer['primary'] = false;
             $buffer['non_unique'] = $tableIndex['is_unique'] == 0 ? true : false;
         }
         $buffer['key_name'] = $keyName;
         $buffer['column_name'] = $this->getQuotedIdentifierName($tableIndex['column_name']);
         $indexBuffer[] = $buffer;
     }
     return parent::_getPortableTableIndexesList($indexBuffer, $tableName);
 }
Ejemplo n.º 6
0
 /**
  * {@inheritdoc}
  *
  * @license New BSD License
  * @link http://ezcomponents.org/docs/api/trunk/DatabaseSchema/ezcDbSchemaPgsqlReader.html
  */
 protected function _getPortableTableIndexesList($tableIndexes, $tableName = null)
 {
     $indexBuffer = array();
     // fetch primary
     $stmt = $this->_conn->executeQuery("PRAGMA TABLE_INFO ('{$tableName}')");
     $indexArray = $stmt->fetchAll(\PDO::FETCH_ASSOC);
     usort($indexArray, function ($a, $b) {
         if ($a['pk'] == $b['pk']) {
             return $a['cid'] - $b['cid'];
         }
         return $a['pk'] - $b['pk'];
     });
     foreach ($indexArray as $indexColumnRow) {
         if ($indexColumnRow['pk'] != "0") {
             $indexBuffer[] = array('key_name' => 'primary', 'primary' => true, 'non_unique' => false, 'column_name' => $indexColumnRow['name']);
         }
     }
     // fetch regular indexes
     foreach ($tableIndexes as $tableIndex) {
         // Ignore indexes with reserved names, e.g. autoindexes
         if (strpos($tableIndex['name'], 'sqlite_') !== 0) {
             $keyName = $tableIndex['name'];
             $idx = array();
             $idx['key_name'] = $keyName;
             $idx['primary'] = false;
             $idx['non_unique'] = $tableIndex['unique'] ? false : true;
             $stmt = $this->_conn->executeQuery("PRAGMA INDEX_INFO ('{$keyName}')");
             $indexArray = $stmt->fetchAll(\PDO::FETCH_ASSOC);
             foreach ($indexArray as $indexColumnRow) {
                 $idx['column_name'] = $indexColumnRow['name'];
                 $indexBuffer[] = $idx;
             }
         }
     }
     return parent::_getPortableTableIndexesList($indexBuffer, $tableName);
 }
 /**
  * {@inheritdoc}
  *
  * @license New BSD License
  * @link http://ezcomponents.org/docs/api/trunk/DatabaseSchema/ezcDbSchemaPgsqlReader.html
  */
 protected function _getPortableTableIndexesList($tableIndexes, $tableName = null)
 {
     $buffer = array();
     foreach ($tableIndexes as $row) {
         $colNumbers = explode(' ', $row['indkey']);
         $colNumbersSql = 'IN (' . join(' ,', $colNumbers) . ' )';
         $columnNameSql = "SELECT attnum, attname FROM pg_attribute\n                WHERE attrelid={$row['indrelid']} AND attnum {$colNumbersSql} ORDER BY attnum ASC;";
         $stmt = $this->_conn->executeQuery($columnNameSql);
         $indexColumns = $stmt->fetchAll();
         // required for getting the order of the columns right.
         foreach ($colNumbers as $colNum) {
             foreach ($indexColumns as $colRow) {
                 if ($colNum == $colRow['attnum']) {
                     $buffer[] = array('key_name' => $row['relname'], 'column_name' => trim($colRow['attname']), 'non_unique' => !$row['indisunique'], 'primary' => $row['indisprimary'], 'where' => $row['where']);
                 }
             }
         }
     }
     return parent::_getPortableTableIndexesList($buffer, $tableName);
 }
Ejemplo n.º 8
0
 /**
  * {@inheritdoc}
  */
 protected function _getPortableTableIndexesList($tableIndexRows, $tableName = null)
 {
     foreach ($tableIndexRows as &$tableIndex) {
         $tableIndex['primary'] = (bool) $tableIndex['primary'];
         $tableIndex['flags'] = array();
         if ($tableIndex['clustered']) {
             $tableIndex['flags'][] = 'clustered';
         }
         if ($tableIndex['with_nulls_not_distinct']) {
             $tableIndex['flags'][] = 'with_nulls_not_distinct';
         }
         if ($tableIndex['for_olap_workload']) {
             $tableIndex['flags'][] = 'for_olap_workload';
         }
     }
     return parent::_getPortableTableIndexesList($tableIndexRows, $tableName);
 }
Ejemplo n.º 9
0
 /**
  * {@inheritdoc}
  */
 protected function _getPortableTableIndexesList($tableIndexes, $tableName = null)
 {
     $indexesByColumns = array();
     foreach ($tableIndexes as $k => $v) {
         $v = array_change_key_case($v, CASE_LOWER);
         foreach (range(1, 16) as $i) {
             if (!empty($v["col{$i}"])) {
                 $indexesByColumns[] = array('column_name' => $v["col{$i}"], 'key_name' => $v['constrname'] ?: $v['idxname'], 'non_unique' => $v['idxtype'] == 'D', 'primary' => $v['constrtype'] == 'P');
             }
         }
     }
     return parent::_getPortableTableIndexesList($indexesByColumns, $tableName);
 }
 /**
  * @param  array $tableIndexes
  * @param  string $tableName
  * @return array
  */
 protected function _getPortableTableIndexesList($tableIndexes, $tableName = null)
 {
     $indexBuffer = array();
     foreach ($tableIndexes as $tableIndex) {
         if ($tableIndex['index_type'] === "PRIMARY") {
             $keyName = 'primary';
             $buffer['primary'] = true;
             $buffer['non_unique'] = false;
         } else {
             $buffer['primary'] = false;
             $buffer['non_unique'] = $tableIndex['is_unique'] === 'NO';
         }
         $buffer['key_name'] = $tableIndex['index_name'];
         $buffer['column_name'] = $tableIndex['column_name'];
         $indexBuffer[] = $buffer;
     }
     return parent::_getPortableTableIndexesList($indexBuffer, $tableName);
 }