コード例 #1
0
    public function testExtractRangeColumns()
    {
        $sql = <<<SQL
CREATE TABLE range_test (id int, foo int, PRIMARY KEY (id, foo))
PARTITION BY RANGE COLUMNS (id, foo) (
  PARTITION p0 VALUES LESS THAN (10, 20),
  PARTITION p1 VALUES LESS THAN (20, 30),
  PARTITION p2 VALUES LESS THAN (MAXVALUE, MAXVALUE)
);
SQL;
        $schema = $this->extract($sql);
        $partition = $schema->table->tablePartition;
        $this->assertNotEmpty($partition);
        $this->assertEquals('RANGE COLUMNS', (string) $partition['type']);
        $opts = mysql5_table::get_partition_options($schema->table['name'], $partition);
        $this->assertEquals('id,foo', $opts['columns']);
        $this->assertEquals(3, count($partition->tablePartitionSegment));
        $this->assertEquals('p0', (string) $partition->tablePartitionSegment[0]['name']);
        $this->assertEquals('10,20', (string) $partition->tablePartitionSegment[0]['value']);
        $this->assertEquals('p1', (string) $partition->tablePartitionSegment[1]['name']);
        $this->assertEquals('20,30', (string) $partition->tablePartitionSegment[1]['value']);
        $this->assertEquals('p2', (string) $partition->tablePartitionSegment[2]['name']);
        $this->assertEquals('MAXVALUE,MAXVALUE', (string) $partition->tablePartitionSegment[2]['value']);
    }