1567
1577
Lex->length=(char*) 0; /* use default length */
1569
| real_type opt_precision { $$=$1; }
1573
$$=DRIZZLE_TYPE_VARCHAR;
1577
Lex->length=(char*) "1";
1578
$$=DRIZZLE_TYPE_VARCHAR;
1580
| varchar '(' NUM ')'
1583
$$= DRIZZLE_TYPE_VARCHAR;
1585
| VARBINARY '(' NUM ')'
1588
Lex->charset=&my_charset_bin;
1589
$$= DRIZZLE_TYPE_VARCHAR;
1592
{ $$=DRIZZLE_TYPE_DATE; }
1594
{ $$=DRIZZLE_TYPE_TIMESTAMP; }
1596
{ $$=DRIZZLE_TYPE_DATETIME; }
1599
Lex->charset=&my_charset_bin;
1600
$$=DRIZZLE_TYPE_BLOB;
1601
Lex->length=(char*) 0; /* use default length */
1605
$$=DRIZZLE_TYPE_BLOB;
1606
Lex->length=(char*) 0; /* use default length */
1608
| DECIMAL_SYM float_options
1609
{ $$=DRIZZLE_TYPE_DECIMAL;}
1610
| NUMERIC_SYM float_options
1611
{ $$=DRIZZLE_TYPE_DECIMAL;}
1612
| FIXED_SYM float_options
1613
{ $$=DRIZZLE_TYPE_DECIMAL;}
1615
{Lex->interval_list.empty();}
1617
{ $$=DRIZZLE_TYPE_ENUM; }
1578
statement::CreateTable *statement=
1579
(statement::CreateTable *)Lex->statement;
1581
if (statement->current_proto_field)
1583
if ($1 == DRIZZLE_TYPE_LONG)
1584
statement->current_proto_field->set_type(message::Table::Field::INTEGER);
1585
else if ($1 == DRIZZLE_TYPE_LONGLONG)
1586
statement->current_proto_field->set_type(message::Table::Field::BIGINT);
1591
| real_type opt_precision
1595
statement::CreateTable *statement=
1596
(statement::CreateTable *)Lex->statement;
1598
if (statement->current_proto_field)
1600
assert ($1 == DRIZZLE_TYPE_DOUBLE);
1601
statement->current_proto_field->set_type(message::Table::Field::DOUBLE);
1607
$$=DRIZZLE_TYPE_VARCHAR;
1609
statement::CreateTable *statement=
1610
(statement::CreateTable *)Lex->statement;
1612
if (statement->current_proto_field)
1614
statement->current_proto_field->set_type(message::Table::Field::VARCHAR);
1615
message::Table::Field::StringFieldOptions *string_field_options;
1617
string_field_options= statement->current_proto_field->mutable_string_options();
1619
string_field_options->set_length(atoi($3.str));
1624
Lex->length=(char*) "1";
1625
$$=DRIZZLE_TYPE_VARCHAR;
1627
statement::CreateTable *statement=
1628
(statement::CreateTable *)Lex->statement;
1630
if (statement->current_proto_field)
1631
statement->current_proto_field->set_type(message::Table::Field::VARCHAR);
1633
| varchar '(' NUM ')'
1636
$$= DRIZZLE_TYPE_VARCHAR;
1638
statement::CreateTable *statement=
1639
(statement::CreateTable *)Lex->statement;
1641
if (statement->current_proto_field)
1643
statement->current_proto_field->set_type(message::Table::Field::VARCHAR);
1645
message::Table::Field::StringFieldOptions *string_field_options;
1647
string_field_options= statement->current_proto_field->mutable_string_options();
1649
string_field_options->set_length(atoi($3.str));
1652
| VARBINARY '(' NUM ')'
1655
Lex->charset=&my_charset_bin;
1656
$$= DRIZZLE_TYPE_VARCHAR;
1658
statement::CreateTable *statement=
1659
(statement::CreateTable *)Lex->statement;
1661
if (statement->current_proto_field)
1663
statement->current_proto_field->set_type(message::Table::Field::VARCHAR);
1664
message::Table::Field::StringFieldOptions *string_field_options;
1666
string_field_options= statement->current_proto_field->mutable_string_options();
1668
string_field_options->set_length(atoi($3.str));
1669
string_field_options->set_collation_id(my_charset_bin.number);
1670
string_field_options->set_collation(my_charset_bin.name);
1675
$$=DRIZZLE_TYPE_DATE;
1677
statement::CreateTable *statement=
1678
(statement::CreateTable *)Lex->statement;
1680
if (statement->current_proto_field)
1681
statement->current_proto_field->set_type(message::Table::Field::DATE);
1685
$$=DRIZZLE_TYPE_TIMESTAMP;
1687
statement::CreateTable *statement=
1688
(statement::CreateTable *)Lex->statement;
1690
if (statement->current_proto_field)
1691
statement->current_proto_field->set_type(message::Table::Field::TIMESTAMP);
1695
$$=DRIZZLE_TYPE_DATETIME;
1697
statement::CreateTable *statement=
1698
(statement::CreateTable *)Lex->statement;
1700
if (statement->current_proto_field)
1701
statement->current_proto_field->set_type(message::Table::Field::DATETIME);
1705
Lex->charset=&my_charset_bin;
1706
$$=DRIZZLE_TYPE_BLOB;
1707
Lex->length=(char*) 0; /* use default length */
1709
statement::CreateTable *statement=
1710
(statement::CreateTable *)Lex->statement;
1712
if (statement->current_proto_field)
1713
statement->current_proto_field->set_type(message::Table::Field::BLOB);
1717
$$=DRIZZLE_TYPE_BLOB;
1718
Lex->length=(char*) 0; /* use default length */
1720
statement::CreateTable *statement=
1721
(statement::CreateTable *)Lex->statement;
1723
if (statement->current_proto_field)
1724
statement->current_proto_field->set_type(message::Table::Field::BLOB);
1726
| DECIMAL_SYM float_options
1728
$$=DRIZZLE_TYPE_DECIMAL;
1730
statement::CreateTable *statement=
1731
(statement::CreateTable *)Lex->statement;
1733
if (statement->current_proto_field)
1734
statement->current_proto_field->set_type(message::Table::Field::DECIMAL);
1736
| NUMERIC_SYM float_options
1738
$$=DRIZZLE_TYPE_DECIMAL;
1740
statement::CreateTable *statement=
1741
(statement::CreateTable *)Lex->statement;
1743
if (statement->current_proto_field)
1744
statement->current_proto_field->set_type(message::Table::Field::DECIMAL);
1746
| FIXED_SYM float_options
1748
$$=DRIZZLE_TYPE_DECIMAL;
1750
statement::CreateTable *statement=
1751
(statement::CreateTable *)Lex->statement;
1753
if (statement->current_proto_field)
1754
statement->current_proto_field->set_type(message::Table::Field::DECIMAL);
1757
{Lex->interval_list.empty();}
1760
$$=DRIZZLE_TYPE_ENUM;
1762
statement::CreateTable *statement=
1763
(statement::CreateTable *)Lex->statement;
1765
if (statement->current_proto_field)
1766
statement->current_proto_field->set_type(message::Table::Field::ENUM);
1620
1770
$$=DRIZZLE_TYPE_LONGLONG;
1621
1771
Lex->type|= (AUTO_INCREMENT_FLAG | NOT_NULL_FLAG | UNIQUE_FLAG);
1773
statement::CreateTable *statement= (statement::CreateTable *)Lex->statement;
1774
if (statement->current_proto_field)
1776
message::Table::Field::FieldConstraints *constraints;
1777
constraints= statement->current_proto_field->mutable_constraints();
1778
constraints->set_is_nullable(false);
1780
statement->current_proto_field->set_type(message::Table::Field::BIGINT);