public function setUp() { $forkRate = 16; $file = new FileResourceProxy(fopen("php://memory", "w")); $doublesFile = new FileResourceProxy(fopen("php://memory", "w")); $tableSchemaFile = new FileResourceProxy(fopen("php://memory", "w")); $indexSchemaFile = new FileResourceProxy(fopen("php://memory", "w")); $tableSchema = new TableSchema($tableSchemaFile, $indexSchemaFile); $columnPageA = new ColumnSchema(); $columnPageA->setName("columnB"); $columnPageA->setIndex(0); $columnPageA->setDataType(DataType::INT()); $columnPageA->setLength(4); $tableSchema->addColumnSchema($columnPageA); $columnPageB = new ColumnSchema(); $columnPageB->setName("columnC"); $columnPageB->setIndex(1); $columnPageB->setDataType(DataType::VARCHAR()); $columnPageB->setLength(4); $tableSchema->addColumnSchema($columnPageB); $indexPage = new IndexSchema(); $indexPage->setName("test-index"); $indexPage->setColumns([0, 1]); $indexPage->setType(Type::INDEX()); $indexPage->setEngine(IndexEngine::BTREE()); $this->btree = new BTree($file, $tableSchema, $indexPage, $forkRate); $this->btree->setDoublesFile($doublesFile); $this->btree->setIsDevelopmentMode(true); }
public function setUp() { $file = new FileResourceProxy(fopen("php://memory", "w")); $columnSchema = new ColumnSchema(); $columnSchema->setName("test_column"); $columnSchema->setIndex(0); $columnSchema->setDataType(DataType::VARCHAR()); $columnSchema->setLength(10); $this->columnData = new ColumnData($file, $columnSchema); }
public function setUp() { $file = new FileResourceProxy(fopen("php://memory", "w")); $column1 = new ColumnSchema(); $column1->setName("foo"); $column1->setDataType(DataType::INTEGER()); $column1->setLength(4); $column2 = new ColumnSchema(); $column2->setName("bar"); $column2->setDataType(DataType::VARCHAR()); $column2->setLength(12); $columns = [[$column1, 'ASC'], [$column2, 'DESC']]; $this->index = new QuickSort($file, $columns); }
public function getSortIndexByColumns(array $orderColumns) { $insertionSortFile = new FileResourceProxy(fopen("php://memory", "w")); $columnPage = new ColumnSchema(); $columnPages = array(); foreach ($orderColumns as $columnIndex => $columnDataset) { if ($columnDataset instanceof Column) { $direction = 'ASC'; $columnPage = $columnDataset; } else { $direction = $columnDataset['direction'] === SqlToken::T_ASC() ? 'ASC' : 'DESC'; /* @var $value Value */ $value = $columnDataset['value']; $columnPage->setDataType(DataType::VARCHAR()); # TODO: get actual column-page if possible $columnPage->setLength(64); $columnPage->setName("INDEXVALUE_{$columnIndex}"); } $columnPages[] = [clone $columnPage, $direction]; } $sortIndex = new QuickSort($insertionSortFile, $columnPages); return $sortIndex; }
/** * * @return TableSchema */ public function getTableSchema() { if (is_null($this->tableSchema)) { $columnFile = new FileResourceProxy(fopen("php://memory", "w")); $indexFile = new FileResourceProxy(fopen("php://memory", "w")); $this->tableSchema = new TableSchema($columnFile, $indexFile); foreach ($this->columnNames as $columnName) { $columnPage = new ColumnSchema(); $columnPage->setName($columnName); $columnPage->setDataType(DataType::VARCHAR()); $columnPage->setLength(1024); $this->tableSchema->addColumnSchema($columnPage); } } return $this->tableSchema; }
public function convertBinaryToString($binary, DataType $dataType) { switch ($dataType) { case DataType::BIT(): return $binary; case DataType::BOOL(): break; ### NUMERIC ### NUMERIC case DataType::TINYINT(): return (int) ord($binary); case DataType::SMALLINT(): case DataType::MEDIUMINT(): case DataType::INT(): case DataType::BIGINT(): return $this->strdec($binary); case DataType::DEC(): case DataType::FLOAT(): case DataType::DOUBLE(): return $binary; ### TIME / DATE ### TIME / DATE case DataType::DATE(): return date("Y-m-d", $this->strdec($binary)); case DataType::DATETIME(): return date("Y-m-d H:i:s", $this->strdec($binary)); case DataType::TIMESTAMP(): return date("Y-m-d H:i:s", $this->strdec($binary)); case DataType::TIME(): return date("H:i:s", $this->strdec($binary)); case DataType::YEAR(): return (string) $this->strdec($binary); ### TEXT ### TEXT case DataType::CHAR(): case DataType::VARCHAR(): case DataType::BINARY(): case DataType::VARBINARY(): case DataType::TINYBLOB(): case DataType::TINYTEXT(): case DataType::BLOB(): case DataType::TEXT(): case DataType::MEDIUMBLOB(): case DataType::MEDIUMTEXT(): case DataType::LONGBLOB(): case DataType::LONGTEXT(): case DataType::ENUM(): case DataType::SET(): return $binary; } }
public function dataProviderModifyColumn() { $columnSchema = new ColumnSchema(); $columnSchema->setName("baz"); $columnSchema->setDataType(DataType::VARCHAR()); $columnSchema->setLength(5); return array([[[123, "Lorem ipsum", null], [456, "dolor sit", "2015-06-07 12:34:56"]], $columnSchema, [[789, "amet", "1990-10-02 10:20:30"], [234, "", null]], [['123', "Lorem", null], ['456', "dolor", "2015-06-07 12:34:56"], ['789', "amet", "1990-10-02 10:20:30"], ['234', "", null]]]); }