You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@quickstep.apache.org by zu...@apache.org on 2016/04/19 18:44:16 UTC
[03/24] incubator-quickstep git commit: Support,
and tests for SMA index creation via parser.
Support, and tests for SMA index creation via parser.
https://github.com/pivotalsoftware/quickstep/pull/157
Project: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/commit/57e12d53
Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/57e12d53
Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/57e12d53
Branch: refs/heads/master
Commit: 57e12d5339f4b97084a710c5fa74b952c5d201e1
Parents: 390a267
Author: Marc S <cr...@users.noreply.github.com>
Authored: Wed Apr 13 18:19:16 2016 -0500
Committer: Saket Saurabh <sa...@users.noreply.github.com>
Committed: Wed Apr 13 18:19:16 2016 -0500
----------------------------------------------------------------------
parser/ParseIndexProperties.hpp | 39 +
parser/ParseStatement.hpp | 5 +-
parser/SqlLexer.lpp | 1 +
parser/SqlParser.ypp | 5 +
parser/preprocessed/SqlLexer_gen.cpp | 303 +-
parser/preprocessed/SqlLexer_gen.hpp | 2 +-
parser/preprocessed/SqlParser_gen.cpp | 2875 +++++++++---------
parser/preprocessed/SqlParser_gen.hpp | 49 +-
parser/tests/Index.test | 8 +-
.../tests/execution_generator/Index.test | 29 +-
.../tests/logical_generator/Index.test | 30 +-
.../tests/physical_generator/Index.test | 57 +-
query_optimizer/tests/resolver/Index.test | 30 +-
13 files changed, 1791 insertions(+), 1642 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/57e12d53/parser/ParseIndexProperties.hpp
----------------------------------------------------------------------
diff --git a/parser/ParseIndexProperties.hpp b/parser/ParseIndexProperties.hpp
index 0acca62..b34346c 100644
--- a/parser/ParseIndexProperties.hpp
+++ b/parser/ParseIndexProperties.hpp
@@ -343,6 +343,45 @@ class CSBTreeIndexProperties : public IndexProperties {
};
/**
+ * @brief Implementation of index properties for SMA Index.
+ */
+class SMAIndexProperties : public IndexProperties {
+ public:
+ /**
+ * @brief Constructor.
+ */
+ SMAIndexProperties() : IndexProperties(new IndexSubBlockDescription()) {
+ index_sub_block_description_->set_sub_block_type(IndexSubBlockDescription::SMA);
+ }
+
+ ~SMAIndexProperties() override {
+ }
+
+ std::string getReasonForInvalidIndexDescription() const override {
+ switch (invalid_index_type_) {
+ case InvalidIndexType::kNone:
+ return "";
+ case InvalidIndexType::kInvalidKey:
+ return "SMA index does not define index properties";
+ default:
+ return "Unknown reason";
+ }
+ }
+
+ bool addCustomProperties(const PtrList<ParseKeyValue> *key_value_list) override {
+ // SMA does not define any index properties, so calling this function
+ // will invalidate the index.
+ invalid_index_type_ = InvalidIndexType::kInvalidKey;
+ invalid_property_node_ = nullptr;
+ index_sub_block_description_.reset();
+ return false;
+ }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(SMAIndexProperties);
+};
+
+/**
* @brief Encapsulates the IndexProperties key-value list. Makes the job
* of resolving IndexProperties easy.
*/
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/57e12d53/parser/ParseStatement.hpp
----------------------------------------------------------------------
diff --git a/parser/ParseStatement.hpp b/parser/ParseStatement.hpp
index 9807e0a..643643d 100644
--- a/parser/ParseStatement.hpp
+++ b/parser/ParseStatement.hpp
@@ -355,7 +355,7 @@ class ParseStatementCreateIndex : public ParseStatement {
inline_field_values->push_back("sma");
break;
default:
- inline_field_values->push_back("unkown");
+ inline_field_values->push_back("unknown");
}
if (attribute_list_ != nullptr) {
@@ -392,7 +392,8 @@ class ParseStatementCreateIndex : public ParseStatement {
index_properties_.reset(new CSBTreeIndexProperties());
break;
case IndexSubBlockType::kSMA:
- LOG(FATAL) << "Currently cannot create this index subblock type using CREATE INDEX.";
+ index_properties_.reset(new SMAIndexProperties());
+ break;
default:
LOG(FATAL) << "Unknown index subblock type.";
break;
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/57e12d53/parser/SqlLexer.lpp
----------------------------------------------------------------------
diff --git a/parser/SqlLexer.lpp b/parser/SqlLexer.lpp
index 354db86..0c9e646 100644
--- a/parser/SqlLexer.lpp
+++ b/parser/SqlLexer.lpp
@@ -248,6 +248,7 @@ unsigned_numeric_literal {exact_numeric_literal}|{approximate_numeric_literal}
"row_delimiter" return TOKEN_ROW_DELIMITER;
"select" return TOKEN_SELECT;
"set" return TOKEN_SET;
+ "sma" return TOKEN_SMA;
"smallint" return TOKEN_SMALLINT;
"table" return TOKEN_TABLE;
"then" return TOKEN_THEN;
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/57e12d53/parser/SqlParser.ypp
----------------------------------------------------------------------
diff --git a/parser/SqlParser.ypp b/parser/SqlParser.ypp
index 56f50b6..c6ff7db 100644
--- a/parser/SqlParser.ypp
+++ b/parser/SqlParser.ypp
@@ -306,6 +306,7 @@ void NotSupported(const YYLTYPE *location, yyscan_t yyscanner, const std::string
%token TOKEN_ROW_DELIMITER;
%token TOKEN_SELECT;
%token TOKEN_SET;
+%token TOKEN_SMA;
%token TOKEN_SMALLINT;
%token TOKEN_TABLE;
%token TOKEN_THEN;
@@ -989,6 +990,10 @@ index_type:
| TOKEN_CSB_TREE {
$$ = new quickstep::ParseString(@1.first_line, @1.first_column,
std::to_string(quickstep::IndexSubBlockType::kCSBTree));
+ }
+ | TOKEN_SMA {
+ $$ = new quickstep::ParseString(@1.first_line, @1.first_column,
+ std::to_string(quickstep::IndexSubBlockType::kSMA));
};
opt_index_properties:
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/57e12d53/parser/preprocessed/SqlLexer_gen.cpp
----------------------------------------------------------------------
diff --git a/parser/preprocessed/SqlLexer_gen.cpp b/parser/preprocessed/SqlLexer_gen.cpp
index a6173d7..878ac58 100644
--- a/parser/preprocessed/SqlLexer_gen.cpp
+++ b/parser/preprocessed/SqlLexer_gen.cpp
@@ -381,8 +381,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
*yy_cp = '\0'; \
yyg->yy_c_buf_p = yy_cp;
-#define YY_NUM_RULES 141
-#define YY_END_OF_BUFFER 142
+#define YY_NUM_RULES 142
+#define YY_END_OF_BUFFER 143
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@@ -393,62 +393,62 @@ struct yy_trans_info
static yyconst flex_int16_t yy_accept[520] =
{ 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 142, 2, 2, 140, 140, 139, 138, 140,
- 117, 113, 116, 113, 113, 136, 109, 106, 110, 135,
- 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
- 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
- 135, 135, 135, 114, 4, 5, 5, 3, 132, 132,
- 129, 133, 133, 127, 134, 134, 131, 1, 139, 107,
- 137, 136, 136, 136, 0, 111, 108, 112, 135, 135,
- 135, 135, 10, 135, 135, 135, 21, 135, 135, 135,
- 135, 135, 135, 135, 135, 135, 135, 115, 135, 135,
-
- 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
- 135, 61, 135, 135, 135, 135, 135, 135, 135, 135,
- 135, 73, 74, 135, 135, 135, 135, 135, 135, 135,
- 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
- 135, 135, 135, 135, 135, 135, 4, 5, 3, 132,
- 128, 133, 126, 126, 118, 120, 121, 122, 123, 124,
- 125, 126, 134, 130, 137, 136, 0, 136, 6, 7,
- 135, 9, 11, 135, 135, 15, 135, 135, 135, 135,
- 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
- 135, 135, 135, 135, 41, 135, 135, 135, 135, 135,
-
- 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
- 57, 135, 63, 135, 135, 135, 135, 135, 69, 135,
- 72, 135, 135, 135, 135, 135, 135, 135, 135, 135,
- 135, 135, 135, 135, 89, 135, 135, 135, 135, 135,
- 135, 135, 135, 135, 135, 135, 135, 135, 135, 118,
- 120, 119, 135, 135, 135, 135, 135, 135, 19, 22,
- 135, 135, 135, 27, 135, 135, 29, 135, 135, 135,
- 135, 35, 135, 135, 39, 40, 135, 135, 135, 135,
- 135, 135, 135, 49, 50, 135, 52, 135, 135, 135,
- 135, 135, 60, 62, 64, 65, 66, 135, 68, 70,
-
- 135, 135, 135, 135, 135, 81, 135, 83, 135, 135,
- 135, 135, 135, 135, 135, 92, 93, 95, 135, 135,
- 135, 135, 135, 135, 102, 135, 104, 135, 118, 119,
- 8, 135, 135, 135, 135, 135, 135, 24, 135, 135,
- 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
- 135, 135, 135, 45, 46, 47, 135, 51, 135, 54,
- 55, 135, 135, 135, 67, 71, 75, 76, 135, 135,
- 135, 82, 135, 135, 86, 135, 135, 135, 91, 135,
- 135, 135, 135, 99, 135, 135, 103, 135, 135, 135,
- 14, 135, 135, 135, 135, 25, 135, 28, 135, 135,
-
- 135, 135, 33, 135, 135, 135, 38, 135, 43, 135,
- 135, 53, 56, 135, 135, 135, 135, 135, 135, 85,
- 135, 88, 135, 135, 135, 97, 98, 100, 135, 135,
- 135, 13, 135, 135, 135, 135, 135, 20, 135, 31,
- 32, 135, 135, 135, 135, 44, 48, 58, 135, 135,
- 79, 80, 135, 135, 135, 135, 135, 101, 135, 135,
- 135, 135, 135, 135, 135, 30, 135, 135, 37, 135,
- 59, 135, 135, 135, 90, 135, 135, 135, 12, 135,
- 135, 135, 23, 135, 34, 135, 135, 77, 135, 135,
- 94, 135, 105, 135, 135, 135, 26, 36, 135, 78,
-
- 84, 135, 135, 135, 17, 18, 135, 135, 96, 135,
- 135, 135, 135, 135, 87, 135, 42, 16, 0
+ 0, 0, 143, 2, 2, 141, 141, 140, 139, 141,
+ 118, 114, 117, 114, 114, 137, 110, 107, 111, 136,
+ 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
+ 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
+ 136, 136, 136, 115, 4, 5, 5, 3, 133, 133,
+ 130, 134, 134, 128, 135, 135, 132, 1, 140, 108,
+ 138, 137, 137, 137, 0, 112, 109, 113, 136, 136,
+ 136, 136, 10, 136, 136, 136, 21, 136, 136, 136,
+ 136, 136, 136, 136, 136, 136, 136, 116, 136, 136,
+
+ 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
+ 136, 61, 136, 136, 136, 136, 136, 136, 136, 136,
+ 136, 73, 74, 136, 136, 136, 136, 136, 136, 136,
+ 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
+ 136, 136, 136, 136, 136, 136, 4, 5, 3, 133,
+ 129, 134, 127, 127, 119, 121, 122, 123, 124, 125,
+ 126, 127, 135, 131, 138, 137, 0, 137, 6, 7,
+ 136, 9, 11, 136, 136, 15, 136, 136, 136, 136,
+ 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
+ 136, 136, 136, 136, 41, 136, 136, 136, 136, 136,
+
+ 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
+ 57, 136, 63, 136, 136, 136, 136, 136, 69, 136,
+ 72, 136, 136, 136, 136, 136, 136, 136, 136, 136,
+ 136, 136, 136, 136, 89, 90, 136, 136, 136, 136,
+ 136, 136, 136, 136, 136, 136, 136, 136, 136, 119,
+ 121, 120, 136, 136, 136, 136, 136, 136, 19, 22,
+ 136, 136, 136, 27, 136, 136, 29, 136, 136, 136,
+ 136, 35, 136, 136, 39, 40, 136, 136, 136, 136,
+ 136, 136, 136, 49, 50, 136, 52, 136, 136, 136,
+ 136, 136, 60, 62, 64, 65, 66, 136, 68, 70,
+
+ 136, 136, 136, 136, 136, 81, 136, 83, 136, 136,
+ 136, 136, 136, 136, 136, 93, 94, 96, 136, 136,
+ 136, 136, 136, 136, 103, 136, 105, 136, 119, 120,
+ 8, 136, 136, 136, 136, 136, 136, 24, 136, 136,
+ 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
+ 136, 136, 136, 45, 46, 47, 136, 51, 136, 54,
+ 55, 136, 136, 136, 67, 71, 75, 76, 136, 136,
+ 136, 82, 136, 136, 86, 136, 136, 136, 92, 136,
+ 136, 136, 136, 100, 136, 136, 104, 136, 136, 136,
+ 14, 136, 136, 136, 136, 25, 136, 28, 136, 136,
+
+ 136, 136, 33, 136, 136, 136, 38, 136, 43, 136,
+ 136, 53, 56, 136, 136, 136, 136, 136, 136, 85,
+ 136, 88, 136, 136, 136, 98, 99, 101, 136, 136,
+ 136, 13, 136, 136, 136, 136, 136, 20, 136, 31,
+ 32, 136, 136, 136, 136, 44, 48, 58, 136, 136,
+ 79, 80, 136, 136, 136, 136, 136, 102, 136, 136,
+ 136, 136, 136, 136, 136, 30, 136, 136, 37, 136,
+ 59, 136, 136, 136, 91, 136, 136, 136, 12, 136,
+ 136, 136, 23, 136, 34, 136, 136, 77, 136, 136,
+ 95, 136, 106, 136, 136, 136, 26, 36, 136, 78,
+
+ 84, 136, 136, 136, 17, 18, 136, 136, 97, 136,
+ 136, 136, 136, 136, 87, 136, 42, 16, 0
} ;
static yyconst YY_CHAR yy_ec[256] =
@@ -900,7 +900,7 @@ static yyconst flex_int16_t yy_chk[1229] =
} ;
/* Table of booleans, true if rule could match eol. */
-static yyconst flex_int32_t yy_rule_can_match_eol[142] =
+static yyconst flex_int32_t yy_rule_can_match_eol[143] =
{ 0,
0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -908,8 +908,8 @@ static yyconst flex_int32_t yy_rule_can_match_eol[142] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0,
- 0, 0, };
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1,
+ 0, 0, 0, };
/* The intent behind this definition is that it'll catch
* any uses of REJECT which flex missed.
@@ -1858,92 +1858,92 @@ return TOKEN_SET;
case 90:
YY_RULE_SETUP
#line 251 "../SqlLexer.lpp"
-return TOKEN_SMALLINT;
+return TOKEN_SMA;
YY_BREAK
case 91:
YY_RULE_SETUP
#line 252 "../SqlLexer.lpp"
-return TOKEN_TABLE;
+return TOKEN_SMALLINT;
YY_BREAK
case 92:
YY_RULE_SETUP
#line 253 "../SqlLexer.lpp"
-return TOKEN_THEN;
+return TOKEN_TABLE;
YY_BREAK
case 93:
YY_RULE_SETUP
#line 254 "../SqlLexer.lpp"
-return TOKEN_TIME;
+return TOKEN_THEN;
YY_BREAK
case 94:
YY_RULE_SETUP
#line 255 "../SqlLexer.lpp"
-return TOKEN_TIMESTAMP;
+return TOKEN_TIME;
YY_BREAK
case 95:
YY_RULE_SETUP
#line 256 "../SqlLexer.lpp"
-return TOKEN_TRUE;
+return TOKEN_TIMESTAMP;
YY_BREAK
case 96:
YY_RULE_SETUP
#line 257 "../SqlLexer.lpp"
-return TOKEN_TUPLESAMPLE;
+return TOKEN_TRUE;
YY_BREAK
case 97:
YY_RULE_SETUP
#line 258 "../SqlLexer.lpp"
-return TOKEN_UNIQUE;
+return TOKEN_TUPLESAMPLE;
YY_BREAK
case 98:
YY_RULE_SETUP
#line 259 "../SqlLexer.lpp"
-return TOKEN_UPDATE;
+return TOKEN_UNIQUE;
YY_BREAK
case 99:
YY_RULE_SETUP
#line 260 "../SqlLexer.lpp"
-return TOKEN_USING;
+return TOKEN_UPDATE;
YY_BREAK
case 100:
YY_RULE_SETUP
#line 261 "../SqlLexer.lpp"
-return TOKEN_VALUES;
+return TOKEN_USING;
YY_BREAK
case 101:
YY_RULE_SETUP
#line 262 "../SqlLexer.lpp"
-return TOKEN_VARCHAR;
+return TOKEN_VALUES;
YY_BREAK
case 102:
YY_RULE_SETUP
#line 263 "../SqlLexer.lpp"
-return TOKEN_WHEN;
+return TOKEN_VARCHAR;
YY_BREAK
case 103:
YY_RULE_SETUP
#line 264 "../SqlLexer.lpp"
-return TOKEN_WHERE;
+return TOKEN_WHEN;
YY_BREAK
case 104:
YY_RULE_SETUP
#line 265 "../SqlLexer.lpp"
-return TOKEN_WITH;
+return TOKEN_WHERE;
YY_BREAK
case 105:
YY_RULE_SETUP
#line 266 "../SqlLexer.lpp"
-return TOKEN_YEARMONTH;
+return TOKEN_WITH;
YY_BREAK
case 106:
YY_RULE_SETUP
-#line 268 "../SqlLexer.lpp"
-return TOKEN_EQ;
+#line 267 "../SqlLexer.lpp"
+return TOKEN_YEARMONTH;
YY_BREAK
case 107:
YY_RULE_SETUP
#line 269 "../SqlLexer.lpp"
-return TOKEN_NEQ;
+return TOKEN_EQ;
YY_BREAK
case 108:
YY_RULE_SETUP
@@ -1953,56 +1953,61 @@ return TOKEN_NEQ;
case 109:
YY_RULE_SETUP
#line 271 "../SqlLexer.lpp"
-return TOKEN_LT;
+return TOKEN_NEQ;
YY_BREAK
case 110:
YY_RULE_SETUP
#line 272 "../SqlLexer.lpp"
-return TOKEN_GT;
+return TOKEN_LT;
YY_BREAK
case 111:
YY_RULE_SETUP
#line 273 "../SqlLexer.lpp"
-return TOKEN_LEQ;
+return TOKEN_GT;
YY_BREAK
case 112:
YY_RULE_SETUP
#line 274 "../SqlLexer.lpp"
-return TOKEN_GEQ;
+return TOKEN_LEQ;
YY_BREAK
case 113:
YY_RULE_SETUP
-#line 276 "../SqlLexer.lpp"
-return yytext[0];
+#line 275 "../SqlLexer.lpp"
+return TOKEN_GEQ;
YY_BREAK
case 114:
YY_RULE_SETUP
#line 277 "../SqlLexer.lpp"
return yytext[0];
YY_BREAK
+case 115:
+YY_RULE_SETUP
+#line 278 "../SqlLexer.lpp"
+return yytext[0];
+ YY_BREAK
/**
* Quoted strings. Prefacing a string with an 'e' or 'E' causes escape
* sequences to be processed (as in PostgreSQL).
**/
-case 115:
+case 116:
YY_RULE_SETUP
-#line 283 "../SqlLexer.lpp"
+#line 284 "../SqlLexer.lpp"
{
yylval->string_value_ = new quickstep::ParseString(yylloc->first_line, yylloc->first_column);
BEGIN(CONDITION_STRING_SINGLE_QUOTED_ESCAPED);
}
YY_BREAK
-case 116:
+case 117:
YY_RULE_SETUP
-#line 288 "../SqlLexer.lpp"
+#line 289 "../SqlLexer.lpp"
{
yylval->string_value_ = new quickstep::ParseString(yylloc->first_line, yylloc->first_column);
BEGIN(CONDITION_STRING_SINGLE_QUOTED);
}
YY_BREAK
-case 117:
+case 118:
YY_RULE_SETUP
-#line 293 "../SqlLexer.lpp"
+#line 294 "../SqlLexer.lpp"
{
yylval->string_value_ = new quickstep::ParseString(yylloc->first_line, yylloc->first_column);
BEGIN(CONDITION_STRING_DOUBLE_QUOTED);
@@ -2014,7 +2019,7 @@ YY_RULE_SETUP
case YY_STATE_EOF(CONDITION_STRING_SINGLE_QUOTED):
case YY_STATE_EOF(CONDITION_STRING_SINGLE_QUOTED_ESCAPED):
case YY_STATE_EOF(CONDITION_STRING_DOUBLE_QUOTED):
-#line 302 "../SqlLexer.lpp"
+#line 303 "../SqlLexer.lpp"
{
delete yylval->string_value_;
BEGIN(INITIAL);
@@ -2025,9 +2030,9 @@ case YY_STATE_EOF(CONDITION_STRING_DOUBLE_QUOTED):
/* Process escape sequences. */
-case 118:
+case 119:
YY_RULE_SETUP
-#line 312 "../SqlLexer.lpp"
+#line 313 "../SqlLexer.lpp"
{
/* Octal code */
unsigned int code;
@@ -2041,9 +2046,9 @@ YY_RULE_SETUP
yylval->string_value_->push_back(code);
}
YY_BREAK
-case 119:
+case 120:
YY_RULE_SETUP
-#line 324 "../SqlLexer.lpp"
+#line 325 "../SqlLexer.lpp"
{
/* Hexadecimal code */
unsigned int code;
@@ -2051,9 +2056,9 @@ YY_RULE_SETUP
yylval->string_value_->push_back(code);
}
YY_BREAK
-case 120:
+case 121:
YY_RULE_SETUP
-#line 330 "../SqlLexer.lpp"
+#line 331 "../SqlLexer.lpp"
{
/* A numeric escape sequence that isn't correctly specified. */
delete yylval->string_value_;
@@ -2062,58 +2067,58 @@ YY_RULE_SETUP
return TOKEN_LEX_ERROR;
}
YY_BREAK
-case 121:
+case 122:
YY_RULE_SETUP
-#line 337 "../SqlLexer.lpp"
+#line 338 "../SqlLexer.lpp"
{
/* Backspace */
yylval->string_value_->push_back('\b');
}
YY_BREAK
-case 122:
+case 123:
YY_RULE_SETUP
-#line 341 "../SqlLexer.lpp"
+#line 342 "../SqlLexer.lpp"
{
/* Form-feed */
yylval->string_value_->push_back('\f');
}
YY_BREAK
-case 123:
+case 124:
YY_RULE_SETUP
-#line 345 "../SqlLexer.lpp"
+#line 346 "../SqlLexer.lpp"
{
/* Newline */
yylval->string_value_->push_back('\n');
}
YY_BREAK
-case 124:
+case 125:
YY_RULE_SETUP
-#line 349 "../SqlLexer.lpp"
+#line 350 "../SqlLexer.lpp"
{
/* Carriage-return */
yylval->string_value_->push_back('\r');
}
YY_BREAK
-case 125:
+case 126:
YY_RULE_SETUP
-#line 353 "../SqlLexer.lpp"
+#line 354 "../SqlLexer.lpp"
{
/* Horizontal Tab */
yylval->string_value_->push_back('\t');
}
YY_BREAK
-case 126:
-/* rule 126 can match eol */
+case 127:
+/* rule 127 can match eol */
YY_RULE_SETUP
-#line 357 "../SqlLexer.lpp"
+#line 358 "../SqlLexer.lpp"
{
/* Any other character (including actual newline or carriage return) */
yylval->string_value_->push_back(yytext[1]);
}
YY_BREAK
-case 127:
+case 128:
YY_RULE_SETUP
-#line 361 "../SqlLexer.lpp"
+#line 362 "../SqlLexer.lpp"
{
/* This should only be encountered right before an EOF. */
delete yylval->string_value_;
@@ -2124,17 +2129,17 @@ YY_RULE_SETUP
YY_BREAK
-case 128:
+case 129:
YY_RULE_SETUP
-#line 371 "../SqlLexer.lpp"
+#line 372 "../SqlLexer.lpp"
{
/* Two quotes in a row become a single quote (this is specified by the SQL standard). */
yylval->string_value_->push_back('\'');
}
YY_BREAK
-case 129:
+case 130:
YY_RULE_SETUP
-#line 375 "../SqlLexer.lpp"
+#line 376 "../SqlLexer.lpp"
{
/* End string */
BEGIN(CONDITION_SQL);
@@ -2143,17 +2148,17 @@ YY_RULE_SETUP
YY_BREAK
-case 130:
+case 131:
YY_RULE_SETUP
-#line 383 "../SqlLexer.lpp"
+#line 384 "../SqlLexer.lpp"
{
/* Two quotes in a row become a single quote (this is specified by the SQL standard). */
yylval->string_value_->push_back('"');
}
YY_BREAK
-case 131:
+case 132:
YY_RULE_SETUP
-#line 387 "../SqlLexer.lpp"
+#line 388 "../SqlLexer.lpp"
{
/* End string */
BEGIN(CONDITION_SQL);
@@ -2161,94 +2166,94 @@ YY_RULE_SETUP
}
YY_BREAK
-case 132:
-/* rule 132 can match eol */
+case 133:
+/* rule 133 can match eol */
YY_RULE_SETUP
-#line 394 "../SqlLexer.lpp"
+#line 395 "../SqlLexer.lpp"
{
/* Scan up to a quote. */
yylval->string_value_->append(yytext, yyleng);
}
YY_BREAK
-case 133:
-/* rule 133 can match eol */
+case 134:
+/* rule 134 can match eol */
YY_RULE_SETUP
-#line 399 "../SqlLexer.lpp"
+#line 400 "../SqlLexer.lpp"
{
/* Scan up to a quote or escape sequence. */
yylval->string_value_->append(yytext, yyleng);
}
YY_BREAK
-case 134:
-/* rule 134 can match eol */
+case 135:
+/* rule 135 can match eol */
YY_RULE_SETUP
-#line 404 "../SqlLexer.lpp"
+#line 405 "../SqlLexer.lpp"
{
/* Scan up to a quote. */
yylval->string_value_->append(yytext, yyleng);
}
YY_BREAK
-case 135:
+case 136:
YY_RULE_SETUP
-#line 410 "../SqlLexer.lpp"
+#line 411 "../SqlLexer.lpp"
{
yylval->string_value_ = new quickstep::ParseString(
yylloc->first_line, yylloc->first_column, std::string(yytext, yyleng));
return TOKEN_NAME;
}
YY_BREAK
-case 136:
+case 137:
YY_RULE_SETUP
-#line 416 "../SqlLexer.lpp"
+#line 417 "../SqlLexer.lpp"
{
yylval->numeric_literal_value_ = new quickstep::NumericParseLiteralValue(
yylloc->first_line, yylloc->first_column, yytext);
return TOKEN_UNSIGNED_NUMVAL;
}
YY_BREAK
-case 137:
+case 138:
YY_RULE_SETUP
-#line 422 "../SqlLexer.lpp"
+#line 423 "../SqlLexer.lpp"
/* comment */
YY_BREAK
-case 138:
-/* rule 138 can match eol */
+case 139:
+/* rule 139 can match eol */
YY_RULE_SETUP
-#line 424 "../SqlLexer.lpp"
+#line 425 "../SqlLexer.lpp"
{ yycolumn = 0; }
YY_BREAK
-case 139:
+case 140:
YY_RULE_SETUP
-#line 426 "../SqlLexer.lpp"
+#line 427 "../SqlLexer.lpp"
; /* ignore white space */
YY_BREAK
/* CONDITION_SQL */
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(CONDITION_COMMAND):
case YY_STATE_EOF(CONDITION_SQL):
-#line 430 "../SqlLexer.lpp"
+#line 431 "../SqlLexer.lpp"
{
/* All conditions except for mutli-state string extracting conditions. */
BEGIN(INITIAL);
return TOKEN_EOF;
}
YY_BREAK
-case 140:
+case 141:
YY_RULE_SETUP
-#line 436 "../SqlLexer.lpp"
+#line 437 "../SqlLexer.lpp"
{
BEGIN(INITIAL);
quickstep_yyerror(NULL, yyscanner, NULL, "illegal character");
return TOKEN_LEX_ERROR;
}
YY_BREAK
-case 141:
+case 142:
YY_RULE_SETUP
-#line 442 "../SqlLexer.lpp"
+#line 443 "../SqlLexer.lpp"
YY_FATAL_ERROR( "flex scanner jammed" );
YY_BREAK
-#line 2252 "SqlLexer_gen.cpp"
+#line 2257 "SqlLexer_gen.cpp"
case YY_END_OF_BUFFER:
{
@@ -3409,7 +3414,7 @@ void quickstep_yyfree (void * ptr , yyscan_t yyscanner)
#define YYTABLES_NAME "yytables"
-#line 442 "../SqlLexer.lpp"
+#line 443 "../SqlLexer.lpp"
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/57e12d53/parser/preprocessed/SqlLexer_gen.hpp
----------------------------------------------------------------------
diff --git a/parser/preprocessed/SqlLexer_gen.hpp b/parser/preprocessed/SqlLexer_gen.hpp
index f454e7b..287c93b 100644
--- a/parser/preprocessed/SqlLexer_gen.hpp
+++ b/parser/preprocessed/SqlLexer_gen.hpp
@@ -360,7 +360,7 @@ extern int quickstep_yylex \
#undef YY_DECL
#endif
-#line 442 "../SqlLexer.lpp"
+#line 443 "../SqlLexer.lpp"
#line 367 "SqlLexer_gen.hpp"