public function getPrimary($table) { $primary = & $this->structure['primary'][$table]; if (isset($primary)) { return $primary; } if ($this->connection->getAttribute(PDO::ATTR_DRIVER_NAME) === 'sqlite') { $query = $this->connection->query("PRAGMA table_info($table)"); $primaryKey = 'pk'; $primaryVal = '1'; $primaryKeyColumn = 'name'; } else { $query = $this->connection->query("EXPLAIN $table"); $primaryKey = 3; $primaryVal = 'PRI'; $primaryKeyColumn = 0; } foreach ($query as $column) { if ($column[$primaryKey] === $primaryVal) { // 3 - "Key" is not compatible with PDO::CASE_LOWER if ($primary !== NULL) { $primary = FALSE; // multi-column primary key is not supported break; } $primary = $column[$primaryKeyColumn]; } } return $primary; }
protected function topString() { if ($this->limit !== NULL && $this->connection->getAttribute(PDO::ATTR_DRIVER_NAME) === 'dblib') { return " TOP ($this->limit)"; //! offset is not supported } return ''; }
public function __construct($tableName, NConnection $connection, IReflection $reflection) { $this->tableName = $tableName; $this->databaseReflection = $reflection; $this->driver = $connection->getSupplementalDriver(); $this->driverName = $connection->getAttribute(PDO::ATTR_DRIVER_NAME); $this->delimitedTable = $this->tryDelimite($tableName); }