Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
 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);
 }
Exemplo n.º 4
0
 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;
 }
Exemplo n.º 5
0
 /**
  *
  * @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;
 }
Exemplo n.º 6
0
 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;
     }
 }
Exemplo n.º 7
0
 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]]]);
 }