Added hook (not actual code) to BitWeaving. (#169) * Added bitweaving as a module.
* Regenerated preprocessed parser files. * Modified validate_cmake script to allow ignored sections of code. Project: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/commit/cbd169e5 Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/cbd169e5 Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/cbd169e5 Branch: refs/heads/master Commit: cbd169e5a455b6a96e82b57614dabbbd59f7b0a7 Parents: d372584 Author: Marc S <[email protected]> Authored: Sat Apr 16 18:12:42 2016 -0500 Committer: Jignesh Patel <[email protected]> Committed: Sat Apr 16 18:12:42 2016 -0500 ---------------------------------------------------------------------- .gitmodules | 3 + CMakeLists.txt | 7 + expressions/predicate/PredicateCost.hpp | 14 +- parser/ParseIndexProperties.cpp | 1 + parser/ParseIndexProperties.hpp | 76 + parser/ParseStatement.hpp | 8 + parser/SqlLexer.lpp | 1 + parser/SqlParser.ypp | 8 +- parser/preprocessed/SqlLexer_gen.cpp | 972 +++---- parser/preprocessed/SqlLexer_gen.hpp | 2 +- parser/preprocessed/SqlParser_gen.cpp | 3031 +++++++++++----------- parser/preprocessed/SqlParser_gen.hpp | 185 +- parser/tests/Index.test | 9 + query_optimizer/CMakeLists.txt | 1 + query_optimizer/ExecutionGenerator.cpp | 3 +- storage/CMakeLists.txt | 140 + storage/IndexSubBlockDescriptionFactory.hpp | 9 +- storage/StorageBlock.cpp | 28 +- storage/StorageBlockInfo.hpp | 2 + storage/StorageBlockLayout.proto | 2 + storage/StorageConfig.h.in | 1 + storage/SubBlockTypeRegistry.cpp | 22 + storage/SubBlockTypeRegistry.hpp | 4 + validate_cmakelists.py | 24 +- 24 files changed, 2460 insertions(+), 2093 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/cbd169e5/.gitmodules ---------------------------------------------------------------------- diff --git a/.gitmodules b/.gitmodules index 7671b11..cf380b5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "third_party/googletest"] path = third_party/googletest url = https://github.com/google/googletest +[submodule "storage/bitweaving"] + path = storage/bitweaving + url = https://github.com/UWQuickstep/bitweaving.git http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/cbd169e5/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/CMakeLists.txt b/CMakeLists.txt index 869d43c..642925f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -645,6 +645,13 @@ if (ENABLE_HDFS) include_directories(${LIBHDFS3_INCLUDE_DIR}) endif() +# Check if the BitWeaving index is included. +if(EXISTS "${PROJECT_SOURCE_DIR}/storage/bitweaving/BitWeavingIndexSubBlock.hpp") + set(QUICKSTEP_HAVE_BITWEAVING TRUE) +else() + set(QUICKSTEP_HAVE_BITWEAVING FALSE) +endif() + # Add TMB, but only enable the PureMemory implementation. set(ENABLE_PUREMEMORY ON CACHE BOOL "Enable PureMemory TMB") set(ENABLE_LEVELDB OFF CACHE BOOL "Enable LevelDB TMB") http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/cbd169e5/expressions/predicate/PredicateCost.hpp ---------------------------------------------------------------------- diff --git a/expressions/predicate/PredicateCost.hpp b/expressions/predicate/PredicateCost.hpp index 68b44fa..b83f64c 100644 --- a/expressions/predicate/PredicateCost.hpp +++ b/expressions/predicate/PredicateCost.hpp @@ -35,12 +35,14 @@ namespace predicate_cost { // preference for different predicate-evaluation methods. In the future, we may // want to use statistics to get more accurate cost estimation. static constexpr predicate_cost_t kConstantTime = 0; -static constexpr predicate_cost_t kBinarySearch = 1; -static constexpr predicate_cost_t kTreeSearch = 2; -static constexpr predicate_cost_t kCompressedColumnScan = 3; -static constexpr predicate_cost_t kColumnScan = 4; -static constexpr predicate_cost_t kCompressedRowScan = 5; -static constexpr predicate_cost_t kRowScan = 6; +static constexpr predicate_cost_t kBitWeavingVScan = 1; +static constexpr predicate_cost_t kBitWeavingHScan = 2; +static constexpr predicate_cost_t kBinarySearch = 3; +static constexpr predicate_cost_t kTreeSearch = 4; +static constexpr predicate_cost_t kCompressedColumnScan = 5; +static constexpr predicate_cost_t kColumnScan = 6; +static constexpr predicate_cost_t kCompressedRowScan = 7; +static constexpr predicate_cost_t kRowScan = 8; static constexpr predicate_cost_t kInfinite = std::numeric_limits<predicate_cost_t>::max(); } // namespace predicate_cost http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/cbd169e5/parser/ParseIndexProperties.cpp ---------------------------------------------------------------------- diff --git a/parser/ParseIndexProperties.cpp b/parser/ParseIndexProperties.cpp index 08790b7..fe88513 100644 --- a/parser/ParseIndexProperties.cpp +++ b/parser/ParseIndexProperties.cpp @@ -19,6 +19,7 @@ namespace quickstep { // Initialize constants for various index properties. + const char *BitWeavingIndexProperties::kBitWeavingType = "type"; const char *BloomFilterIndexProperties::kBloomFilterSizeInBytes = "size"; const char *BloomFilterIndexProperties::kBloomFilterNumHashes = "num_hashes"; const char *BloomFilterIndexProperties::kBloomFilterProjectElementCount = "projected_element_count"; http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/cbd169e5/parser/ParseIndexProperties.hpp ---------------------------------------------------------------------- diff --git a/parser/ParseIndexProperties.hpp b/parser/ParseIndexProperties.hpp index b34346c..9ca1419 100644 --- a/parser/ParseIndexProperties.hpp +++ b/parser/ParseIndexProperties.hpp @@ -52,6 +52,8 @@ class IndexProperties { kUnimplemented, kDuplicateKey, kInvalidKey, + kInvalidValue, + kTypeIsNotString, kSizeIsFloat, kSizeIsNegative, kNumHashesIsFloat, @@ -173,6 +175,80 @@ class IndexProperties { }; /** + * @brief Implementation of index properties for a BitWeaving Index (H or V). + */ +class BitWeavingIndexProperties : public IndexProperties { + public: + static const char *kBitWeavingType; // is of type string. + + /** + * @brief Constructor. + **/ + BitWeavingIndexProperties() + : IndexProperties(new IndexSubBlockDescription()) { + // Default to BITWEAVING_V, custom properties can change this to H. + index_sub_block_description_->set_sub_block_type(IndexSubBlockDescription::BITWEAVING_V); + } + + ~BitWeavingIndexProperties() override { + } + + std::string getReasonForInvalidIndexDescription() const override { + switch (invalid_index_type_) { + case InvalidIndexType::kNone: + return ""; + case InvalidIndexType::kDuplicateKey: // Fall through. + case InvalidIndexType::kInvalidKey: + return "The only valid property for BitWeaving is TYPE."; + case InvalidIndexType::kTypeIsNotString: // Fall through. + case InvalidIndexType::kInvalidValue: + return "The only valid values for TYPE are V or H."; + default: + return "Unknown reason"; + } + } + + bool addCustomProperties(const PtrList<ParseKeyValue> *key_value_list) override { + if (key_value_list->size() == 0u) { + // No properties specified. + return true; + } else if (key_value_list->size() == 1u) { + const ParseKeyValue &key_value = *key_value_list->begin(); + if (key_value.getKeyValueType() != ParseKeyValue::KeyValueType::kStringString) { + setIndexDescriptionAsInvalid(InvalidIndexType::kTypeIsNotString, &key_value); + return false; + } + const std::string key = ToLower(key_value.key()->value()); + const std::string value = ToLower( + static_cast<const ParseKeyStringValue&>(key_value).key()->value()); + if (key.compare(kBitWeavingType) == 0) { + if (value.compare("h") == 0) { + index_sub_block_description_->set_sub_block_type(IndexSubBlockDescription::BITWEAVING_H); + return true; + } else if (value.compare("v") != 0) { + setIndexDescriptionAsInvalid(InvalidIndexType::kInvalidValue, &key_value); + return false; + } else { + // If V was specified, then we do nothing because it's set to V by default. + return true; + } + } else { + // Incorrect key specified. + setIndexDescriptionAsInvalid(InvalidIndexType::kInvalidKey, &key_value); + return false; + } + } else { + // More than one key. This must be an error. + invalid_index_type_ = InvalidIndexType::kDuplicateKey; + return false; + } + } + + private: + DISALLOW_COPY_AND_ASSIGN(BitWeavingIndexProperties); +}; + +/** * @brief Implementation of index properties for Bloom Filter Index */ class BloomFilterIndexProperties : public IndexProperties { http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/cbd169e5/parser/ParseStatement.hpp ---------------------------------------------------------------------- diff --git a/parser/ParseStatement.hpp b/parser/ParseStatement.hpp index 643643d..65acc68 100644 --- a/parser/ParseStatement.hpp +++ b/parser/ParseStatement.hpp @@ -345,6 +345,10 @@ class ParseStatementCreateIndex : public ParseStatement { inline_field_names->push_back("index_type"); const int index_type_enum_val = std::stoi(index_type_->value()); switch (index_type_enum_val) { + case IndexSubBlockType::kBitWeavingV: // Fall through. + case IndexSubBlockType::kBitWeavingH: + inline_field_values->push_back("bitweaving"); + break; case IndexSubBlockType::kCSBTree: inline_field_values->push_back("cs_b_tree"); break; @@ -385,6 +389,10 @@ class ParseStatementCreateIndex : public ParseStatement { void initializeIndexType() { const int index_type_enum_val = std::stoi(index_type_->value()); switch (index_type_enum_val) { + case IndexSubBlockType::kBitWeavingV: // Fall through. + case IndexSubBlockType::kBitWeavingH: + index_properties_.reset(new BitWeavingIndexProperties()); + break; case IndexSubBlockType::kBloomFilter: index_properties_.reset(new BloomFilterIndexProperties()); break; http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/cbd169e5/parser/SqlLexer.lpp ---------------------------------------------------------------------- diff --git a/parser/SqlLexer.lpp b/parser/SqlLexer.lpp index 4ee50ec..5c2e221 100644 --- a/parser/SqlLexer.lpp +++ b/parser/SqlLexer.lpp @@ -174,6 +174,7 @@ unsigned_numeric_literal {exact_numeric_literal}|{approximate_numeric_literal} "between" return TOKEN_BETWEEN; "bigint" return TOKEN_BIGINT; "bit" return TOKEN_BIT; + "bitweaving" return TOKEN_BITWEAVING; "blockproperties" return TOKEN_BLOCKPROPERTIES; "blocksample" return TOKEN_BLOCKSAMPLE; "bloomfilter" return TOKEN_BLOOM_FILTER; http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/cbd169e5/parser/SqlParser.ypp ---------------------------------------------------------------------- diff --git a/parser/SqlParser.ypp b/parser/SqlParser.ypp index 70db649..0cf4590 100644 --- a/parser/SqlParser.ypp +++ b/parser/SqlParser.ypp @@ -238,6 +238,7 @@ void NotSupported(const YYLTYPE *location, yyscan_t yyscanner, const std::string %token TOKEN_ASC; %token TOKEN_BIGINT; %token TOKEN_BIT; +%token TOKEN_BITWEAVING; %token TOKEN_BLOCKPROPERTIES; %token TOKEN_BLOCKSAMPLE; %token TOKEN_BLOOM_FILTER; @@ -985,7 +986,12 @@ key_integer_value: }; index_type: - TOKEN_BLOOM_FILTER { + TOKEN_BITWEAVING { + // Defaults to BitWeavingV, but IndexProperties can change this to H. + $$ = new quickstep::ParseString(@1.first_line, @1.first_column, + std::to_string(quickstep::IndexSubBlockType::kBitWeavingV)); + } + | TOKEN_BLOOM_FILTER { $$ = new quickstep::ParseString(@1.first_line, @1.first_column, std::to_string(quickstep::IndexSubBlockType::kBloomFilter)); } http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/cbd169e5/parser/preprocessed/SqlLexer_gen.cpp ---------------------------------------------------------------------- diff --git a/parser/preprocessed/SqlLexer_gen.cpp b/parser/preprocessed/SqlLexer_gen.cpp index 4175e20..d00d51f 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 143 -#define YY_END_OF_BUFFER 144 +#define YY_NUM_RULES 144 +#define YY_END_OF_BUFFER 145 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -390,65 +390,66 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[520] = +static yyconst flex_int16_t yy_accept[527] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 144, 2, 2, 142, 142, 141, 140, 142, - 119, 115, 118, 115, 115, 138, 111, 108, 112, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 116, 4, 5, 5, 3, 134, 134, - 131, 135, 135, 129, 136, 136, 133, 1, 141, 109, - 139, 138, 138, 138, 0, 113, 110, 114, 137, 137, - 137, 137, 10, 137, 137, 137, 21, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 117, 137, 137, - - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 54, 62, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 74, 75, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 4, 5, 3, 134, - 130, 135, 128, 128, 120, 122, 123, 124, 125, 126, - 127, 128, 136, 132, 139, 138, 0, 138, 6, 7, - 137, 9, 11, 137, 137, 15, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 41, 137, 137, 137, 137, 137, - - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 58, 137, 64, 137, 137, 137, 137, 137, 70, 137, - 73, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 90, 91, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 120, - 122, 121, 137, 137, 137, 137, 137, 137, 19, 22, - 137, 137, 137, 27, 137, 137, 29, 137, 137, 137, - 137, 35, 137, 137, 39, 40, 137, 137, 137, 137, - 137, 137, 137, 49, 50, 137, 52, 137, 137, 137, - 137, 137, 61, 63, 65, 66, 67, 137, 69, 71, - - 137, 137, 137, 137, 137, 82, 137, 84, 137, 137, - 137, 137, 137, 137, 137, 94, 95, 97, 137, 137, - 137, 137, 137, 137, 104, 137, 106, 137, 120, 121, - 8, 137, 137, 137, 137, 137, 137, 24, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 45, 46, 47, 137, 51, 137, 55, - 56, 137, 137, 137, 68, 72, 76, 77, 137, 137, - 137, 83, 137, 137, 87, 137, 137, 137, 93, 137, - 137, 137, 137, 101, 137, 137, 105, 137, 137, 137, - 14, 137, 137, 137, 137, 25, 137, 28, 137, 137, - - 137, 137, 33, 137, 137, 137, 38, 137, 43, 137, - 137, 53, 57, 137, 137, 137, 137, 137, 137, 86, - 137, 89, 137, 137, 137, 99, 100, 102, 137, 137, - 137, 13, 137, 137, 137, 137, 137, 20, 137, 31, - 32, 137, 137, 137, 137, 44, 48, 59, 137, 137, - 80, 81, 137, 137, 137, 137, 137, 103, 137, 137, - 137, 137, 137, 137, 137, 30, 137, 137, 37, 137, - 60, 137, 137, 137, 92, 137, 137, 137, 12, 137, - 137, 137, 23, 137, 34, 137, 137, 78, 137, 137, - 96, 137, 107, 137, 137, 137, 26, 36, 137, 79, - - 85, 137, 137, 137, 17, 18, 137, 137, 98, 137, - 137, 137, 137, 137, 88, 137, 42, 16, 0 + 0, 0, 145, 2, 2, 143, 143, 142, 141, 143, + 120, 116, 119, 116, 116, 139, 112, 109, 113, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 117, 4, 5, 5, 3, 135, 135, + 132, 136, 136, 130, 137, 137, 134, 1, 142, 110, + 140, 139, 139, 139, 0, 114, 111, 115, 138, 138, + 138, 138, 10, 138, 138, 138, 22, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 118, 138, 138, + + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 55, 63, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 75, 76, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 4, 5, 3, 135, + 131, 136, 129, 129, 121, 123, 124, 125, 126, 127, + 128, 129, 137, 133, 140, 139, 0, 139, 6, 7, + 138, 9, 11, 138, 138, 15, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 42, 138, 138, 138, 138, 138, + + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 59, 138, 65, 138, 138, 138, 138, 138, 71, 138, + 74, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 91, 92, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 121, + 123, 122, 138, 138, 138, 138, 138, 138, 138, 20, + 23, 138, 138, 138, 28, 138, 138, 30, 138, 138, + 138, 138, 36, 138, 138, 40, 41, 138, 138, 138, + 138, 138, 138, 138, 50, 51, 138, 53, 138, 138, + 138, 138, 138, 62, 64, 66, 67, 68, 138, 70, + + 72, 138, 138, 138, 138, 138, 83, 138, 85, 138, + 138, 138, 138, 138, 138, 138, 95, 96, 98, 138, + 138, 138, 138, 138, 138, 105, 138, 107, 138, 121, + 122, 8, 138, 138, 138, 138, 138, 138, 138, 25, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 46, 47, 48, 138, 52, + 138, 56, 57, 138, 138, 138, 69, 73, 77, 78, + 138, 138, 138, 84, 138, 138, 88, 138, 138, 138, + 94, 138, 138, 138, 138, 102, 138, 138, 106, 138, + 138, 138, 14, 138, 138, 138, 138, 138, 26, 138, + + 29, 138, 138, 138, 138, 34, 138, 138, 138, 39, + 138, 44, 138, 138, 54, 58, 138, 138, 138, 138, + 138, 138, 87, 138, 90, 138, 138, 138, 100, 101, + 103, 138, 138, 138, 13, 138, 138, 138, 138, 138, + 138, 21, 138, 32, 33, 138, 138, 138, 138, 45, + 49, 60, 138, 138, 81, 82, 138, 138, 138, 138, + 138, 104, 138, 138, 138, 138, 138, 138, 138, 138, + 31, 138, 138, 38, 138, 61, 138, 138, 138, 93, + 138, 138, 138, 12, 138, 138, 138, 138, 24, 138, + 35, 138, 138, 79, 138, 138, 97, 138, 108, 16, + + 138, 138, 138, 27, 37, 138, 80, 86, 138, 138, + 138, 18, 19, 138, 138, 99, 138, 138, 138, 138, + 138, 89, 138, 43, 17, 0 } ; static yyconst YY_CHAR yy_ec[256] = @@ -495,139 +496,141 @@ static yyconst YY_CHAR yy_meta[72] = 8 } ; -static yyconst flex_uint16_t yy_base[535] = +static yyconst flex_uint16_t yy_base[542] = { 0, 0, 1, 46, 0, 117, 163, 2, 3, 128, 132, - 6, 10, 260, 1157, 1157, 0, 1157, 13, 1157, 241, - 1157, 1157, 1157, 239, 6, 130, 4, 1157, 202, 124, + 6, 10, 260, 1177, 1177, 0, 1177, 13, 1177, 241, + 1177, 1177, 1177, 239, 6, 130, 4, 1177, 202, 124, 161, 170, 178, 207, 260, 92, 110, 161, 97, 108, 219, 0, 153, 221, 176, 108, 232, 171, 276, 272, - 129, 221, 177, 1157, 184, 4, 19, 0, 0, 0, - 146, 0, 0, 340, 0, 0, 145, 0, 22, 1157, - 0, 249, 284, 334, 18, 1157, 1157, 1157, 0, 232, + 129, 221, 177, 1177, 184, 4, 19, 0, 0, 0, + 146, 0, 0, 340, 0, 0, 145, 0, 22, 1177, + 0, 249, 284, 334, 18, 1177, 1177, 1177, 0, 232, 262, 234, 270, 267, 285, 278, 0, 276, 307, 331, - 291, 307, 299, 347, 313, 312, 325, 1157, 325, 345, + 291, 307, 299, 347, 313, 312, 325, 1177, 325, 345, 348, 343, 343, 338, 342, 347, 352, 358, 362, 378, 394, 0, 381, 366, 382, 396, 392, 390, 387, 397, 404, 0, 407, 392, 397, 398, 408, 409, 407, 447, 415, 400, 437, 434, 453, 451, 445, 438, 444, 452, 458, 454, 453, 461, 447, 467, 148, 29, 0, 0, - 1157, 0, 1157, 1157, 22, 24, 1157, 1157, 1157, 1157, - 1157, 0, 0, 1157, 0, 474, 26, 28, 0, 0, - 467, 0, 468, 451, 466, 0, 478, 471, 462, 495, - 478, 487, 482, 510, 492, 508, 505, 514, 511, 514, - 498, 517, 505, 518, 0, 523, 506, 508, 510, 511, - - 530, 527, 520, 522, 516, 530, 530, 546, 551, 552, - 559, 551, 0, 549, 550, 566, 563, 566, 0, 563, - 0, 571, 572, 558, 576, 568, 562, 576, 572, 582, - 583, 581, 98, 585, 0, 579, 580, 581, 591, 592, - 597, 597, 614, 608, 602, 624, 614, 621, 612, 30, - 125, 0, 613, 619, 629, 621, 625, 624, 0, 638, - 629, 628, 622, 0, 625, 628, 627, 635, 628, 630, - 640, 649, 646, 655, 0, 0, 656, 653, 679, 676, - 665, 666, 678, 0, 0, 672, 0, 675, 666, 673, - 674, 686, 0, 0, 0, 0, 0, 674, 0, 676, - - 679, 680, 690, 695, 702, 0, 700, 0, 688, 683, - 688, 707, 709, 701, 720, 0, 711, 0, 726, 717, - 719, 736, 739, 737, 0, 741, 0, 734, 136, 1157, - 0, 744, 744, 730, 736, 745, 750, 0, 742, 739, - 753, 756, 753, 762, 752, 760, 757, 755, 756, 766, - 778, 769, 786, 0, 0, 0, 789, 0, 790, 0, - 0, 781, 797, 781, 0, 0, 0, 0, 784, 791, - 788, 0, 802, 792, 0, 804, 790, 802, 0, 793, - 795, 810, 811, 0, 800, 819, 0, 806, 813, 809, - 0, 806, 826, 819, 809, 0, 840, 0, 841, 834, - - 842, 835, 0, 839, 856, 858, 0, 93, 0, 842, - 849, 0, 0, 846, 864, 857, 847, 843, 855, 0, - 859, 0, 858, 872, 873, 0, 0, 0, 859, 864, - 865, 0, 865, 868, 870, 880, 877, 0, 882, 0, - 0, 894, 895, 885, 893, 0, 0, 0, 901, 902, - 0, 0, 915, 910, 900, 908, 909, 0, 903, 917, - 909, 910, 907, 911, 916, 0, 913, 918, 0, 915, - 0, 922, 932, 925, 0, 923, 924, 935, 0, 939, - 933, 952, 0, 942, 0, 956, 952, 952, 956, 967, - 0, 965, 0, 960, 974, 962, 0, 0, 972, 0, - - 0, 962, 978, 964, 0, 0, 971, 982, 0, 979, - 982, 972, 988, 975, 0, 976, 0, 0, 1157, 1041, - 1051, 1061, 1071, 1081, 1085, 1088, 1094, 1102, 1112, 1122, - 1132, 1142, 1147, 1149 + 1177, 0, 1177, 1177, 22, 24, 1177, 1177, 1177, 1177, + 1177, 0, 0, 1177, 0, 474, 26, 28, 0, 0, + 467, 0, 468, 451, 466, 453, 478, 475, 480, 496, + 485, 488, 486, 511, 493, 509, 506, 515, 512, 515, + 499, 518, 507, 519, 0, 524, 507, 511, 511, 512, + + 531, 528, 521, 525, 517, 531, 542, 551, 552, 559, + 560, 555, 0, 550, 551, 567, 564, 567, 0, 564, + 0, 572, 573, 559, 578, 569, 563, 577, 575, 583, + 584, 582, 98, 586, 0, 580, 583, 582, 592, 604, + 602, 598, 621, 609, 606, 625, 615, 622, 613, 30, + 125, 0, 614, 620, 630, 622, 632, 628, 627, 0, + 640, 631, 632, 626, 0, 627, 630, 629, 637, 632, + 634, 642, 662, 663, 661, 0, 0, 664, 661, 684, + 681, 667, 668, 680, 0, 0, 674, 0, 677, 668, + 675, 676, 688, 0, 0, 0, 0, 0, 677, 0, + + 679, 681, 682, 694, 699, 704, 0, 702, 0, 690, + 687, 692, 709, 722, 718, 726, 0, 719, 0, 734, + 722, 724, 738, 741, 739, 0, 743, 0, 736, 136, + 1177, 0, 746, 746, 732, 752, 739, 750, 754, 0, + 747, 744, 758, 759, 756, 765, 757, 765, 762, 769, + 774, 784, 791, 778, 798, 0, 0, 0, 795, 0, + 796, 0, 0, 784, 800, 784, 0, 0, 0, 0, + 787, 794, 791, 0, 805, 795, 0, 808, 794, 806, + 0, 796, 800, 815, 816, 0, 803, 822, 0, 809, + 818, 814, 0, 807, 823, 845, 838, 834, 0, 854, + + 0, 854, 847, 849, 842, 0, 843, 860, 862, 0, + 93, 0, 846, 853, 0, 0, 850, 868, 862, 852, + 848, 860, 0, 865, 0, 864, 878, 879, 0, 0, + 0, 863, 868, 871, 0, 877, 872, 886, 892, 900, + 903, 0, 908, 0, 0, 912, 909, 899, 901, 0, + 0, 0, 909, 907, 0, 0, 920, 915, 905, 913, + 914, 0, 909, 923, 917, 916, 919, 916, 919, 924, + 0, 921, 926, 0, 923, 0, 930, 940, 944, 0, + 946, 947, 962, 0, 964, 970, 964, 972, 0, 958, + 0, 972, 962, 962, 963, 974, 0, 972, 0, 0, + + 967, 982, 970, 0, 0, 980, 0, 0, 970, 988, + 974, 0, 0, 981, 991, 0, 988, 991, 983, 997, + 984, 0, 996, 0, 0, 1177, 1061, 1071, 1081, 1091, + 1101, 1105, 1108, 1114, 1122, 1132, 1142, 1152, 1162, 1167, + 1169 } ; -static yyconst flex_int16_t yy_def[535] = +static yyconst flex_int16_t yy_def[542] = { 0, - 520, 520, 519, 3, 521, 521, 522, 522, 523, 523, - 524, 524, 519, 519, 519, 525, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 526, + 527, 527, 526, 3, 528, 528, 529, 529, 530, 530, + 531, 531, 526, 526, 526, 532, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 526, 526, 526, 526, 534, 535, 535, + 526, 536, 536, 537, 538, 538, 526, 532, 526, 526, + 539, 526, 526, 526, 526, 526, 526, 526, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 526, 533, 533, + + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 526, 526, 534, 535, + 526, 536, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 540, 538, 526, 539, 526, 526, 526, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 526, + 526, 541, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 526, + 526, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 0, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 519, 519, 519, 519, 527, 528, 528, - 519, 529, 529, 530, 531, 531, 519, 525, 519, 519, - 532, 519, 519, 519, 519, 519, 519, 519, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 519, 526, 526, - - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 519, 519, 527, 528, - 519, 529, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 533, 531, 519, 532, 519, 519, 519, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 519, - 519, 534, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 519, 519, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - - 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 0, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519 + 526 } ; -static yyconst flex_uint16_t yy_nxt[1229] = +static yyconst flex_uint16_t yy_nxt[1249] = { 0, - 519, 519, 15, 15, 60, 60, 148, 148, 66, 61, - 61, 67, 66, 519, 69, 67, 69, 72, 72, 76, - 77, 148, 148, 69, 519, 69, 167, 167, 519, 168, + 526, 526, 15, 15, 60, 60, 148, 148, 66, 61, + 61, 67, 66, 526, 69, 67, 69, 72, 72, 76, + 77, 148, 148, 69, 526, 69, 167, 167, 526, 168, 168, 148, 148, 250, 251, 251, 251, 168, 168, 168, - 168, 329, 251, 519, 16, 16, 17, 18, 19, 18, + 168, 330, 251, 526, 16, 16, 17, 18, 19, 18, 20, 21, 22, 23, 22, 24, 25, 26, 26, 17, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, @@ -637,8 +640,8 @@ static yyconst flex_uint16_t yy_nxt[1229] = 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 42, 53, 17, 55, 56, 57, 17, 17, 17, 17, 17, 109, 110, 113, 114, - 63, 17, 17, 17, 63, 61, 251, 251, 445, 61, - 73, 74, 74, 312, 80, 128, 143, 251, 251, 147, + 63, 17, 17, 17, 63, 61, 251, 251, 449, 61, + 73, 74, 74, 313, 80, 128, 143, 251, 251, 147, 164, 75, 81, 151, 82, 109, 110, 113, 114, 83, 17, 17, 17, 17, 55, 56, 57, 17, 17, 17, 17, 17, 64, 80, 128, 143, 64, 17, 17, 17, @@ -650,17 +653,17 @@ static yyconst flex_uint16_t yy_nxt[1229] = 111, 133, 125, 89, 93, 112, 126, 146, 94, 134, 90, 87, 95, 91, 92, 99, 115, 100, 96, 127, 116, 97, 101, 121, 117, 144, 145, 102, 71, 129, - 118, 122, 169, 130, 172, 123, 70, 131, 124, 519, - 72, 72, 519, 132, 99, 115, 100, 519, 519, 116, + 118, 122, 169, 130, 172, 123, 70, 131, 124, 526, + 72, 72, 526, 132, 99, 115, 100, 526, 526, 116, 75, 101, 121, 117, 144, 145, 102, 103, 129, 118, 122, 169, 130, 172, 123, 104, 131, 124, 105, 173, 170, 106, 132, 135, 107, 166, 166, 108, 171, 75, 136, 137, 140, 174, 141, 75, 103, 142, 175, 177, - 138, 178, 184, 139, 104, 519, 519, 105, 173, 170, + 138, 178, 184, 139, 104, 526, 526, 105, 173, 170, 106, 176, 135, 107, 179, 185, 108, 171, 180, 136, 137, 140, 174, 141, 75, 186, 142, 175, 177, 138, - 178, 184, 139, 154, 73, 74, 74, 519, 191, 192, + 178, 184, 139, 154, 73, 74, 74, 526, 191, 192, 176, 155, 156, 179, 185, 75, 193, 180, 157, 181, 194, 182, 158, 183, 186, 195, 187, 196, 197, 188, 159, 199, 200, 201, 160, 189, 161, 191, 192, 198, @@ -671,59 +674,59 @@ static yyconst flex_uint16_t yy_nxt[1229] = 202, 190, 203, 206, 208, 204, 207, 214, 215, 216, 218, 217, 205, 219, 209, 220, 221, 222, 223, 210, 211, 224, 225, 226, 227, 212, 213, 228, 232, 233, - 519, 519, 206, 208, 519, 207, 214, 215, 216, 218, + 526, 526, 206, 208, 526, 207, 214, 215, 216, 218, 217, 236, 219, 209, 220, 221, 222, 223, 210, 211, 224, 225, 226, 227, 229, 234, 228, 232, 233, 230, 231, 237, 238, 235, 239, 240, 241, 242, 243, 244, 236, 245, 247, 248, 249, 166, 166, 246, 253, 254, - 255, 256, 259, 229, 234, 75, 260, 257, 230, 231, + 255, 256, 257, 229, 234, 75, 260, 258, 230, 231, - 237, 238, 235, 239, 240, 241, 242, 243, 244, 258, + 237, 238, 235, 239, 240, 241, 242, 243, 244, 259, 245, 247, 248, 249, 261, 262, 246, 253, 254, 255, - 256, 259, 263, 264, 75, 260, 257, 265, 266, 267, - 268, 269, 270, 272, 273, 274, 271, 275, 258, 276, + 256, 257, 263, 264, 75, 260, 258, 265, 266, 267, + 268, 269, 270, 271, 273, 274, 275, 272, 259, 276, 277, 278, 279, 261, 262, 280, 281, 282, 283, 284, 285, 263, 264, 286, 287, 288, 265, 266, 267, 268, - 269, 270, 272, 273, 274, 271, 275, 289, 276, 277, + 269, 270, 271, 273, 274, 275, 272, 289, 276, 277, 278, 279, 290, 291, 280, 281, 282, 283, 284, 285, - 292, 294, 286, 287, 288, 295, 296, 297, 298, 299, - 293, 300, 301, 302, 303, 304, 289, 305, 306, 307, - - 308, 290, 291, 309, 310, 311, 313, 314, 315, 292, - 294, 316, 317, 318, 295, 296, 297, 298, 299, 293, - 300, 301, 302, 303, 304, 319, 305, 306, 307, 308, - 320, 321, 309, 310, 311, 313, 314, 315, 322, 323, - 316, 317, 318, 324, 325, 327, 328, 331, 326, 332, + 292, 293, 286, 287, 288, 295, 296, 297, 298, 299, + 300, 294, 301, 302, 303, 304, 289, 305, 306, 307, + + 308, 290, 291, 309, 310, 311, 312, 314, 315, 292, + 293, 316, 317, 318, 295, 296, 297, 298, 299, 300, + 294, 301, 302, 303, 304, 319, 305, 306, 307, 308, + 320, 321, 309, 310, 311, 312, 314, 315, 322, 323, + 316, 317, 318, 324, 325, 326, 328, 329, 332, 327, 333, 334, 335, 336, 319, 337, 338, 339, 340, 320, 321, 341, 342, 343, 344, 345, 346, 322, 323, 347, - 348, 349, 324, 325, 327, 328, 331, 326, 332, 333, + 348, 349, 324, 325, 326, 328, 329, 332, 327, 333, 334, 335, 336, 350, 337, 338, 339, 340, 351, 352, 341, 342, 343, 344, 345, 346, 353, 354, 347, 348, 349, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 365, 366, 350, 367, 368, 369, 370, 351, 352, 371, - 364, 372, 373, 374, 375, 353, 354, 376, 377, 378, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 365, - 366, 379, 367, 368, 369, 370, 380, 381, 371, 364, - 372, 373, 374, 375, 382, 383, 376, 377, 378, 384, - 385, 386, 387, 388, 389, 390, 391, 394, 392, 395, - 379, 393, 396, 397, 398, 380, 381, 399, 400, 401, + 364, 365, 350, 367, 368, 369, 370, 351, 352, 371, + 372, 373, 366, 374, 375, 353, 354, 376, 377, 378, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 379, 367, 368, 369, 370, 380, 381, 371, 372, + 373, 366, 374, 375, 382, 383, 376, 377, 378, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 379, 395, 397, 398, 396, 380, 381, 399, 400, 401, 402, 403, 404, 382, 383, 405, 406, 407, 384, 385, - 386, 387, 388, 389, 390, 391, 394, 392, 395, 408, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 408, - 393, 396, 397, 398, 409, 410, 399, 400, 401, 402, + 395, 397, 398, 396, 409, 410, 399, 400, 401, 402, 403, 404, 411, 412, 405, 406, 407, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 408, 424, 425, 426, 427, 409, 410, 428, 429, 430, 431, 432, 433, 411, 412, 434, 435, 436, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 437, 424, 425, 426, 427, 438, 439, 428, 429, 430, 431, 432, 433, - 440, 441, 434, 435, 436, 442, 443, 444, 446, 447, - 448, 449, 450, 451, 452, 453, 437, 454, 455, 456, + 440, 441, 434, 435, 436, 442, 443, 444, 445, 446, + 447, 448, 450, 451, 452, 453, 437, 454, 455, 456, 457, 438, 439, 458, 459, 460, 461, 462, 463, 440, - 441, 464, 465, 466, 442, 443, 444, 446, 447, 448, - 449, 450, 451, 452, 453, 467, 454, 455, 456, 457, + 441, 464, 465, 466, 442, 443, 444, 445, 446, 447, + 448, 450, 451, 452, 453, 467, 454, 455, 456, 457, 468, 469, 458, 459, 460, 461, 462, 463, 470, 471, 464, 465, 466, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 467, 483, 484, 485, 486, 468, @@ -734,33 +737,35 @@ static yyconst flex_uint16_t yy_nxt[1229] = 495, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 496, 512, 513, 514, 515, 497, 498, 516, - 517, 518, 519, 519, 519, 499, 500, 519, 519, 519, + 517, 518, 519, 520, 521, 499, 500, 522, 523, 524, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 519, 512, 513, 514, 515, 519, 519, 516, 517, - 518, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 511, 525, 512, 513, 514, 515, 526, 526, 516, 517, + 518, 519, 520, 521, 526, 526, 522, 523, 524, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 525, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 68, 68, 79, 79, 79, 519, 79, 149, 149, - - 149, 149, 150, 150, 150, 519, 150, 150, 150, 150, - 150, 150, 152, 152, 152, 519, 152, 152, 152, 152, - 519, 152, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 163, 163, 519, 163, 163, 163, 163, 163, - 163, 163, 165, 519, 165, 165, 165, 165, 165, 165, - 165, 165, 252, 252, 330, 330, 13, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519 + 65, 68, 68, 79, 79, 79, 526, 79, 149, 149, + 149, 149, 150, 150, 150, 526, 150, 150, 150, 150, + 150, 150, 152, 152, 152, 526, 152, 152, 152, 152, + 526, 152, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 163, 163, 526, 163, 163, 163, 163, 163, + 163, 163, 165, 526, 165, 165, 165, 165, 165, 165, + 165, 165, 252, 252, 331, 331, 13, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526 } ; -static yyconst flex_int16_t yy_chk[1229] = +static yyconst flex_int16_t yy_chk[1249] = { 0, 0, 0, 1, 2, 7, 8, 56, 56, 11, 7, 8, 11, 12, 0, 18, 12, 18, 25, 25, 27, @@ -776,8 +781,8 @@ static yyconst flex_int16_t yy_chk[1229] = 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 36, 37, 39, 40, - 9, 5, 5, 5, 10, 9, 251, 251, 408, 10, - 26, 26, 26, 233, 30, 46, 51, 329, 329, 147, + 9, 5, 5, 5, 10, 9, 251, 251, 411, 10, + 26, 26, 26, 233, 30, 46, 51, 330, 330, 147, 67, 26, 30, 61, 30, 36, 37, 39, 40, 30, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 9, 30, 46, 51, 10, 6, 6, 6, @@ -815,92 +820,94 @@ static yyconst flex_int16_t yy_chk[1229] = 125, 126, 127, 128, 130, 133, 129, 131, 132, 130, 130, 135, 136, 133, 137, 138, 139, 140, 141, 142, 134, 143, 144, 145, 146, 166, 166, 143, 171, 173, - 174, 175, 178, 130, 133, 166, 179, 177, 130, 130, + 174, 175, 176, 130, 133, 166, 178, 177, 130, 130, 135, 136, 133, 137, 138, 139, 140, 141, 142, 177, - 143, 144, 145, 146, 180, 181, 143, 171, 173, 174, - 175, 178, 182, 183, 166, 179, 177, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 189, 193, 177, 194, - 196, 197, 198, 180, 181, 199, 200, 201, 202, 203, - 204, 182, 183, 205, 206, 207, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 189, 193, 208, 194, 196, - 197, 198, 209, 210, 199, 200, 201, 202, 203, 204, - 211, 212, 205, 206, 207, 214, 215, 216, 217, 218, - 211, 220, 222, 223, 224, 225, 208, 226, 227, 228, - - 229, 209, 210, 230, 231, 232, 234, 236, 237, 211, - 212, 238, 239, 240, 214, 215, 216, 217, 218, 211, - 220, 222, 223, 224, 225, 241, 226, 227, 228, 229, - 242, 243, 230, 231, 232, 234, 236, 237, 244, 245, - 238, 239, 240, 246, 247, 248, 249, 253, 247, 254, - 255, 256, 257, 258, 241, 260, 261, 262, 263, 242, - 243, 265, 266, 267, 268, 269, 270, 244, 245, 271, - 272, 273, 246, 247, 248, 249, 253, 247, 254, 255, - 256, 257, 258, 274, 260, 261, 262, 263, 277, 278, - 265, 266, 267, 268, 269, 270, 279, 280, 271, 272, - - 273, 281, 282, 283, 286, 288, 289, 290, 291, 292, - 298, 300, 274, 301, 302, 303, 304, 277, 278, 305, - 292, 307, 309, 310, 311, 279, 280, 312, 313, 314, - 281, 282, 283, 286, 288, 289, 290, 291, 292, 298, - 300, 315, 301, 302, 303, 304, 317, 319, 305, 292, - 307, 309, 310, 311, 320, 321, 312, 313, 314, 322, - 323, 324, 326, 328, 332, 333, 334, 336, 335, 337, - 315, 335, 339, 340, 341, 317, 319, 342, 343, 344, - 345, 346, 347, 320, 321, 348, 349, 350, 322, 323, - 324, 326, 328, 332, 333, 334, 336, 335, 337, 351, - - 335, 339, 340, 341, 352, 353, 342, 343, 344, 345, - 346, 347, 357, 359, 348, 349, 350, 362, 363, 364, - 369, 370, 371, 373, 374, 376, 377, 378, 351, 380, - 381, 382, 383, 352, 353, 385, 386, 388, 389, 390, - 392, 357, 359, 393, 394, 395, 362, 363, 364, 369, - 370, 371, 373, 374, 376, 377, 378, 397, 380, 381, - 382, 383, 399, 400, 385, 386, 388, 389, 390, 392, - 401, 402, 393, 394, 395, 404, 405, 406, 410, 411, - 414, 415, 416, 417, 418, 419, 397, 421, 423, 424, - 425, 399, 400, 429, 430, 431, 433, 434, 435, 401, - - 402, 436, 437, 439, 404, 405, 406, 410, 411, 414, - 415, 416, 417, 418, 419, 442, 421, 423, 424, 425, - 443, 444, 429, 430, 431, 433, 434, 435, 445, 449, - 436, 437, 439, 450, 453, 454, 455, 456, 457, 459, - 460, 461, 462, 463, 442, 464, 465, 467, 468, 443, - 444, 470, 472, 473, 474, 476, 477, 445, 449, 478, - 480, 481, 450, 453, 454, 455, 456, 457, 459, 460, - 461, 462, 463, 482, 464, 465, 467, 468, 484, 486, - 470, 472, 473, 474, 476, 477, 487, 488, 478, 480, - 481, 489, 490, 492, 494, 495, 496, 499, 502, 503, - - 504, 507, 482, 508, 510, 511, 512, 484, 486, 513, - 514, 516, 0, 0, 0, 487, 488, 0, 0, 0, - 489, 490, 492, 494, 495, 496, 499, 502, 503, 504, - 507, 0, 508, 510, 511, 512, 0, 0, 513, 514, - 516, 520, 520, 520, 520, 520, 520, 520, 520, 520, - 520, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 522, 522, 522, 522, 522, 522, 522, 522, 522, - 522, 523, 523, 523, 523, 523, 523, 523, 523, 523, - 523, 524, 524, 524, 524, 524, 524, 524, 524, 524, - 524, 525, 525, 526, 526, 526, 0, 526, 527, 527, - - 527, 527, 528, 528, 528, 0, 528, 528, 528, 528, - 528, 528, 529, 529, 529, 0, 529, 529, 529, 529, - 0, 529, 530, 530, 530, 530, 530, 530, 530, 530, - 530, 530, 531, 531, 0, 531, 531, 531, 531, 531, - 531, 531, 532, 0, 532, 532, 532, 532, 532, 532, - 532, 532, 533, 533, 534, 534, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519 + 143, 144, 145, 146, 179, 180, 143, 171, 173, 174, + 175, 176, 181, 182, 166, 178, 177, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 189, 177, 193, + 194, 196, 197, 179, 180, 198, 199, 200, 201, 202, + 203, 181, 182, 204, 205, 206, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 189, 207, 193, 194, + 196, 197, 208, 209, 198, 199, 200, 201, 202, 203, + 210, 211, 204, 205, 206, 212, 214, 215, 216, 217, + 218, 211, 220, 222, 223, 224, 207, 225, 226, 227, + + 228, 208, 209, 229, 230, 231, 232, 234, 236, 210, + 211, 237, 238, 239, 212, 214, 215, 216, 217, 218, + 211, 220, 222, 223, 224, 240, 225, 226, 227, 228, + 241, 242, 229, 230, 231, 232, 234, 236, 243, 244, + 237, 238, 239, 245, 246, 247, 248, 249, 253, 247, + 254, 255, 256, 257, 240, 258, 259, 261, 262, 241, + 242, 263, 264, 266, 267, 268, 269, 243, 244, 270, + 271, 272, 245, 246, 247, 248, 249, 253, 247, 254, + 255, 256, 257, 273, 258, 259, 261, 262, 274, 275, + 263, 264, 266, 267, 268, 269, 278, 279, 270, 271, + + 272, 280, 281, 282, 283, 284, 287, 289, 290, 291, + 292, 293, 273, 299, 301, 302, 303, 274, 275, 304, + 305, 306, 293, 308, 310, 278, 279, 311, 312, 313, + 280, 281, 282, 283, 284, 287, 289, 290, 291, 292, + 293, 314, 299, 301, 302, 303, 315, 316, 304, 305, + 306, 293, 308, 310, 318, 320, 311, 312, 313, 321, + 322, 323, 324, 325, 327, 329, 333, 334, 335, 336, + 314, 337, 338, 339, 337, 315, 316, 341, 342, 343, + 344, 345, 346, 318, 320, 347, 348, 349, 321, 322, + 323, 324, 325, 327, 329, 333, 334, 335, 336, 350, + + 337, 338, 339, 337, 351, 352, 341, 342, 343, 344, + 345, 346, 353, 354, 347, 348, 349, 355, 359, 361, + 364, 365, 366, 371, 372, 373, 375, 376, 350, 378, + 379, 380, 382, 351, 352, 383, 384, 385, 387, 388, + 390, 353, 354, 391, 392, 394, 355, 359, 361, 364, + 365, 366, 371, 372, 373, 375, 376, 395, 378, 379, + 380, 382, 396, 397, 383, 384, 385, 387, 388, 390, + 398, 400, 391, 392, 394, 402, 403, 404, 405, 407, + 408, 409, 413, 414, 417, 418, 395, 419, 420, 421, + 422, 396, 397, 424, 426, 427, 428, 432, 433, 398, + + 400, 434, 436, 437, 402, 403, 404, 405, 407, 408, + 409, 413, 414, 417, 418, 438, 419, 420, 421, 422, + 439, 440, 424, 426, 427, 428, 432, 433, 441, 443, + 434, 436, 437, 446, 447, 448, 449, 453, 454, 457, + 458, 459, 460, 461, 438, 463, 464, 465, 466, 439, + 440, 467, 468, 469, 470, 472, 473, 441, 443, 475, + 477, 478, 446, 447, 448, 449, 453, 454, 457, 458, + 459, 460, 461, 479, 463, 464, 465, 466, 481, 482, + 467, 468, 469, 470, 472, 473, 483, 485, 475, 477, + 478, 486, 487, 488, 490, 492, 493, 494, 495, 496, + + 498, 501, 479, 502, 503, 506, 509, 481, 482, 510, + 511, 514, 515, 517, 518, 483, 485, 519, 520, 521, + 486, 487, 488, 490, 492, 493, 494, 495, 496, 498, + 501, 523, 502, 503, 506, 509, 0, 0, 510, 511, + 514, 515, 517, 518, 0, 0, 519, 520, 521, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 523, 527, 527, 527, 527, 527, 527, 527, 527, 527, + 527, 528, 528, 528, 528, 528, 528, 528, 528, 528, + 528, 529, 529, 529, 529, 529, 529, 529, 529, 529, + 529, 530, 530, 530, 530, 530, 530, 530, 530, 530, + + 530, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 532, 532, 533, 533, 533, 0, 533, 534, 534, + 534, 534, 535, 535, 535, 0, 535, 535, 535, 535, + 535, 535, 536, 536, 536, 0, 536, 536, 536, 536, + 0, 536, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 538, 538, 0, 538, 538, 538, 538, 538, + 538, 538, 539, 0, 539, 539, 539, 539, 539, 539, + 539, 539, 540, 540, 541, 541, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526 } ; /* Table of booleans, true if rule could match eol. */ -static yyconst flex_int32_t yy_rule_can_match_eol[144] = +static yyconst flex_int32_t yy_rule_can_match_eol[145] = { 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 +915,8 @@ static yyconst flex_int32_t yy_rule_can_match_eol[144] = 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, 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, 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. @@ -1025,7 +1032,7 @@ class UnaryOperation; -#line 1029 "SqlLexer_gen.cpp" +#line 1036 "SqlLexer_gen.cpp" #define INITIAL 0 #define CONDITION_SQL 1 @@ -1316,7 +1323,7 @@ YY_DECL #line 127 "../SqlLexer.lpp" -#line 1320 "SqlLexer_gen.cpp" +#line 1327 "SqlLexer_gen.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1343,13 +1350,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 520 ) + if ( yy_current_state >= 527 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_current_state != 519 ); + while ( yy_current_state != 526 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1488,37 +1495,37 @@ return TOKEN_BIT; case 16: YY_RULE_SETUP #line 177 "../SqlLexer.lpp" -return TOKEN_BLOCKPROPERTIES; +return TOKEN_BITWEAVING; YY_BREAK case 17: YY_RULE_SETUP #line 178 "../SqlLexer.lpp" -return TOKEN_BLOCKSAMPLE; +return TOKEN_BLOCKPROPERTIES; YY_BREAK case 18: YY_RULE_SETUP #line 179 "../SqlLexer.lpp" -return TOKEN_BLOOM_FILTER; +return TOKEN_BLOCKSAMPLE; YY_BREAK case 19: YY_RULE_SETUP #line 180 "../SqlLexer.lpp" -return TOKEN_CASE; +return TOKEN_BLOOM_FILTER; YY_BREAK case 20: YY_RULE_SETUP #line 181 "../SqlLexer.lpp" -return TOKEN_CSB_TREE; +return TOKEN_CASE; YY_BREAK case 21: YY_RULE_SETUP #line 182 "../SqlLexer.lpp" -return TOKEN_BY; +return TOKEN_CSB_TREE; YY_BREAK case 22: YY_RULE_SETUP #line 183 "../SqlLexer.lpp" -return TOKEN_CHARACTER; +return TOKEN_BY; YY_BREAK case 23: YY_RULE_SETUP @@ -1528,62 +1535,62 @@ return TOKEN_CHARACTER; case 24: YY_RULE_SETUP #line 185 "../SqlLexer.lpp" -return TOKEN_CHECK; +return TOKEN_CHARACTER; YY_BREAK case 25: YY_RULE_SETUP #line 186 "../SqlLexer.lpp" -return TOKEN_COLUMN; +return TOKEN_CHECK; YY_BREAK case 26: YY_RULE_SETUP #line 187 "../SqlLexer.lpp" -return TOKEN_CONSTRAINT; +return TOKEN_COLUMN; YY_BREAK case 27: YY_RULE_SETUP #line 188 "../SqlLexer.lpp" -return TOKEN_COPY; +return TOKEN_CONSTRAINT; YY_BREAK case 28: YY_RULE_SETUP #line 189 "../SqlLexer.lpp" -return TOKEN_CREATE; +return TOKEN_COPY; YY_BREAK case 29: YY_RULE_SETUP #line 190 "../SqlLexer.lpp" -return TOKEN_DATE; +return TOKEN_CREATE; YY_BREAK case 30: YY_RULE_SETUP #line 191 "../SqlLexer.lpp" -return TOKEN_DATETIME; +return TOKEN_DATE; YY_BREAK case 31: YY_RULE_SETUP #line 192 "../SqlLexer.lpp" -return TOKEN_DECIMAL; +return TOKEN_DATETIME; YY_BREAK case 32: YY_RULE_SETUP #line 193 "../SqlLexer.lpp" -return TOKEN_DEFAULT; +return TOKEN_DECIMAL; YY_BREAK case 33: YY_RULE_SETUP #line 194 "../SqlLexer.lpp" -return TOKEN_DELETE; +return TOKEN_DEFAULT; YY_BREAK case 34: YY_RULE_SETUP #line 195 "../SqlLexer.lpp" -return TOKEN_DELIMITER; +return TOKEN_DELETE; YY_BREAK case 35: YY_RULE_SETUP #line 196 "../SqlLexer.lpp" -return TOKEN_DESC; +return TOKEN_DELIMITER; YY_BREAK case 36: YY_RULE_SETUP @@ -1593,112 +1600,112 @@ return TOKEN_DESC; case 37: YY_RULE_SETUP #line 198 "../SqlLexer.lpp" -return TOKEN_DISTINCT; +return TOKEN_DESC; YY_BREAK case 38: YY_RULE_SETUP #line 199 "../SqlLexer.lpp" -return TOKEN_DOUBLE; +return TOKEN_DISTINCT; YY_BREAK case 39: YY_RULE_SETUP #line 200 "../SqlLexer.lpp" -return TOKEN_DROP; +return TOKEN_DOUBLE; YY_BREAK case 40: YY_RULE_SETUP #line 201 "../SqlLexer.lpp" -return TOKEN_ELSE; +return TOKEN_DROP; YY_BREAK case 41: YY_RULE_SETUP #line 202 "../SqlLexer.lpp" -return TOKEN_END; +return TOKEN_ELSE; YY_BREAK case 42: YY_RULE_SETUP #line 203 "../SqlLexer.lpp" -return TOKEN_ESCAPE_STRINGS; +return TOKEN_END; YY_BREAK case 43: YY_RULE_SETUP #line 204 "../SqlLexer.lpp" -return TOKEN_EXISTS; +return TOKEN_ESCAPE_STRINGS; YY_BREAK case 44: YY_RULE_SETUP #line 205 "../SqlLexer.lpp" -return TOKEN_EXTRACT; +return TOKEN_EXISTS; YY_BREAK case 45: YY_RULE_SETUP #line 206 "../SqlLexer.lpp" -return TOKEN_FALSE; +return TOKEN_EXTRACT; YY_BREAK case 46: YY_RULE_SETUP #line 207 "../SqlLexer.lpp" -return TOKEN_FIRST; +return TOKEN_FALSE; YY_BREAK case 47: YY_RULE_SETUP #line 208 "../SqlLexer.lpp" -return TOKEN_FLOAT; +return TOKEN_FIRST; YY_BREAK case 48: YY_RULE_SETUP #line 209 "../SqlLexer.lpp" -return TOKEN_FOREIGN; +return TOKEN_FLOAT; YY_BREAK case 49: YY_RULE_SETUP #line 210 "../SqlLexer.lpp" -return TOKEN_FROM; +return TOKEN_FOREIGN; YY_BREAK case 50: YY_RULE_SETUP #line 211 "../SqlLexer.lpp" -return TOKEN_FULL; +return TOKEN_FROM; YY_BREAK case 51: YY_RULE_SETUP #line 212 "../SqlLexer.lpp" -return TOKEN_GROUP; +return TOKEN_FULL; YY_BREAK case 52: YY_RULE_SETUP #line 213 "../SqlLexer.lpp" -return TOKEN_HASH; +return TOKEN_GROUP; YY_BREAK case 53: YY_RULE_SETUP #line 214 "../SqlLexer.lpp" -return TOKEN_HAVING; +return TOKEN_HASH; YY_BREAK case 54: YY_RULE_SETUP #line 215 "../SqlLexer.lpp" -return TOKEN_IN; +return TOKEN_HAVING; YY_BREAK case 55: YY_RULE_SETUP #line 216 "../SqlLexer.lpp" -return TOKEN_INDEX; +return TOKEN_IN; YY_BREAK case 56: YY_RULE_SETUP #line 217 "../SqlLexer.lpp" -return TOKEN_INNER; +return TOKEN_INDEX; YY_BREAK case 57: YY_RULE_SETUP #line 218 "../SqlLexer.lpp" -return TOKEN_INSERT; +return TOKEN_INNER; YY_BREAK case 58: YY_RULE_SETUP #line 219 "../SqlLexer.lpp" -return TOKEN_INTEGER; +return TOKEN_INSERT; YY_BREAK case 59: YY_RULE_SETUP @@ -1708,252 +1715,252 @@ return TOKEN_INTEGER; case 60: YY_RULE_SETUP #line 221 "../SqlLexer.lpp" -return TOKEN_INTERVAL; +return TOKEN_INTEGER; YY_BREAK case 61: YY_RULE_SETUP #line 222 "../SqlLexer.lpp" -return TOKEN_INTO; +return TOKEN_INTERVAL; YY_BREAK case 62: YY_RULE_SETUP #line 223 "../SqlLexer.lpp" -return TOKEN_IS; +return TOKEN_INTO; YY_BREAK case 63: YY_RULE_SETUP #line 224 "../SqlLexer.lpp" -return TOKEN_JOIN; +return TOKEN_IS; YY_BREAK case 64: YY_RULE_SETUP #line 225 "../SqlLexer.lpp" -return TOKEN_KEY; +return TOKEN_JOIN; YY_BREAK case 65: YY_RULE_SETUP #line 226 "../SqlLexer.lpp" -return TOKEN_LAST; +return TOKEN_KEY; YY_BREAK case 66: YY_RULE_SETUP #line 227 "../SqlLexer.lpp" -return TOKEN_LEFT; +return TOKEN_LAST; YY_BREAK case 67: YY_RULE_SETUP #line 228 "../SqlLexer.lpp" -return TOKEN_LIKE; +return TOKEN_LEFT; YY_BREAK case 68: YY_RULE_SETUP #line 229 "../SqlLexer.lpp" -return TOKEN_LIMIT; +return TOKEN_LIKE; YY_BREAK case 69: YY_RULE_SETUP #line 230 "../SqlLexer.lpp" -return TOKEN_LONG; +return TOKEN_LIMIT; YY_BREAK case 70: YY_RULE_SETUP #line 231 "../SqlLexer.lpp" -return TOKEN_NOT; +return TOKEN_LONG; YY_BREAK case 71: YY_RULE_SETUP #line 232 "../SqlLexer.lpp" -return TOKEN_NULL; +return TOKEN_NOT; YY_BREAK case 72: YY_RULE_SETUP #line 233 "../SqlLexer.lpp" -return TOKEN_NULLS; +return TOKEN_NULL; YY_BREAK case 73: YY_RULE_SETUP #line 234 "../SqlLexer.lpp" -return TOKEN_OFF; +return TOKEN_NULLS; YY_BREAK case 74: YY_RULE_SETUP #line 235 "../SqlLexer.lpp" -return TOKEN_ON; +return TOKEN_OFF; YY_BREAK case 75: YY_RULE_SETUP #line 236 "../SqlLexer.lpp" -return TOKEN_OR; +return TOKEN_ON; YY_BREAK case 76: YY_RULE_SETUP #line 237 "../SqlLexer.lpp" -return TOKEN_ORDER; +return TOKEN_OR; YY_BREAK case 77: YY_RULE_SETUP #line 238 "../SqlLexer.lpp" -return TOKEN_OUTER; +return TOKEN_ORDER; YY_BREAK case 78: YY_RULE_SETUP #line 239 "../SqlLexer.lpp" -return TOKEN_PARTITION; +return TOKEN_OUTER; YY_BREAK case 79: YY_RULE_SETUP #line 240 "../SqlLexer.lpp" -return TOKEN_PARTITIONS; +return TOKEN_PARTITION; YY_BREAK case 80: YY_RULE_SETUP #line 241 "../SqlLexer.lpp" -return TOKEN_PERCENT; +return TOKEN_PARTITIONS; YY_BREAK case 81: YY_RULE_SETUP #line 242 "../SqlLexer.lpp" -return TOKEN_PRIMARY; +return TOKEN_PERCENT; YY_BREAK case 82: YY_RULE_SETUP #line 243 "../SqlLexer.lpp" -return TOKEN_QUIT; +return TOKEN_PRIMARY; YY_BREAK case 83: YY_RULE_SETUP #line 244 "../SqlLexer.lpp" -return TOKEN_RANGE; +return TOKEN_QUIT; YY_BREAK case 84: YY_RULE_SETUP #line 245 "../SqlLexer.lpp" -return TOKEN_REAL; +return TOKEN_RANGE; YY_BREAK case 85: YY_RULE_SETUP #line 246 "../SqlLexer.lpp" -return TOKEN_REFERENCES; +return TOKEN_REAL; YY_BREAK case 86: YY_RULE_SETUP #line 247 "../SqlLexer.lpp" -return TOKEN_REGEXP; +return TOKEN_REFERENCES; YY_BREAK case 87: YY_RULE_SETUP #line 248 "../SqlLexer.lpp" -return TOKEN_RIGHT; +return TOKEN_REGEXP; YY_BREAK case 88: YY_RULE_SETUP #line 249 "../SqlLexer.lpp" -return TOKEN_ROW_DELIMITER; +return TOKEN_RIGHT; YY_BREAK case 89: YY_RULE_SETUP #line 250 "../SqlLexer.lpp" -return TOKEN_SELECT; +return TOKEN_ROW_DELIMITER; YY_BREAK case 90: YY_RULE_SETUP #line 251 "../SqlLexer.lpp" -return TOKEN_SET; +return TOKEN_SELECT; YY_BREAK case 91: YY_RULE_SETUP #line 252 "../SqlLexer.lpp" -return TOKEN_SMA; +return TOKEN_SET; YY_BREAK case 92: YY_RULE_SETUP #line 253 "../SqlLexer.lpp" -return TOKEN_SMALLINT; +return TOKEN_SMA; YY_BREAK case 93: YY_RULE_SETUP #line 254 "../SqlLexer.lpp" -return TOKEN_TABLE; +return TOKEN_SMALLINT; YY_BREAK case 94: YY_RULE_SETUP #line 255 "../SqlLexer.lpp" -return TOKEN_THEN; +return TOKEN_TABLE; YY_BREAK case 95: YY_RULE_SETUP #line 256 "../SqlLexer.lpp" -return TOKEN_TIME; +return TOKEN_THEN; YY_BREAK case 96: YY_RULE_SETUP #line 257 "../SqlLexer.lpp" -return TOKEN_TIMESTAMP; +return TOKEN_TIME; YY_BREAK case 97: YY_RULE_SETUP #line 258 "../SqlLexer.lpp" -return TOKEN_TRUE; +return TOKEN_TIMESTAMP; YY_BREAK case 98: YY_RULE_SETUP #line 259 "../SqlLexer.lpp" -return TOKEN_TUPLESAMPLE; +return TOKEN_TRUE; YY_BREAK case 99: YY_RULE_SETUP #line 260 "../SqlLexer.lpp" -return TOKEN_UNIQUE; +return TOKEN_TUPLESAMPLE; YY_BREAK case 100: YY_RULE_SETUP #line 261 "../SqlLexer.lpp" -return TOKEN_UPDATE; +return TOKEN_UNIQUE; YY_BREAK case 101: YY_RULE_SETUP #line 262 "../SqlLexer.lpp" -return TOKEN_USING; +return TOKEN_UPDATE; YY_BREAK case 102: YY_RULE_SETUP #line 263 "../SqlLexer.lpp" -return TOKEN_VALUES; +return TOKEN_USING; YY_BREAK case 103: YY_RULE_SETUP #line 264 "../SqlLexer.lpp" -return TOKEN_VARCHAR; +return TOKEN_VALUES; YY_BREAK case 104: YY_RULE_SETUP #line 265 "../SqlLexer.lpp" -return TOKEN_WHEN; +return TOKEN_VARCHAR; YY_BREAK case 105: YY_RULE_SETUP #line 266 "../SqlLexer.lpp" -return TOKEN_WHERE; +return TOKEN_WHEN; YY_BREAK case 106: YY_RULE_SETUP #line 267 "../SqlLexer.lpp" -return TOKEN_WITH; +return TOKEN_WHERE; YY_BREAK case 107: YY_RULE_SETUP #line 268 "../SqlLexer.lpp" -return TOKEN_YEARMONTH; +return TOKEN_WITH; YY_BREAK case 108: YY_RULE_SETUP -#line 270 "../SqlLexer.lpp" -return TOKEN_EQ; +#line 269 "../SqlLexer.lpp" +return TOKEN_YEARMONTH; YY_BREAK case 109: YY_RULE_SETUP #line 271 "../SqlLexer.lpp" -return TOKEN_NEQ; +return TOKEN_EQ; YY_BREAK case 110: YY_RULE_SETUP @@ -1963,56 +1970,61 @@ return TOKEN_NEQ; case 111: YY_RULE_SETUP #line 273 "../SqlLexer.lpp" -return TOKEN_LT; +return TOKEN_NEQ; YY_BREAK case 112: YY_RULE_SETUP #line 274 "../SqlLexer.lpp" -return TOKEN_GT; +return TOKEN_LT; YY_BREAK case 113: YY_RULE_SETUP #line 275 "../SqlLexer.lpp" -return TOKEN_LEQ; +return TOKEN_GT; YY_BREAK case 114: YY_RULE_SETUP #line 276 "../SqlLexer.lpp" -return TOKEN_GEQ; +return TOKEN_LEQ; YY_BREAK case 115: YY_RULE_SETUP -#line 278 "../SqlLexer.lpp" -return yytext[0]; +#line 277 "../SqlLexer.lpp" +return TOKEN_GEQ; YY_BREAK case 116: YY_RULE_SETUP #line 279 "../SqlLexer.lpp" return yytext[0]; YY_BREAK +case 117: +YY_RULE_SETUP +#line 280 "../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 117: +case 118: YY_RULE_SETUP -#line 285 "../SqlLexer.lpp" +#line 286 "../SqlLexer.lpp" { yylval->string_value_ = new quickstep::ParseString(yylloc->first_line, yylloc->first_column); BEGIN(CONDITION_STRING_SINGLE_QUOTED_ESCAPED); } YY_BREAK -case 118: +case 119: YY_RULE_SETUP -#line 290 "../SqlLexer.lpp" +#line 291 "../SqlLexer.lpp" { yylval->string_value_ = new quickstep::ParseString(yylloc->first_line, yylloc->first_column); BEGIN(CONDITION_STRING_SINGLE_QUOTED); } YY_BREAK -case 119: +case 120: YY_RULE_SETUP -#line 295 "../SqlLexer.lpp" +#line 296 "../SqlLexer.lpp" { yylval->string_value_ = new quickstep::ParseString(yylloc->first_line, yylloc->first_column); BEGIN(CONDITION_STRING_DOUBLE_QUOTED); @@ -2024,7 +2036,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 304 "../SqlLexer.lpp" +#line 305 "../SqlLexer.lpp" { delete yylval->string_value_; BEGIN(INITIAL); @@ -2035,9 +2047,9 @@ case YY_STATE_EOF(CONDITION_STRING_DOUBLE_QUOTED): /* Process escape sequences. */ -case 120: +case 121: YY_RULE_SETUP -#line 314 "../SqlLexer.lpp" +#line 315 "../SqlLexer.lpp" { /* Octal code */ unsigned int code; @@ -2051,9 +2063,9 @@ YY_RULE_SETUP yylval->string_value_->push_back(code); } YY_BREAK -case 121: +case 122: YY_RULE_SETUP -#line 326 "../SqlLexer.lpp" +#line 327 "../SqlLexer.lpp" { /* Hexadecimal code */ unsigned int code; @@ -2061,9 +2073,9 @@ YY_RULE_SETUP yylval->string_value_->push_back(code); } YY_BREAK -case 122: +case 123: YY_RULE_SETUP -#line 332 "../SqlLexer.lpp" +#line 333 "../SqlLexer.lpp" { /* A numeric escape sequence that isn't correctly specified. */ delete yylval->string_value_; @@ -2072,58 +2084,58 @@ YY_RULE_SETUP return TOKEN_LEX_ERROR; } YY_BREAK -case 123: +case 124: YY_RULE_SETUP -#line 339 "../SqlLexer.lpp" +#line 340 "../SqlLexer.lpp" { /* Backspace */ yylval->string_value_->push_back('\b'); } YY_BREAK -case 124: +case 125: YY_RULE_SETUP -#line 343 "../SqlLexer.lpp" +#line 344 "../SqlLexer.lpp" { /* Form-feed */ yylval->string_value_->push_back('\f'); } YY_BREAK -case 125: +case 126: YY_RULE_SETUP -#line 347 "../SqlLexer.lpp" +#line 348 "../SqlLexer.lpp" { /* Newline */ yylval->string_value_->push_back('\n'); } YY_BREAK -case 126: +case 127: YY_RULE_SETUP -#line 351 "../SqlLexer.lpp" +#line 352 "../SqlLexer.lpp" { /* Carriage-return */ yylval->string_value_->push_back('\r'); } YY_BREAK -case 127: +case 128: YY_RULE_SETUP -#line 355 "../SqlLexer.lpp" +#line 356 "../SqlLexer.lpp" { /* Horizontal Tab */ yylval->string_value_->push_back('\t'); } YY_BREAK -case 128: -/* rule 128 can match eol */ +case 129: +/* rule 129 can match eol */ YY_RULE_SETUP -#line 359 "../SqlLexer.lpp" +#line 360 "../SqlLexer.lpp" { /* Any other character (including actual newline or carriage return) */ yylval->string_value_->push_back(yytext[1]); } YY_BREAK -case 129: +case 130: YY_RULE_SETUP -#line 363 "../SqlLexer.lpp" +#line 364 "../SqlLexer.lpp" { /* This should only be encountered right before an EOF. */ delete yylval->string_value_; @@ -2134,17 +2146,17 @@ YY_RULE_SETUP YY_BREAK -case 130: +case 131: YY_RULE_SETUP -#line 373 "../SqlLexer.lpp" +#line 374 "../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 377 "../SqlLexer.lpp" +#line 378 "../SqlLexer.lpp" { /* End string */ BEGIN(CONDITION_SQL); @@ -2153,17 +2165,17 @@ YY_RULE_SETUP YY_BREAK -case 132: +case 133: YY_RULE_SETUP -#line 385 "../SqlLexer.lpp" +#line 386 "../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 133: +case 134: YY_RULE_SETUP -#line 389 "../SqlLexer.lpp" +#line 390 "../SqlLexer.lpp" { /* End string */ BEGIN(CONDITION_SQL); @@ -2171,94 +2183,94 @@ YY_RULE_SETUP } YY_BREAK -case 134: -/* rule 134 can match eol */ +case 135: +/* rule 135 can match eol */ YY_RULE_SETUP -#line 396 "../SqlLexer.lpp" +#line 397 "../SqlLexer.lpp" { /* Scan up to a quote. */ yylval->string_value_->append(yytext, yyleng); } YY_BREAK -case 135: -/* rule 135 can match eol */ +case 136: +/* rule 136 can match eol */ YY_RULE_SETUP -#line 401 "../SqlLexer.lpp" +#line 402 "../SqlLexer.lpp" { /* Scan up to a quote or escape sequence. */ yylval->string_value_->append(yytext, yyleng); } YY_BREAK -case 136: -/* rule 136 can match eol */ +case 137: +/* rule 137 can match eol */ YY_RULE_SETUP -#line 406 "../SqlLexer.lpp" +#line 407 "../SqlLexer.lpp" { /* Scan up to a quote. */ yylval->string_value_->append(yytext, yyleng); } YY_BREAK -case 137: +case 138: YY_RULE_SETUP -#line 412 "../SqlLexer.lpp" +#line 413 "../SqlLexer.lpp" { yylval->string_value_ = new quickstep::ParseString( yylloc->first_line, yylloc->first_column, std::string(yytext, yyleng)); return TOKEN_NAME; } YY_BREAK -case 138: +case 139: YY_RULE_SETUP -#line 418 "../SqlLexer.lpp" +#line 419 "../SqlLexer.lpp" { yylval->numeric_literal_value_ = new quickstep::NumericParseLiteralValue( yylloc->first_line, yylloc->first_column, yytext); return TOKEN_UNSIGNED_NUMVAL; } YY_BREAK -case 139: +case 140: YY_RULE_SETUP -#line 424 "../SqlLexer.lpp" +#line 425 "../SqlLexer.lpp" /* comment */ YY_BREAK -case 140: -/* rule 140 can match eol */ +case 141: +/* rule 141 can match eol */ YY_RULE_SETUP -#line 426 "../SqlLexer.lpp" +#line 427 "../SqlLexer.lpp" { yycolumn = 0; } YY_BREAK -case 141: +case 142: YY_RULE_SETUP -#line 428 "../SqlLexer.lpp" +#line 429 "../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 432 "../SqlLexer.lpp" +#line 433 "../SqlLexer.lpp" { /* All conditions except for mutli-state string extracting conditions. */ BEGIN(INITIAL); return TOKEN_EOF; } YY_BREAK -case 142: +case 143: YY_RULE_SETUP -#line 438 "../SqlLexer.lpp" +#line 439 "../SqlLexer.lpp" { BEGIN(INITIAL); quickstep_yyerror(NULL, yyscanner, NULL, "illegal character"); return TOKEN_LEX_ERROR; } YY_BREAK -case 143: +case 144: YY_RULE_SETUP -#line 444 "../SqlLexer.lpp" +#line 445 "../SqlLexer.lpp" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 2262 "SqlLexer_gen.cpp" +#line 2274 "SqlLexer_gen.cpp" case YY_END_OF_BUFFER: { @@ -2552,7 +2564,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 520 ) + if ( yy_current_state >= 527 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2581,11 +2593,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 520 ) + if ( yy_current_state >= 527 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 519); + yy_is_jam = (yy_current_state == 526); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -3419,7 +3431,7 @@ void quickstep_yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 444 "../SqlLexer.lpp" +#line 445 "../SqlLexer.lpp" http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/cbd169e5/parser/preprocessed/SqlLexer_gen.hpp ---------------------------------------------------------------------- diff --git a/parser/preprocessed/SqlLexer_gen.hpp b/parser/preprocessed/SqlLexer_gen.hpp index 39d4cc0..de44998 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 444 "../SqlLexer.lpp" +#line 445 "../SqlLexer.lpp" #line 367 "SqlLexer_gen.hpp"
