From c6060d2fe95c70f3c4d5909fc5f35f54dd9c3be6 Mon Sep 17 00:00:00 2001 From: Jin Hai Date: Tue, 14 May 2024 23:39:05 +0800 Subject: [PATCH] Refactor set command (#1206) ### What problem does this PR solve? As title. Issue link:#1180 ### Type of change - [x] Refactoring --------- Signed-off-by: Jin Hai --- src/common/status.cpp | 8 +- src/common/status.cppm | 2 + src/executor/operator/physical_command.cpp | 156 +- src/executor/operator/physical_show.cpp | 89 +- src/main/config.cppm | 3 +- src/main/infinity.cpp | 3 + src/main/options.cpp | 2 +- src/main/options.cppm | 2 +- src/main/query_context.cppm | 2 +- src/main/session.cppm | 3 +- src/main/variables.cpp | 2 +- src/main/variables.cppm | 2 +- src/parser/parser.cpp | 2325 ++++++++++---------- src/parser/parser.y | 36 +- src/parser/statement/command_statement.h | 1 + src/storage/meta/catalog.cpp | 44 + src/storage/meta/catalog.cppm | 66 +- src/unit_test/main/infinity.cpp | 2 +- 18 files changed, 1455 insertions(+), 1293 deletions(-) diff --git a/src/common/status.cpp b/src/common/status.cpp index ab304978cd..a9f4bb7a4e 100644 --- a/src/common/status.cpp +++ b/src/common/status.cpp @@ -99,9 +99,7 @@ Status Status::InvalidLogLevel(const String &log_level) { return Status(ErrorCode::kInvalidLogLevel, MakeUnique(fmt::format("Invalid log level: {}.", log_level))); } -Status Status::InvalidConfig(const String &detailed_info) { - return Status(ErrorCode::kInvalidConfig, MakeUnique(detailed_info)); -} +Status Status::InvalidConfig(const String &detailed_info) { return Status(ErrorCode::kInvalidConfig, MakeUnique(detailed_info)); } // 2. Auth error Status Status::WrongPasswd(const String &user_name) { @@ -365,6 +363,10 @@ Status Status::AggregateFunctionWithEmptyArgs() { return Status(ErrorCode::kAggregateFunctionWithEmptyArgs, MakeUnique("Aggregate function with empty arguments")); } +Status Status::InvalidCommand(const String &detailed_error) { + return Status(ErrorCode::kInvalidCommand, MakeUnique(fmt::format("Invalid command: {}", detailed_error))); +} + // 4. TXN fail Status Status::TxnRollback(u64 txn_id) { return Status(ErrorCode::kTxnRollback, MakeUnique(fmt::format("Transaction: {} is rollback", txn_id))); diff --git a/src/common/status.cppm b/src/common/status.cppm index eda19efc0f..6fdff00ffc 100644 --- a/src/common/status.cppm +++ b/src/common/status.cppm @@ -116,6 +116,7 @@ export enum class ErrorCode : long { kInvalidTopKType = 3073, kInvalidCreateOption = 3074, kInvalidDropOption = 3075, + kInvalidCommand = 3076, // 4. Txn fail kTxnRollback = 4001, @@ -249,6 +250,7 @@ public: static Status SegmentNotExist(const SegmentID &segment_id); static Status BlockNotExist(const BlockID &block_id); static Status AggregateFunctionWithEmptyArgs(); + static Status InvalidCommand(const String& detailed_error); // 4. TXN fail static Status TxnRollback(u64 txn_id); diff --git a/src/executor/operator/physical_command.cpp b/src/executor/operator/physical_command.cpp index d5f2c4ba67..62d0fd0a50 100644 --- a/src/executor/operator/physical_command.cpp +++ b/src/executor/operator/physical_command.cpp @@ -35,6 +35,7 @@ import config; import status; import infinity_exception; import compact_segments_task; +import variables; namespace infinity { @@ -50,76 +51,97 @@ bool PhysicalCommand::Execute(QueryContext *query_context, OperatorState *operat } case CommandType::kSet: { SetCmd *set_command = (SetCmd *)(command_info_.get()); - if (set_command->var_name() == enable_profiling_name) { - if (set_command->value_type() != SetVarType::kBool) { - RecoverableError(Status::DataTypeMismatch("Boolean", set_command->value_type_str())); + switch(set_command->scope()) { + case SetScope::kSession: { + SessionVariable session_var = VarUtil::GetSessionVarByName(set_command->var_name()); + switch(session_var) { + case SessionVariable::kEnableProfile: { + if (set_command->value_type() != SetVarType::kBool) { + RecoverableError(Status::DataTypeMismatch("Boolean", set_command->value_type_str())); + } + query_context->current_session()->SessionVariables()->enable_profile_ = set_command->value_bool(); + return true; + } + case SessionVariable::kInvalid: { + RecoverableError(Status::InvalidCommand(fmt::format("Unknown session variable: {}", set_command->var_name()))); + } + default: { + RecoverableError(Status::InvalidCommand(fmt::format("Session variable: {} is read-only", set_command->var_name()))); + } + } + break; } - query_context->current_session()->SessionVariables()->enable_profile_ = set_command->value_bool(); - return true; - } - - if (set_command->var_name() == profile_history_capacity_name) { - if (set_command->value_type() != SetVarType::kInteger) { - RecoverableError(Status::DataTypeMismatch("Integer", set_command->value_type_str())); - } - query_context->current_session()->SessionVariables()->profile_record_capacity_ = set_command->value_int(); - return true; - } - - if (set_command->var_name() == log_level) { - if (set_command->value_type() != SetVarType::kString) { - RecoverableError(Status::DataTypeMismatch("String", set_command->value_type_str())); - } - - if (set_command->scope() != SetScope::kGlobal) { - RecoverableError(Status::SyntaxError(fmt::format("log_level is a global config parameter.", set_command->var_name()))); - } - - if (set_command->value_str() == "trace") { - SetLogLevel(LogLevel::kTrace); - return true; - } - - if (set_command->value_str() == "debug") { - SetLogLevel(LogLevel::kDebug); - return true; - } - - if (set_command->value_str() == "info") { - SetLogLevel(LogLevel::kInfo); - return true; - } - - if (set_command->value_str() == "warning") { - SetLogLevel(LogLevel::kWarning); - return true; - } - - if (set_command->value_str() == "error") { - SetLogLevel(LogLevel::kError); - return true; - } - - if (set_command->value_str() == "critical") { - SetLogLevel(LogLevel::kCritical); - return true; + case SetScope::kGlobal: { + GlobalVariable global_var = VarUtil::GetGlobalVarByName(set_command->var_name()); + switch(global_var) { + case GlobalVariable::kProfileRecordCapacity: { + if (set_command->value_type() != SetVarType::kInteger) { + RecoverableError(Status::DataTypeMismatch("Integer", set_command->value_type_str())); + } + query_context->storage()->catalog()->ResizeProfileHistory(set_command->value_int()); + return true; + } + case GlobalVariable::kInvalid: { + RecoverableError(Status::InvalidCommand(fmt::format("Unknown global variable: {}", set_command->var_name()))); + } + default: { + RecoverableError(Status::InvalidCommand(fmt::format("Global variable: {} is read-only", set_command->var_name()))); + } + } + break; } - - RecoverableError(Status::SetInvalidVarValue("log level", "trace, debug, info, warning, error, critical")); - return true; - } - - if (set_command->var_name() == worker_cpu_limit) { - if (set_command->value_type() != SetVarType::kInteger) { - RecoverableError(Status::DataTypeMismatch("Integer", set_command->value_type_str())); + case SetScope::kConfig: { + Config* config = query_context->global_config(); + GlobalOptionIndex config_index = config->GetOptionIndex(set_command->var_name()); + switch(config_index) { + case GlobalOptionIndex::kLogLevel: { + if (set_command->value_str() == "trace") { + SetLogLevel(LogLevel::kTrace); + return true; + } + + if (set_command->value_str() == "debug") { + SetLogLevel(LogLevel::kDebug); + return true; + } + + if (set_command->value_str() == "info") { + SetLogLevel(LogLevel::kInfo); + return true; + } + + if (set_command->value_str() == "warning") { + SetLogLevel(LogLevel::kWarning); + return true; + } + + if (set_command->value_str() == "error") { + SetLogLevel(LogLevel::kError); + return true; + } + + if (set_command->value_str() == "critical") { + SetLogLevel(LogLevel::kCritical); + return true; + } + + RecoverableError(Status::SetInvalidVarValue("log level", "trace, debug, info, warning, error, critical")); + break; + } + case GlobalOptionIndex::kInvalid: { + RecoverableError(Status::InvalidCommand(fmt::format("Unknown config: {}", set_command->var_name()))); + break; + } + default: { + RecoverableError(Status::InvalidCommand(fmt::format("Config {} is read-only", set_command->var_name()))); + break; + } + } + break; } - - if (set_command->scope() != SetScope::kGlobal) { - RecoverableError(Status::SyntaxError(fmt::format("cpu_count is a global config parameter.", set_command->var_name()))); + default: { + RecoverableError(Status::InvalidCommand("Invalid set command scope, neither session nor global")); } - - RecoverableError(Status::ReadOnlySysVar(set_command->var_name())); - return true; } { UnrecoverableError(fmt::format("Unknown command: {}", set_command->var_name())); } @@ -127,7 +149,7 @@ bool PhysicalCommand::Execute(QueryContext *query_context, OperatorState *operat } case CommandType::kExport: { ExportCmd *export_command = (ExportCmd *)(command_info_.get()); - auto profiler_record = query_context->current_session()->GetProfilerRecord(export_command->file_no()); + auto profiler_record = query_context->current_session()->GetProfileRecord(export_command->file_no()); if (profiler_record == nullptr) { RecoverableError(Status::DataNotExist(fmt::format("The record does not exist: {}", export_command->file_no()))); } diff --git a/src/executor/operator/physical_show.cpp b/src/executor/operator/physical_show.cpp index 6b1f032e12..32394f8c91 100644 --- a/src/executor/operator/physical_show.cpp +++ b/src/executor/operator/physical_show.cpp @@ -1149,7 +1149,7 @@ void PhysicalShow::ExecuteShowProfiles(QueryContext *query_context, ShowOperator SizeT row_count = 0; output_block_ptr->Init(column_types); - auto records = catalog->GetProfilerRecords(); + auto records = catalog->GetProfileRecords(); for (SizeT i = 0; i < records.size(); ++i) { if (!output_block_ptr) { output_block_ptr = DataBlock::MakeUniquePtr(); @@ -2677,25 +2677,6 @@ void PhysicalShow::ExecuteShowSessionVariable(QueryContext *query_context, ShowO value_expr.AppendToChunk(output_block_ptr->column_vectors[0]); break; } - case SessionVariable::kProfileRecordCapacity: { - Vector> output_column_defs = { - MakeShared(0, integer_type, "value", HashSet()), - }; - - SharedPtr table_def = TableDef::Make(MakeShared("default_db"), MakeShared("variables"), output_column_defs); - output_ = MakeShared(table_def, TableType::kResult); - - Vector> output_column_types{ - integer_type, - }; - - output_block_ptr->Init(output_column_types); - - Value value = Value::MakeBigInt(session_ptr->SessionVariables()->profile_record_capacity_); - ValueExpression value_expr(value); - value_expr.AppendToChunk(output_block_ptr->column_vectors[0]); - break; - } default: { operator_state->status_ = Status::NoSysVar(object_name_); RecoverableError(operator_state->status_); @@ -2841,28 +2822,6 @@ void PhysicalShow::ExecuteShowSessionVariables(QueryContext *query_context, Show } break; } - case SessionVariable::kProfileRecordCapacity: { - { - // option name - Value value = Value::MakeVarchar(var_name); - ValueExpression value_expr(value); - value_expr.AppendToChunk(output_block_ptr->column_vectors[0]); - } - { - // option value - u64 profile_record_capacity = session_ptr->SessionVariables()->profile_record_capacity_; - Value value = Value::MakeVarchar(std::to_string(profile_record_capacity)); - ValueExpression value_expr(value); - value_expr.AppendToChunk(output_block_ptr->column_vectors[1]); - } - { - // option description - Value value = Value::MakeVarchar("Profile record history capacity"); - ValueExpression value_expr(value); - value_expr.AppendToChunk(output_block_ptr->column_vectors[2]); - } - break; - } default: { operator_state->status_ = Status::NoSysVar(var_name); RecoverableError(operator_state->status_); @@ -3143,6 +3102,26 @@ void PhysicalShow::ExecuteShowGlobalVariable(QueryContext *query_context, ShowOp value_expr.AppendToChunk(output_block_ptr->column_vectors[0]); break; } + case GlobalVariable::kProfileRecordCapacity: { + Vector> output_column_defs = { + MakeShared(0, integer_type, "value", HashSet()), + }; + + SharedPtr table_def = TableDef::Make(MakeShared("default_db"), MakeShared("variables"), output_column_defs); + output_ = MakeShared(table_def, TableType::kResult); + + Vector> output_column_types{ + integer_type, + }; + + output_block_ptr->Init(output_column_types); + + Catalog *catalog_ptr = query_context->storage()->catalog(); + Value value = Value::MakeBigInt(catalog_ptr->ProfileHistorySize()); + ValueExpression value_expr(value); + value_expr.AppendToChunk(output_block_ptr->column_vectors[0]); + break; + } default: { operator_state->status_ = Status::NoSysVar(object_name_); RecoverableError(operator_state->status_); @@ -3373,7 +3352,7 @@ void PhysicalShow::ExecuteShowGlobalVariables(QueryContext *query_context, ShowO } { // option description - Value value = Value::MakeVarchar("Unused object in buffer manager waiting for garbage collection"); + Value value = Value::MakeVarchar("Active transaction count"); ValueExpression value_expr(value); value_expr.AppendToChunk(output_block_ptr->column_vectors[2]); } @@ -3395,7 +3374,7 @@ void PhysicalShow::ExecuteShowGlobalVariables(QueryContext *query_context, ShowO } { // option description - Value value = Value::MakeVarchar("Unused object in buffer manager waiting for garbage collection"); + Value value = Value::MakeVarchar("Current timestamp"); ValueExpression value_expr(value); value_expr.AppendToChunk(output_block_ptr->column_vectors[2]); } @@ -3467,6 +3446,28 @@ void PhysicalShow::ExecuteShowGlobalVariables(QueryContext *query_context, ShowO } break; } + case GlobalVariable::kProfileRecordCapacity: { + { + // option name + Value value = Value::MakeVarchar(var_name); + ValueExpression value_expr(value); + value_expr.AppendToChunk(output_block_ptr->column_vectors[0]); + } + { + // option value + Catalog *catalog_ptr = query_context->storage()->catalog(); + Value value = Value::MakeVarchar(std::to_string(catalog_ptr->ProfileHistorySize())); + ValueExpression value_expr(value); + value_expr.AppendToChunk(output_block_ptr->column_vectors[1]); + } + { + // option description + Value value = Value::MakeVarchar("Profile record history capacity"); + ValueExpression value_expr(value); + value_expr.AppendToChunk(output_block_ptr->column_vectors[2]); + } + break; + } default: { operator_state->status_ = Status::NoSysVar(var_name); RecoverableError(operator_state->status_); diff --git a/src/main/config.cppm b/src/main/config.cppm index 039124c2a1..2b500f3956 100644 --- a/src/main/config.cppm +++ b/src/main/config.cppm @@ -24,7 +24,7 @@ import command_statement; namespace infinity { export constexpr std::string_view profile_history_capacity_name = "profile_history_capacity"; -export constexpr std::string_view enable_profiling_name = "enable_profile"; +export constexpr std::string_view enable_profile_name = "enable_profile"; export constexpr std::string_view worker_cpu_limit = "cpu_count"; export constexpr std::string_view log_level = "log_level"; @@ -95,6 +95,7 @@ public: // Get config by name Tuple GetConfigByName(const String& name); + GlobalOptionIndex GetOptionIndex(const String& var_name) const { return global_options_.GetOptionIndex(var_name); } private: static void ParseTimeZoneStr(const String &time_zone_str, String &parsed_time_zone, i32 &parsed_time_zone_bias); diff --git a/src/main/infinity.cpp b/src/main/infinity.cpp index 7d0a3ec66e..6e7b446877 100644 --- a/src/main/infinity.cpp +++ b/src/main/infinity.cpp @@ -217,6 +217,9 @@ QueryResult Infinity::SetVariable(const String &variable_name, const String &var // command_statement->command_info_ = MakeUnique(infinity::SetScope::kGlobal, infinity::SetVarType::kBool, $3, false); break; } + case SetScope::kConfig: { + break; + } default: { UnrecoverableError("Invalid set scope."); } diff --git a/src/main/options.cpp b/src/main/options.cpp index c8508cd98e..7d3ade05b8 100644 --- a/src/main/options.cpp +++ b/src/main/options.cpp @@ -83,7 +83,7 @@ Status GlobalOptions::AddOption(UniquePtr option) { return Status::OK(); } -GlobalOptionIndex GlobalOptions::GetOptionIndex(const String &option_name) { +GlobalOptionIndex GlobalOptions::GetOptionIndex(const String &option_name) const { auto iter = name2index_.find(option_name); if(iter == name2index_.end()) { return GlobalOptionIndex::kInvalid; diff --git a/src/main/options.cppm b/src/main/options.cppm index 9d47216303..573a25a432 100644 --- a/src/main/options.cppm +++ b/src/main/options.cppm @@ -147,7 +147,7 @@ export enum class GlobalOptionIndex { export struct GlobalOptions { GlobalOptions(); Status AddOption(UniquePtr option); - GlobalOptionIndex GetOptionIndex(const String &option_name); + GlobalOptionIndex GetOptionIndex(const String &option_name) const; Tuple GetOptionByName(const String &option_name); BaseOption *GetOptionByIndex(GlobalOptionIndex option_index); diff --git a/src/main/query_context.cppm b/src/main/query_context.cppm index c7cd3e0c6b..c312945e3a 100644 --- a/src/main/query_context.cppm +++ b/src/main/query_context.cppm @@ -125,7 +125,7 @@ private: inline void RecordQueryProfiler(const StatementType &type) { if (type != StatementType::kCommand && type != StatementType::kExplain && type != StatementType::kShow) { - GetTxn()->GetCatalog()->AppendProfilerRecord(query_profiler_); + GetTxn()->GetCatalog()->AppendProfileRecord(query_profiler_); } } diff --git a/src/main/session.cppm b/src/main/session.cppm index 3e311d03ac..cb91eb9a4e 100644 --- a/src/main/session.cppm +++ b/src/main/session.cppm @@ -30,7 +30,6 @@ public: i64 query_count_{}; i64 total_commit_count_{}; bool enable_profile_{false}; - i64 profile_record_capacity_{128}; i64 connected_time_{}; }; @@ -54,7 +53,7 @@ public: [[nodiscard]] inline Txn *GetTxn() const { return txn_; } inline void SetTxn(Txn *txn) { txn_ = txn; } - const QueryProfiler *GetProfilerRecord(SizeT index) { return txn_->GetCatalog()->GetProfilerRecord(index); } + const QueryProfiler *GetProfileRecord(SizeT index) { return txn_->GetCatalog()->GetProfileRecord(index); } void IncreaseQueryCount() { ++query_count_; } diff --git a/src/main/variables.cpp b/src/main/variables.cpp index 0e4fa63c92..16a044660c 100644 --- a/src/main/variables.cpp +++ b/src/main/variables.cpp @@ -34,13 +34,13 @@ void VarUtil::InitVariablesMap() { global_name_map_["total_commit_count"] = GlobalVariable::kTotalCommitCount; global_name_map_["total_rollback_count"] = GlobalVariable::kTotalRollbackCount; global_name_map_["active_wal_filename"] = GlobalVariable::kActiveWALFilename; + global_name_map_["profile_record_capacity"] = GlobalVariable::kProfileRecordCapacity; session_name_map_["query_count"] = SessionVariable::kQueryCount; session_name_map_["total_commit_count"] = SessionVariable::kTotalCommitCount; session_name_map_["total_rollback_count"] = SessionVariable::kTotalRollbackCount; session_name_map_["connected_timestamp"] = SessionVariable::kConnectedTime; session_name_map_["enable_profile"] = SessionVariable::kEnableProfile; - session_name_map_["profile_record_capacity"] = SessionVariable::kProfileRecordCapacity; } HashMap VarUtil::global_name_map_; diff --git a/src/main/variables.cppm b/src/main/variables.cppm index e6c9a3c46e..c4c04a930c 100644 --- a/src/main/variables.cppm +++ b/src/main/variables.cppm @@ -36,6 +36,7 @@ export enum class GlobalVariable { kTotalCommitCount, // global kTotalRollbackCount, // global kActiveWALFilename, // global + kProfileRecordCapacity, // global kInvalid, }; @@ -46,7 +47,6 @@ export enum class SessionVariable { kTotalRollbackCount, // session kConnectedTime, // session kEnableProfile, // session - kProfileRecordCapacity, // session kInvalid, }; diff --git a/src/parser/parser.cpp b/src/parser/parser.cpp index 04d057fa16..76e0ccdfe2 100644 --- a/src/parser/parser.cpp +++ b/src/parser/parser.cpp @@ -728,18 +728,18 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 82 +#define YYFINAL 83 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 930 +#define YYLAST 936 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 184 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 96 /* YYNRULES -- Number of rules. */ -#define YYNRULES 366 +#define YYNRULES 371 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 730 +#define YYNSTATES 737 /* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 423 @@ -827,21 +827,22 @@ static const yytype_int16 yyrline[] = 1521, 1525, 1529, 1533, 1537, 1544, 1548, 1552, 1556, 1562, 1568, 1574, 1585, 1596, 1607, 1619, 1631, 1644, 1658, 1669, 1687, 1691, 1695, 1703, 1717, 1723, 1728, 1734, 1740, 1748, - 1754, 1760, 1766, 1772, 1780, 1786, 1792, 1808, 1812, 1817, - 1821, 1848, 1854, 1858, 1859, 1860, 1861, 1862, 1864, 1867, - 1873, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1885, - 2052, 2060, 2071, 2077, 2086, 2092, 2102, 2106, 2110, 2114, - 2118, 2122, 2126, 2130, 2135, 2143, 2151, 2160, 2167, 2174, - 2181, 2188, 2195, 2203, 2211, 2219, 2227, 2235, 2243, 2251, - 2259, 2267, 2275, 2283, 2291, 2321, 2329, 2338, 2346, 2355, - 2363, 2369, 2376, 2382, 2389, 2394, 2401, 2408, 2416, 2440, - 2446, 2452, 2459, 2467, 2474, 2481, 2486, 2496, 2501, 2506, - 2511, 2516, 2521, 2526, 2531, 2536, 2541, 2544, 2547, 2550, - 2554, 2557, 2561, 2565, 2570, 2575, 2579, 2584, 2589, 2595, - 2601, 2607, 2613, 2619, 2625, 2631, 2637, 2643, 2649, 2655, - 2666, 2670, 2675, 2697, 2707, 2713, 2717, 2718, 2720, 2721, - 2723, 2724, 2736, 2744, 2748, 2751, 2755, 2758, 2762, 2766, - 2771, 2776, 2784, 2791, 2802, 2850, 2899 + 1754, 1760, 1766, 1772, 1780, 1786, 1792, 1798, 1804, 1812, + 1818, 1824, 1840, 1844, 1849, 1853, 1880, 1886, 1890, 1891, + 1892, 1893, 1894, 1896, 1899, 1905, 1908, 1909, 1910, 1911, + 1912, 1913, 1914, 1915, 1917, 2084, 2092, 2103, 2109, 2118, + 2124, 2134, 2138, 2142, 2146, 2150, 2154, 2158, 2162, 2167, + 2175, 2183, 2192, 2199, 2206, 2213, 2220, 2227, 2235, 2243, + 2251, 2259, 2267, 2275, 2283, 2291, 2299, 2307, 2315, 2323, + 2353, 2361, 2370, 2378, 2387, 2395, 2401, 2408, 2414, 2421, + 2426, 2433, 2440, 2448, 2472, 2478, 2484, 2491, 2499, 2506, + 2513, 2518, 2528, 2533, 2538, 2543, 2548, 2553, 2558, 2563, + 2568, 2573, 2576, 2579, 2582, 2586, 2589, 2593, 2597, 2602, + 2607, 2611, 2616, 2621, 2627, 2633, 2639, 2645, 2651, 2657, + 2663, 2669, 2675, 2681, 2687, 2698, 2702, 2707, 2729, 2739, + 2745, 2749, 2750, 2752, 2753, 2755, 2756, 2768, 2776, 2780, + 2783, 2787, 2790, 2794, 2798, 2803, 2808, 2816, 2823, 2834, + 2882, 2931 }; #endif @@ -919,12 +920,12 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#define YYPACT_NINF (-670) +#define YYPACT_NINF (-647) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-354) +#define YYTABLE_NINF (-359) #define yytable_value_is_error(Yyn) \ ((Yyn) == YYTABLE_NINF) @@ -933,79 +934,80 @@ yysymbol_name (yysymbol_kind_t yysymbol) STATE-NUM. */ static const yytype_int16 yypact[] = { - 303, 254, 7, 394, 41, -25, 41, -87, 696, 52, - 99, -89, 135, 41, 161, 8, -54, 171, 32, -670, - -670, -670, -670, -670, -670, -670, -670, 175, -670, -670, - 212, -670, -670, -670, -670, 157, 157, 157, 157, -37, - 41, 191, 191, 191, 191, 191, 85, 277, 41, 31, - 295, 300, -670, -670, -670, -670, -670, -670, -670, 625, - 308, 41, -670, -670, -670, 211, 216, -670, 320, -670, - 41, -670, -670, -670, -670, -670, 253, 142, -670, 321, - 153, 173, -670, 165, -670, 338, -670, -670, 4, 318, - -670, 332, 352, 409, 41, 41, 41, 427, 374, 263, - 372, 454, 41, 41, 41, 468, 469, 475, 417, 479, - 479, 59, 67, -670, -670, -670, -670, -670, -670, -670, - 175, -670, -670, -670, -670, -670, 208, -670, 485, -670, - 489, -670, -670, 319, 161, 479, -670, -670, -670, -670, - 4, -670, -670, -670, 447, 446, 433, 428, -670, -46, - -670, 263, -670, 41, 501, -10, -670, -670, -670, -670, - -670, 448, -670, 341, -59, -670, 447, -670, -670, 434, - 435, -670, -670, -670, -670, -670, -670, -670, -670, -670, - -670, 509, 510, -670, -670, -670, -670, -670, 212, -670, - -670, 335, 343, 345, -670, -670, 707, 502, 346, 354, - 302, 527, 531, 532, 533, -670, -670, 534, 359, 360, - 365, 366, 367, 115, 115, -670, 243, 416, -60, -670, - 24, 571, -670, -670, -670, -670, -670, -670, -670, -670, - -670, -670, -670, 371, -670, -670, -135, -670, -128, -670, - 447, 447, 477, -670, -54, 42, 497, 375, -670, -127, - 385, -670, 41, 447, 475, -670, 197, 387, 388, -670, - 340, 389, -670, -670, 266, -670, -670, -670, -670, -670, - -670, -670, -670, -670, -670, -670, -670, 115, 391, 626, - 486, 447, 447, -53, 145, -670, -670, -670, -670, 707, - -670, 567, 447, 574, 575, 576, 82, 82, -670, -670, - 395, 63, 3, 447, 420, 583, 447, 447, -49, 413, - -33, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 11, -670, 590, -670, 592, - 415, -670, -51, 197, 447, -670, 175, 716, 480, 422, - -66, -670, -670, -670, -54, 501, 423, -670, 604, 447, - 425, -670, 197, -670, 284, 284, 603, -670, -670, 447, - -670, -41, 486, 462, 431, 76, -55, 213, -670, 447, - 447, 538, 56, 439, 45, 110, -670, -670, -54, 440, - 337, -670, 20, -670, -670, 86, 417, -670, -670, 471, - 438, 115, 416, 496, -670, 386, 386, 103, 103, 582, - 386, 386, 103, 103, 82, 82, -670, -670, -670, -670, - -670, -670, -670, 447, -670, -670, -670, 197, -670, -670, - -670, -670, -670, -670, -670, -670, -670, -670, -670, 451, - -670, -670, -670, -670, -670, -670, -670, -670, -670, -670, - 452, 463, 464, 113, 465, 501, 597, 42, 175, 141, - 501, -670, 151, 467, 629, 650, -670, 180, -670, 192, - 605, 203, -670, 481, -670, 716, 447, -670, 447, -68, - -45, 115, 487, 658, -670, 659, -670, 662, -13, 3, - 612, -670, -670, -670, -670, -670, -670, 613, -670, 669, - -670, -670, -670, -670, -670, 490, 624, 416, 386, 498, - 261, -670, 115, -670, 674, 264, 317, 686, 560, 563, - -670, -670, 33, 113, -670, -670, 501, 275, 505, -670, - -670, 542, 276, -670, 447, -670, -670, -670, 284, -670, - 679, -670, -670, 516, 197, -18, -670, 447, 517, 515, - -670, -670, 281, 519, 521, 20, 337, 3, 3, 523, - 86, 649, 651, 528, 282, -670, -670, 626, 283, 524, - 526, 535, 537, 543, 545, 546, 554, 555, 565, 577, - 578, 579, 580, 581, 587, 588, 589, 598, 602, 606, - 607, 608, 609, -670, -670, -670, -670, -670, 290, -670, - 713, 714, 557, 297, -670, -670, -670, -670, 197, -670, - 717, -670, 746, -670, -670, -670, -670, 702, 501, -670, - -670, -670, -670, 447, 447, -670, -670, -670, -670, 753, - 767, 769, 780, 781, 782, 787, 788, 820, 821, 823, - 824, 827, 841, 842, 843, 844, 845, 846, 847, 848, - 849, 850, 851, 852, -670, 690, 306, -670, 783, 857, - -670, 678, 683, 447, 313, 681, 197, 685, 687, 688, - 689, 691, 692, 693, 694, 695, 697, 698, 699, 700, - 701, 703, 704, 705, 706, 708, 709, 710, 711, 712, - 715, 718, 80, -670, 713, 720, -670, 783, 862, -670, - 197, -670, -670, -670, -670, -670, -670, -670, -670, -670, - -670, -670, -670, -670, -670, -670, -670, -670, -670, -670, - -670, -670, -670, -670, -670, -670, -670, -670, -670, -670, - -670, 713, -670, 719, 314, 864, -670, 721, 783, -670 + 702, 173, 44, 200, 46, 28, 46, -96, 428, 58, + 53, 296, 125, 46, 135, -18, -55, 184, -20, -647, + -647, -647, -647, -647, -647, -647, -647, 158, -647, -647, + 178, -647, -647, -647, -647, 118, 118, 118, 118, -2, + 46, 120, 120, 120, 120, 120, 30, 213, 46, 94, + 230, 251, 260, -647, -647, -647, -647, -647, -647, -647, + 723, 269, 46, -647, -647, -647, 137, 201, -647, 271, + -647, 46, -647, -647, -647, -647, -647, 222, 110, -647, + 312, 147, 176, -647, 6, -647, 317, -647, -647, 0, + 287, -647, 290, 315, 367, 46, 46, 46, 401, 344, + 235, 356, 437, 46, 46, 46, 449, 473, 474, 416, + 483, 483, 49, 60, 69, -647, -647, -647, -647, -647, + -647, -647, 158, -647, -647, -647, -647, -647, 224, -647, + 488, -647, 491, -647, -647, 316, 135, 483, -647, -647, + -647, -647, 0, -647, -647, -647, 445, 442, 429, 425, + -647, -44, -647, 235, -647, 46, 498, 108, -647, -647, + -647, -647, -647, 439, -647, 339, -53, -647, 445, -647, + -647, 430, 431, -647, -647, -647, -647, -647, -647, -647, + -647, -647, -647, -647, -647, -647, -647, -647, 508, 506, + -647, -647, -647, -647, -647, 178, -647, -647, 333, 334, + 342, -647, -647, 675, 500, 343, 350, 307, 519, 527, + 529, 534, -647, -647, 536, 364, 365, 366, 371, 372, + 531, 531, -647, 374, 414, -36, -647, -12, 615, -647, + -647, -647, -647, -647, -647, -647, -647, -647, -647, -647, + 381, -647, -647, -105, -647, -102, -647, 445, 445, 482, + -647, -55, 20, 507, 386, -647, -137, 388, -647, 46, + 445, 474, -647, 248, 389, 390, -647, 412, 393, -647, + -647, 194, -647, -647, -647, -647, -647, -647, -647, -647, + -647, -647, -647, -647, 531, 397, 652, 499, 445, 445, + -35, 138, -647, -647, -647, -647, 675, -647, 573, 445, + 578, 580, 585, 247, 247, -647, -647, 410, 75, 4, + 445, 432, 591, 445, 445, -51, 419, 48, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 7, -647, 589, -647, 594, 417, -647, 23, + 248, 445, -647, 158, 740, 486, 434, 70, -647, -647, + -647, -55, 498, 436, -647, 604, 445, 426, -647, 248, + -647, 375, 375, 602, -647, -647, 445, -647, 82, 499, + 472, 441, -9, -45, 159, -647, 445, 445, 551, 61, + 440, 146, 160, -647, -647, -55, 446, 341, -647, 57, + -647, -647, 71, 416, -647, -647, 485, 452, 531, 414, + 520, -647, 116, 116, 254, 254, 161, 116, 116, 254, + 254, 247, 247, -647, -647, -647, -647, -647, -647, -647, + 445, -647, -647, -647, 248, -647, -647, -647, -647, -647, + -647, -647, -647, -647, -647, -647, 462, -647, -647, -647, + -647, -647, -647, -647, -647, -647, -647, 466, 467, 469, + 127, 470, 498, 622, 20, 158, 162, 498, -647, 164, + 475, 647, 650, -647, 168, -647, 169, 605, 174, -647, + 479, -647, 740, 445, -647, 445, -47, -30, 531, 484, + 656, -647, 658, -647, 660, 16, 4, 610, -647, -647, + -647, -647, -647, -647, 611, -647, 667, -647, -647, -647, + -647, -647, 492, 618, 414, 116, 496, 182, -647, 531, + -647, 674, 345, 546, 679, 559, 562, -647, -647, 63, + 127, -647, -647, 498, 189, 505, -647, -647, 532, 195, + -647, 445, -647, -647, -647, 375, -647, 680, -647, -647, + 510, 248, -39, -647, 445, 384, 504, -647, -647, 203, + 512, 513, 57, 341, 4, 4, 509, 71, 640, 644, + 515, 204, -647, -647, 652, 208, 517, 518, 523, 524, + 537, 538, 539, 540, 541, 548, 557, 558, 560, 561, + 564, 568, 569, 570, 571, 577, 579, 581, 582, 583, + -647, -647, -647, -647, -647, 232, -647, 699, 716, 592, + 233, -647, -647, -647, -647, 248, -647, 738, -647, 757, + -647, -647, -647, -647, 704, 498, -647, -647, -647, -647, + 445, 445, -647, -647, -647, -647, 762, 768, 772, 773, + 774, 776, 777, 791, 792, 793, 795, 809, 810, 811, + 812, 813, 814, 844, 845, 847, 848, 851, 854, 855, + 856, -647, 694, 261, -647, 785, 862, -647, 683, 687, + 445, 295, 685, 248, 689, 690, 691, 692, 693, 695, + 696, 697, 698, 703, 705, 706, 707, 708, 709, 710, + 711, 712, 713, 714, 715, 717, 718, 719, 720, 277, + -647, 699, 700, -647, 785, 870, -647, 248, -647, -647, + -647, -647, -647, -647, -647, -647, -647, -647, -647, -647, + -647, -647, -647, -647, -647, -647, -647, -647, -647, -647, + -647, -647, -647, -647, -647, -647, -647, -647, 699, -647, + 701, 302, 876, -647, 721, 785, -647 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1014,108 +1016,109 @@ static const yytype_int16 yypact[] = static const yytype_int16 yydefact[] = { 177, 0, 0, 0, 0, 0, 0, 0, 113, 0, - 0, 0, 0, 0, 0, 0, 177, 0, 351, 3, + 0, 0, 0, 0, 0, 0, 177, 0, 356, 3, 5, 10, 12, 13, 11, 6, 7, 9, 126, 125, - 0, 8, 14, 15, 16, 349, 349, 349, 349, 349, - 0, 347, 347, 347, 347, 347, 170, 0, 0, 0, - 0, 0, 107, 111, 108, 109, 110, 112, 106, 177, - 0, 0, 191, 192, 190, 0, 0, 193, 0, 195, - 0, 210, 211, 212, 214, 213, 0, 176, 178, 0, - 0, 0, 1, 177, 2, 160, 162, 163, 0, 149, - 131, 137, 0, 0, 0, 0, 0, 0, 0, 104, - 0, 0, 0, 0, 0, 0, 0, 0, 155, 0, - 0, 0, 0, 105, 17, 22, 24, 23, 18, 19, - 21, 20, 25, 26, 27, 200, 201, 196, 0, 197, - 0, 194, 226, 0, 0, 0, 130, 129, 4, 161, - 0, 127, 128, 148, 0, 0, 145, 0, 28, 0, - 29, 104, 352, 0, 0, 177, 346, 118, 120, 119, - 121, 0, 171, 0, 155, 115, 0, 100, 345, 0, - 0, 218, 220, 219, 216, 217, 223, 225, 224, 221, - 222, 0, 0, 203, 202, 208, 198, 199, 0, 179, - 215, 0, 0, 303, 307, 310, 311, 0, 0, 0, - 0, 0, 0, 0, 0, 308, 309, 0, 0, 0, - 0, 0, 0, 0, 0, 305, 0, 177, 151, 227, - 232, 233, 245, 246, 247, 248, 242, 237, 236, 235, - 243, 244, 234, 241, 240, 318, 0, 319, 0, 317, - 0, 0, 147, 348, 177, 0, 0, 0, 98, 0, - 0, 102, 0, 0, 0, 114, 154, 0, 0, 209, - 204, 0, 134, 133, 0, 329, 328, 331, 330, 333, - 332, 335, 334, 337, 336, 339, 338, 0, 0, 269, - 177, 0, 0, 0, 0, 312, 313, 314, 315, 0, - 316, 0, 0, 0, 0, 0, 271, 270, 326, 323, - 0, 0, 0, 0, 153, 0, 0, 0, 0, 0, + 0, 8, 14, 15, 16, 354, 354, 354, 354, 354, + 0, 352, 352, 352, 352, 352, 170, 0, 0, 0, + 0, 0, 0, 107, 111, 108, 109, 110, 112, 106, + 177, 0, 0, 191, 192, 190, 0, 0, 193, 0, + 195, 0, 210, 211, 212, 214, 213, 0, 176, 178, + 0, 0, 0, 1, 177, 2, 160, 162, 163, 0, + 149, 131, 137, 0, 0, 0, 0, 0, 0, 0, + 104, 0, 0, 0, 0, 0, 0, 0, 0, 155, + 0, 0, 0, 0, 0, 105, 17, 22, 24, 23, + 18, 19, 21, 20, 25, 26, 27, 200, 201, 196, + 0, 197, 0, 194, 231, 0, 0, 0, 130, 129, + 4, 161, 0, 127, 128, 148, 0, 0, 145, 0, + 28, 0, 29, 104, 357, 0, 0, 177, 351, 118, + 120, 119, 121, 0, 171, 0, 155, 115, 0, 100, + 350, 0, 0, 218, 220, 219, 216, 217, 223, 225, + 224, 221, 222, 228, 230, 229, 226, 227, 0, 0, + 203, 202, 208, 198, 199, 0, 179, 215, 0, 0, + 308, 312, 315, 316, 0, 0, 0, 0, 0, 0, + 0, 0, 313, 314, 0, 0, 0, 0, 0, 0, + 0, 0, 310, 0, 177, 151, 232, 237, 238, 250, + 251, 252, 253, 247, 242, 241, 240, 248, 249, 239, + 246, 245, 323, 0, 324, 0, 322, 0, 0, 147, + 353, 177, 0, 0, 0, 98, 0, 0, 102, 0, + 0, 0, 114, 154, 0, 0, 209, 204, 0, 134, + 133, 0, 334, 333, 336, 335, 338, 337, 340, 339, + 342, 341, 344, 343, 0, 0, 274, 177, 0, 0, + 0, 0, 317, 318, 319, 320, 0, 321, 0, 0, + 0, 0, 0, 276, 275, 331, 328, 0, 0, 0, + 0, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 322, 0, 325, 0, - 136, 138, 143, 144, 0, 132, 31, 0, 0, 0, - 0, 34, 36, 37, 177, 0, 33, 103, 0, 0, - 101, 122, 117, 116, 0, 0, 0, 205, 180, 0, - 264, 0, 177, 0, 0, 0, 0, 0, 294, 0, - 0, 0, 0, 0, 0, 0, 239, 238, 177, 150, - 164, 166, 175, 167, 228, 0, 155, 231, 287, 288, - 0, 0, 177, 0, 268, 278, 279, 282, 283, 0, - 285, 277, 280, 281, 273, 272, 274, 275, 276, 304, - 306, 324, 327, 0, 141, 142, 140, 146, 40, 43, - 44, 41, 42, 45, 46, 60, 47, 49, 48, 63, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 0, 0, 0, 95, 0, 0, 357, 0, 32, 0, - 0, 99, 0, 0, 0, 0, 344, 0, 340, 0, - 206, 0, 265, 0, 299, 0, 0, 292, 0, 0, - 0, 0, 0, 0, 252, 0, 254, 0, 0, 0, - 0, 184, 185, 186, 187, 183, 188, 0, 173, 0, - 168, 256, 257, 258, 259, 152, 159, 177, 286, 0, - 0, 267, 0, 139, 0, 0, 0, 0, 0, 0, - 91, 92, 0, 95, 88, 38, 0, 0, 0, 30, - 35, 366, 0, 229, 0, 343, 342, 124, 0, 123, - 0, 266, 300, 0, 296, 0, 295, 0, 0, 0, - 320, 321, 0, 0, 0, 175, 165, 0, 0, 172, - 0, 0, 157, 0, 0, 301, 290, 289, 0, 0, + 0, 0, 0, 327, 0, 330, 0, 136, 138, 143, + 144, 0, 132, 31, 0, 0, 0, 0, 34, 36, + 37, 177, 0, 33, 103, 0, 0, 101, 122, 117, + 116, 0, 0, 0, 205, 180, 0, 269, 0, 177, + 0, 0, 0, 0, 0, 299, 0, 0, 0, 0, + 0, 0, 0, 244, 243, 177, 150, 164, 166, 175, + 167, 233, 0, 155, 236, 292, 293, 0, 0, 177, + 0, 273, 283, 284, 287, 288, 0, 290, 282, 285, + 286, 278, 277, 279, 280, 281, 309, 311, 329, 332, + 0, 141, 142, 140, 146, 40, 43, 44, 41, 42, + 45, 46, 60, 47, 49, 48, 63, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 0, 0, 0, + 95, 0, 0, 362, 0, 32, 0, 0, 99, 0, + 0, 0, 0, 349, 0, 345, 0, 206, 0, 270, + 0, 304, 0, 0, 297, 0, 0, 0, 0, 0, + 0, 257, 0, 259, 0, 0, 0, 0, 184, 185, + 186, 187, 183, 188, 0, 173, 0, 168, 261, 262, + 263, 264, 152, 159, 177, 291, 0, 0, 272, 0, + 139, 0, 0, 0, 0, 0, 0, 91, 92, 0, + 95, 88, 38, 0, 0, 0, 30, 35, 371, 0, + 234, 0, 348, 347, 124, 0, 123, 0, 271, 305, + 0, 301, 0, 300, 0, 0, 0, 325, 326, 0, + 0, 0, 175, 165, 0, 0, 172, 0, 0, 157, + 0, 0, 306, 295, 294, 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, 93, 90, 94, 89, 39, 0, 97, - 0, 0, 0, 0, 341, 207, 298, 293, 297, 284, - 0, 250, 0, 253, 255, 169, 181, 0, 0, 260, - 261, 262, 263, 0, 0, 135, 302, 291, 62, 0, + 93, 90, 94, 89, 39, 0, 97, 0, 0, 0, + 0, 346, 207, 303, 298, 302, 289, 0, 255, 0, + 258, 260, 169, 181, 0, 0, 265, 266, 267, 268, + 0, 0, 135, 307, 296, 62, 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, 96, 360, 0, 358, 355, 0, - 230, 0, 0, 0, 0, 158, 156, 0, 0, 0, + 0, 96, 365, 0, 363, 360, 0, 235, 0, 0, + 0, 0, 158, 156, 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, 356, 0, 0, 364, 355, 0, 251, - 182, 174, 61, 67, 68, 65, 66, 69, 70, 71, - 64, 83, 84, 81, 82, 85, 86, 87, 80, 75, - 76, 73, 74, 77, 78, 79, 72, 361, 363, 362, - 359, 0, 365, 0, 0, 0, 354, 0, 355, 249 + 361, 0, 0, 369, 360, 0, 256, 182, 174, 61, + 67, 68, 65, 66, 69, 70, 71, 64, 83, 84, + 81, 82, 85, 86, 87, 80, 75, 76, 73, 74, + 77, 78, 79, 72, 366, 368, 367, 364, 0, 370, + 0, 0, 0, 359, 0, 360, 254 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -670, -670, -670, 793, -670, 828, -670, 449, -670, 429, - -670, 369, 380, -670, -343, 838, 853, 749, -670, -670, - 854, -670, 652, 855, 856, -58, 887, -12, 722, 764, - -34, -670, -670, 492, -670, -670, -670, -670, -670, -670, - -159, -670, -670, -670, -670, 430, -131, 9, 362, -670, - -670, 774, -670, -670, 858, 859, 860, 861, -261, -670, - 618, -166, -167, -366, -357, -356, -354, -670, -670, -670, - -670, -670, -670, 628, -670, -670, -670, 404, -670, 450, - -670, 453, -670, 723, 568, 396, -77, 294, 309, -670, - -670, -669, -670, 205, 244, -670 + -647, -647, -647, 819, -647, 836, -647, 450, -647, 433, + -647, 387, 391, -647, -348, 846, 849, 755, -647, -647, + 850, -647, 651, 853, 857, -57, 898, -14, 724, 778, + 2, -647, -647, 495, -647, -647, -647, -647, -647, -647, + -161, -647, -647, -647, -647, 435, -85, 22, 370, -647, + -647, 780, -647, -647, 858, 863, 864, 865, -270, -647, + 616, -168, -170, -383, -381, -365, -362, -647, -647, -647, + -647, -647, -647, 637, -647, -647, -647, 409, -647, 451, + -647, 453, -647, 722, 567, 396, -29, 272, 286, -647, + -647, -646, -647, 205, 243, -647 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - 0, 17, 18, 19, 113, 20, 340, 341, 342, 443, - 513, 514, 515, 343, 249, 21, 22, 155, 23, 59, - 24, 164, 165, 25, 26, 27, 28, 29, 90, 141, - 91, 146, 330, 331, 416, 242, 335, 144, 304, 386, - 167, 615, 552, 88, 379, 380, 381, 382, 490, 30, - 77, 78, 383, 487, 31, 32, 33, 34, 218, 350, - 219, 220, 221, 222, 223, 224, 225, 495, 226, 227, - 228, 229, 230, 284, 231, 232, 233, 234, 539, 235, - 236, 237, 238, 239, 457, 458, 169, 101, 93, 84, - 98, 686, 519, 646, 647, 346 + 0, 17, 18, 19, 115, 20, 347, 348, 349, 450, + 520, 521, 522, 350, 256, 21, 22, 157, 23, 60, + 24, 166, 167, 25, 26, 27, 28, 29, 91, 143, + 92, 148, 337, 338, 423, 249, 342, 146, 311, 393, + 169, 622, 559, 89, 386, 387, 388, 389, 497, 30, + 78, 79, 390, 494, 31, 32, 33, 34, 225, 357, + 226, 227, 228, 229, 230, 231, 232, 502, 233, 234, + 235, 236, 237, 291, 238, 239, 240, 241, 546, 242, + 243, 244, 245, 246, 464, 465, 171, 102, 94, 85, + 99, 693, 526, 653, 654, 353 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1123,198 +1126,198 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 256, 120, 449, 361, 81, 255, 46, 85, 166, 86, - 244, 87, 89, 47, 409, 49, 536, 302, 722, 491, - 414, 415, 75, 488, 250, 14, -353, 390, 492, 493, - 279, 494, 466, 170, 283, 282, 92, 194, 195, 196, - 40, 393, 537, 326, 46, 337, 296, 297, 327, 99, - 328, 301, 48, 347, 142, 329, 348, 108, 190, 729, - 71, 72, 73, 171, 172, 173, 597, 50, 51, 14, - 126, 176, 177, 178, 332, 333, 489, 306, 307, 132, - 305, 60, 61, 717, 62, 718, 719, 352, 452, 394, - 306, 307, 306, 307, 306, 307, 63, 64, 461, 391, - 306, 307, 517, 149, 150, 151, 192, 522, 109, 110, - 279, 158, 159, 160, 446, 365, 366, 447, 193, 194, - 195, 196, 174, 303, 254, 16, 372, 306, 307, 70, - 179, 500, 465, 245, 201, 202, 203, 204, 74, 462, - 388, 389, 303, 251, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 205, 206, - 207, 338, 247, 339, 76, -350, 79, 545, 417, 306, - 307, 82, 1, 588, 2, 3, 4, 5, 6, 7, - 8, 9, 378, 140, 609, 410, 336, 508, 10, 277, - 11, 12, 13, 610, 611, 85, 612, 86, 199, 87, - 200, 306, 307, 469, 470, 300, 65, 66, 306, 307, - 216, 67, 68, 69, 83, 175, 201, 202, 203, 204, - 89, 306, 307, 180, 498, 474, 310, 496, 475, 368, - 92, 369, 509, 370, 510, 511, 554, 512, 209, 472, - 205, 206, 207, 377, 14, -354, -354, 332, 298, 299, - 181, 210, 211, 212, 182, 183, 322, 323, 324, 184, - 185, 351, 208, 593, 100, 654, 106, 209, 364, 193, - 194, 195, 196, -354, -354, 320, 321, 322, 323, 324, - 210, 211, 212, 35, 36, 37, 448, 213, 214, 215, - 476, 107, 216, 477, 217, 38, 39, 467, 111, 468, - 534, 370, 535, 112, 538, 193, 194, 195, 196, 133, - 1, 125, 2, 3, 4, 5, 6, 7, 8, 9, - 478, 521, 15, 131, 348, 134, 10, 135, 11, 12, - 13, 523, 359, 136, 303, 557, 102, 103, 104, 105, - 197, 198, 306, 307, 16, 94, 95, 96, 97, 199, - 463, 200, 655, 137, 559, 560, 561, 562, 563, 139, - 527, 564, 565, 528, 454, 455, 456, 201, 202, 203, - 204, 598, 529, 127, 128, 528, 197, 198, 129, 130, - 499, 566, 14, 531, 143, 199, 303, 200, 356, 357, - 282, 205, 206, 207, 480, -189, 481, 482, 483, 484, - 145, 485, 486, 201, 202, 203, 204, 567, 568, 569, - 570, 571, 148, 208, 572, 573, 606, 607, 209, 193, - 194, 195, 196, 41, 42, 43, 147, 205, 206, 207, - 152, 210, 211, 212, 574, 44, 45, 153, 213, 214, - 215, 556, 154, 216, 303, 217, 360, 156, 656, 208, - 193, 194, 195, 196, 209, 589, 592, 157, 348, 348, - 15, 601, 617, 618, 602, 303, 619, 210, 211, 212, - 644, 161, 162, 348, 213, 214, 215, 650, 163, 216, - 303, 217, 16, 168, 166, 553, 683, 690, 186, 684, - 197, 198, 187, 691, 726, 14, 348, 684, 188, 199, - 240, 200, 241, 243, 248, 193, 194, 195, 196, 310, - 253, 252, 259, 257, 258, 262, 260, 201, 202, 203, - 204, 197, 198, 263, 264, 280, -354, -354, 313, 314, - 199, 285, 200, 281, -354, 286, 287, 288, 291, 292, - 289, 205, 206, 207, 293, 294, 295, 334, 201, 202, - 203, 204, 325, 344, 345, -354, 318, 319, 320, 321, - 322, 323, 324, 208, 349, 14, 354, 355, 209, 358, - 362, 371, 205, 206, 207, 376, 277, 278, 373, 374, - 375, 210, 211, 212, 385, 199, 387, 200, 213, 214, - 215, 363, 392, 216, 208, 217, 411, 412, 413, 209, - 444, 445, 450, 201, 202, 203, 204, 451, 453, 460, - 391, 464, 210, 211, 212, 471, 306, 497, 501, 213, - 214, 215, 473, 479, 216, 518, 217, 205, 206, 207, - 504, 505, 1, 525, 2, 3, 4, 5, 6, 7, - 310, 9, 506, 507, 516, 308, 524, 309, 10, 208, - 11, 12, 13, 526, 209, 530, 363, 311, 312, 313, - 314, 532, 542, 543, 216, 316, 544, 210, 211, 212, - 547, 548, 549, 550, 213, 214, 215, 551, 555, 216, - 558, 217, 583, 584, 590, 595, 317, 318, 319, 320, - 321, 322, 323, 324, 310, 591, 596, 599, 600, 603, - 363, 604, 608, 613, 14, 310, 614, 620, 616, 621, - 649, 311, 312, 313, 314, 315, 645, 648, 622, 316, - 623, 651, 311, 312, 313, 314, 624, 502, 625, 626, - 316, 52, 53, 54, 55, 56, 57, 627, 628, 58, - 317, 318, 319, 320, 321, 322, 323, 324, 629, 310, - 652, 317, 318, 319, 320, 321, 322, 323, 324, 657, - 630, 631, 632, 633, 634, 653, 311, 312, 313, 314, - 635, 636, 637, 658, 316, 659, 575, 576, 577, 578, - 579, 638, 15, 580, 581, 639, 660, 661, 662, 640, - 641, 642, 643, 663, 664, 317, 318, 319, 320, 321, - 322, 323, 324, 582, 16, 418, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 665, 666, 439, 667, - 668, 440, 441, 669, 442, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 670, 671, 672, - 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, - 687, 688, 685, 689, 303, 692, 723, 693, 694, 695, - 727, 696, 697, 698, 699, 700, 138, 701, 702, 703, - 704, 705, 586, 706, 707, 708, 709, 114, 710, 711, - 712, 713, 714, 587, 533, 715, 520, 115, 716, 721, - 246, 728, 725, 80, 191, 503, 353, 605, 189, 546, - 261, 367, 116, 117, 118, 119, 585, 121, 122, 123, - 124, 384, 540, 459, 594, 541, 724, 0, 720, 0, - 290 + 263, 368, 82, 122, 456, 262, -355, 46, 90, 498, + 416, 499, 251, 1, 168, 2, 3, 4, 5, 6, + 7, 8, 9, 344, 14, 397, 47, 500, 49, 10, + 501, 11, 12, 13, 286, 76, 86, 543, 87, 290, + 88, 309, 473, 354, 312, 604, 355, 472, 729, 46, + 303, 304, 173, 289, 174, 175, 308, 544, 50, 51, + 495, -358, 100, 178, 52, 179, 180, 201, 202, 203, + 109, 93, 183, 333, 184, 185, 335, 40, 334, 339, + 340, 336, 172, 71, 128, 14, 459, 61, 62, 736, + 63, 144, 359, 134, 421, 422, 468, 398, 313, 314, + 313, 314, 64, 65, 524, 48, 313, 314, 197, 529, + 313, 314, 176, 496, 286, 313, 314, 151, 152, 153, + 372, 373, 400, 181, 16, 160, 161, 162, 75, 507, + 261, 379, 186, 313, 314, 252, 313, 314, 77, 345, + 80, 346, 257, 258, 199, 395, 396, 310, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 84, 15, 208, 209, 210, 211, 313, 314, + 401, 110, 111, 424, 616, 595, 617, 254, 86, 142, + 87, 417, 88, 385, 83, 16, 90, 14, 212, 213, + 214, 93, 618, 101, 343, 619, 552, 200, 201, 202, + 203, 515, 35, 36, 37, 177, 313, 314, 476, 477, + 307, 107, 66, 67, 38, 39, 182, 68, 69, 70, + 313, 314, 375, 216, 376, 187, 377, 108, 505, 41, + 42, 43, 503, 112, 561, 370, 217, 218, 219, 317, + 223, 44, 45, 474, 479, 475, 516, 377, 517, 518, + 453, 519, 339, 454, 113, 384, -359, -359, 320, 321, + 366, 600, 469, 114, -359, 310, 188, 661, 204, 205, + 189, 190, 127, 371, 133, 191, 192, 206, 135, 207, + 724, 358, 725, 726, 317, -359, 325, 326, 327, 328, + 329, 330, 331, 136, 455, 208, 209, 210, 211, 129, + 130, 318, 319, 320, 321, 541, 509, 542, 545, 323, + 200, 201, 202, 203, 103, 104, 105, 106, 137, 212, + 213, 214, 95, 96, 97, 98, 481, 138, 485, 482, + 324, 325, 326, 327, 328, 329, 330, 331, 141, 564, + 483, 215, 528, 484, 530, 355, 216, 310, 534, 536, + 662, 535, 535, 145, 538, 470, 139, 310, 147, 217, + 218, 219, 563, 131, 132, 310, 220, 221, 222, 596, + 150, 223, 355, 224, 367, 599, 605, 317, 355, 305, + 306, 204, 205, 608, 624, 506, 609, 310, 625, 149, + 206, 626, 207, 313, 314, 289, -359, -359, 487, -189, + 488, 489, 490, 491, 154, 492, 493, 155, 208, 209, + 210, 211, 651, 657, 156, 355, 310, 200, 201, 202, + 203, 329, 330, 331, -359, -359, 327, 328, 329, 330, + 331, 158, 212, 213, 214, 566, 567, 568, 569, 570, + 159, 690, 571, 572, 691, 72, 73, 74, 200, 201, + 202, 203, 163, 663, 215, 461, 462, 463, 370, 216, + 363, 364, 573, 53, 54, 55, 56, 57, 58, 613, + 614, 59, 217, 218, 219, 698, 164, 165, 355, 220, + 221, 222, 733, 168, 223, 691, 224, 170, 204, 205, + 560, 193, 697, 14, 194, 195, 247, 206, 248, 207, + 250, 255, 259, 200, 201, 202, 203, 317, 260, 264, + 265, 266, 267, 269, 270, 208, 209, 210, 211, 204, + 205, 271, 287, 292, 318, 319, 320, 321, 206, 288, + 207, 293, 323, 294, 200, 201, 202, 203, 295, 212, + 213, 214, 296, 298, 299, 300, 208, 209, 210, 211, + 301, 302, 341, 324, 325, 326, 327, 328, 329, 330, + 331, 215, 332, 351, 606, 352, 216, 356, 361, 362, + 212, 213, 214, 365, 284, 285, 369, 378, 14, 217, + 218, 219, 380, 206, 381, 207, 220, 221, 222, 382, + 383, 223, 215, 224, 394, 418, 392, 216, 399, 419, + 420, 208, 209, 210, 211, 284, 451, 458, 467, 460, + 217, 218, 219, 452, 206, 457, 207, 220, 221, 222, + 398, 471, 223, 480, 224, 212, 213, 214, 478, 486, + 313, 504, 208, 209, 210, 211, 574, 575, 576, 577, + 578, 511, 508, 579, 580, 512, 513, 215, 514, 523, + 525, 532, 216, 533, 531, 537, 212, 213, 214, 539, + 549, 223, 550, 581, 551, 217, 218, 219, 554, 555, + 556, 558, 220, 221, 222, 557, 562, 223, 215, 224, + 565, 590, 591, 216, 597, 598, 602, 607, 615, 315, + 603, 316, 610, 611, 620, 623, 217, 218, 219, 621, + 627, 628, 652, 220, 221, 222, 629, 630, 223, 1, + 224, 2, 3, 4, 5, 6, 7, 8, 9, 655, + 631, 632, 633, 634, 635, 10, 370, 11, 12, 13, + 1, 636, 2, 3, 4, 5, 6, 7, 317, 9, + 637, 638, 658, 639, 640, 656, 10, 641, 11, 12, + 13, 642, 643, 644, 645, 318, 319, 320, 321, 322, + 646, 659, 647, 323, 648, 649, 650, 660, 664, 582, + 583, 584, 585, 586, 665, 317, 587, 588, 666, 667, + 668, 14, 669, 670, 324, 325, 326, 327, 328, 329, + 330, 331, 318, 319, 320, 321, 589, 671, 672, 673, + 323, 674, 14, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 675, 676, 677, 678, 679, + 680, 324, 325, 326, 327, 328, 329, 330, 331, 425, + 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 681, 682, 446, 683, 684, 447, 448, 685, 449, 15, + 686, 687, 688, 689, 692, 694, 695, 696, 310, 699, + 700, 701, 702, 703, 730, 704, 705, 706, 707, 728, + 15, 16, 734, 708, 732, 709, 710, 711, 712, 713, + 714, 715, 716, 717, 718, 719, 116, 720, 721, 722, + 723, 735, 16, 140, 527, 540, 117, 593, 253, 118, + 119, 594, 360, 120, 81, 510, 196, 121, 123, 268, + 198, 553, 612, 124, 125, 126, 391, 374, 592, 466, + 547, 601, 548, 731, 727, 0, 297 }; static const yytype_int16 yycheck[] = { - 166, 59, 345, 264, 16, 164, 3, 20, 67, 22, - 56, 24, 8, 4, 3, 6, 84, 77, 687, 385, - 71, 72, 13, 3, 34, 79, 63, 76, 385, 385, - 197, 385, 87, 110, 200, 88, 73, 4, 5, 6, - 33, 74, 87, 178, 3, 3, 213, 214, 183, 40, - 178, 217, 77, 180, 88, 183, 183, 48, 135, 728, - 149, 150, 151, 4, 5, 6, 84, 154, 155, 79, - 61, 4, 5, 6, 240, 241, 56, 145, 146, 70, - 56, 29, 30, 3, 32, 5, 6, 253, 349, 122, - 145, 146, 145, 146, 145, 146, 44, 45, 359, 148, - 145, 146, 445, 94, 95, 96, 140, 450, 77, 78, - 277, 102, 103, 104, 180, 281, 282, 183, 3, 4, - 5, 6, 63, 183, 183, 179, 292, 145, 146, 30, - 63, 392, 56, 179, 101, 102, 103, 104, 3, 180, - 306, 307, 183, 155, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 125, 126, - 127, 119, 153, 121, 3, 0, 158, 180, 334, 145, - 146, 0, 7, 516, 9, 10, 11, 12, 13, 14, - 15, 16, 179, 179, 550, 174, 244, 74, 23, 74, - 25, 26, 27, 550, 550, 20, 550, 22, 83, 24, - 85, 145, 146, 369, 370, 217, 154, 155, 145, 146, - 177, 159, 160, 161, 182, 156, 101, 102, 103, 104, - 8, 145, 146, 156, 391, 180, 123, 386, 183, 84, - 73, 86, 119, 88, 121, 122, 497, 124, 152, 183, - 125, 126, 127, 180, 79, 142, 143, 413, 5, 6, - 42, 165, 166, 167, 46, 47, 174, 175, 176, 51, - 52, 252, 147, 524, 73, 608, 181, 152, 280, 3, - 4, 5, 6, 170, 171, 172, 173, 174, 175, 176, - 165, 166, 167, 29, 30, 31, 344, 172, 173, 174, - 180, 14, 177, 183, 179, 41, 42, 84, 3, 86, - 466, 88, 468, 3, 471, 3, 4, 5, 6, 56, - 7, 3, 9, 10, 11, 12, 13, 14, 15, 16, - 378, 180, 157, 3, 183, 183, 23, 6, 25, 26, - 27, 180, 66, 180, 183, 502, 42, 43, 44, 45, - 74, 75, 145, 146, 179, 36, 37, 38, 39, 83, - 362, 85, 613, 180, 90, 91, 92, 93, 94, 21, - 180, 97, 98, 183, 80, 81, 82, 101, 102, 103, - 104, 537, 180, 162, 163, 183, 74, 75, 162, 163, - 392, 117, 79, 180, 66, 83, 183, 85, 48, 49, - 88, 125, 126, 127, 57, 58, 59, 60, 61, 62, - 68, 64, 65, 101, 102, 103, 104, 90, 91, 92, - 93, 94, 3, 147, 97, 98, 547, 548, 152, 3, - 4, 5, 6, 29, 30, 31, 74, 125, 126, 127, - 3, 165, 166, 167, 117, 41, 42, 63, 172, 173, - 174, 180, 179, 177, 183, 179, 180, 75, 614, 147, - 3, 4, 5, 6, 152, 180, 180, 3, 183, 183, - 157, 180, 180, 180, 183, 183, 183, 165, 166, 167, - 180, 3, 3, 183, 172, 173, 174, 180, 3, 177, - 183, 179, 179, 4, 67, 497, 180, 653, 3, 183, - 74, 75, 3, 180, 180, 79, 183, 183, 179, 83, - 54, 85, 69, 75, 3, 3, 4, 5, 6, 123, - 169, 63, 3, 79, 79, 180, 6, 101, 102, 103, - 104, 74, 75, 180, 179, 179, 140, 141, 142, 143, - 83, 4, 85, 179, 148, 4, 4, 4, 179, 179, - 6, 125, 126, 127, 179, 179, 179, 70, 101, 102, - 103, 104, 181, 56, 179, 169, 170, 171, 172, 173, - 174, 175, 176, 147, 179, 79, 179, 179, 152, 180, - 179, 4, 125, 126, 127, 180, 74, 75, 4, 4, - 4, 165, 166, 167, 164, 83, 3, 85, 172, 173, - 174, 74, 179, 177, 147, 179, 6, 5, 183, 152, - 120, 179, 179, 101, 102, 103, 104, 3, 183, 6, - 148, 180, 165, 166, 167, 77, 145, 179, 122, 172, - 173, 174, 183, 183, 177, 28, 179, 125, 126, 127, - 179, 179, 7, 4, 9, 10, 11, 12, 13, 14, - 123, 16, 179, 179, 179, 74, 179, 76, 23, 147, - 25, 26, 27, 3, 152, 50, 74, 140, 141, 142, - 143, 180, 4, 4, 177, 148, 4, 165, 166, 167, - 58, 58, 3, 183, 172, 173, 174, 53, 180, 177, - 6, 179, 122, 120, 179, 6, 169, 170, 171, 172, - 173, 174, 175, 176, 123, 153, 180, 180, 183, 180, - 74, 180, 179, 54, 79, 123, 55, 183, 180, 183, - 153, 140, 141, 142, 143, 144, 3, 3, 183, 148, - 183, 4, 140, 141, 142, 143, 183, 145, 183, 183, - 148, 35, 36, 37, 38, 39, 40, 183, 183, 43, - 169, 170, 171, 172, 173, 174, 175, 176, 183, 123, - 4, 169, 170, 171, 172, 173, 174, 175, 176, 6, - 183, 183, 183, 183, 183, 63, 140, 141, 142, 143, - 183, 183, 183, 6, 148, 6, 90, 91, 92, 93, - 94, 183, 157, 97, 98, 183, 6, 6, 6, 183, - 183, 183, 183, 6, 6, 169, 170, 171, 172, 173, - 174, 175, 176, 117, 179, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 6, 6, 112, 6, - 6, 115, 116, 6, 118, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 169, - 3, 183, 79, 180, 183, 180, 4, 180, 180, 180, - 6, 180, 180, 180, 180, 180, 83, 180, 180, 180, - 180, 180, 513, 180, 180, 180, 180, 59, 180, 180, - 180, 180, 180, 513, 465, 180, 447, 59, 180, 179, - 151, 180, 183, 16, 140, 413, 254, 545, 134, 479, - 188, 283, 59, 59, 59, 59, 512, 59, 59, 59, - 59, 303, 472, 355, 528, 472, 721, -1, 684, -1, - 207 + 168, 271, 16, 60, 352, 166, 0, 3, 8, 392, + 3, 392, 56, 7, 67, 9, 10, 11, 12, 13, + 14, 15, 16, 3, 79, 76, 4, 392, 6, 23, + 392, 25, 26, 27, 204, 13, 20, 84, 22, 207, + 24, 77, 87, 180, 56, 84, 183, 56, 694, 3, + 220, 221, 3, 88, 5, 6, 224, 87, 154, 155, + 3, 63, 40, 3, 160, 5, 6, 4, 5, 6, + 48, 73, 3, 178, 5, 6, 178, 33, 183, 247, + 248, 183, 111, 30, 62, 79, 356, 29, 30, 735, + 32, 89, 260, 71, 71, 72, 366, 148, 145, 146, + 145, 146, 44, 45, 452, 77, 145, 146, 137, 457, + 145, 146, 63, 56, 284, 145, 146, 95, 96, 97, + 288, 289, 74, 63, 179, 103, 104, 105, 3, 399, + 183, 299, 63, 145, 146, 179, 145, 146, 3, 119, + 158, 121, 34, 157, 142, 313, 314, 183, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 182, 157, 101, 102, 103, 104, 145, 146, + 122, 77, 78, 341, 557, 523, 557, 155, 20, 179, + 22, 174, 24, 179, 0, 179, 8, 79, 125, 126, + 127, 73, 557, 73, 251, 557, 180, 3, 4, 5, + 6, 74, 29, 30, 31, 156, 145, 146, 376, 377, + 224, 181, 154, 155, 41, 42, 156, 159, 160, 161, + 145, 146, 84, 152, 86, 156, 88, 14, 398, 29, + 30, 31, 393, 3, 504, 74, 165, 166, 167, 123, + 177, 41, 42, 84, 183, 86, 119, 88, 121, 122, + 180, 124, 420, 183, 3, 180, 140, 141, 142, 143, + 66, 531, 180, 3, 148, 183, 42, 615, 74, 75, + 46, 47, 3, 287, 3, 51, 52, 83, 56, 85, + 3, 259, 5, 6, 123, 169, 170, 171, 172, 173, + 174, 175, 176, 183, 351, 101, 102, 103, 104, 162, + 163, 140, 141, 142, 143, 473, 145, 475, 478, 148, + 3, 4, 5, 6, 42, 43, 44, 45, 6, 125, + 126, 127, 36, 37, 38, 39, 180, 180, 385, 183, + 169, 170, 171, 172, 173, 174, 175, 176, 21, 509, + 180, 147, 180, 183, 180, 183, 152, 183, 180, 180, + 620, 183, 183, 66, 180, 369, 180, 183, 68, 165, + 166, 167, 180, 162, 163, 183, 172, 173, 174, 180, + 3, 177, 183, 179, 180, 180, 544, 123, 183, 5, + 6, 74, 75, 180, 180, 399, 183, 183, 180, 74, + 83, 183, 85, 145, 146, 88, 142, 143, 57, 58, + 59, 60, 61, 62, 3, 64, 65, 63, 101, 102, + 103, 104, 180, 180, 179, 183, 183, 3, 4, 5, + 6, 174, 175, 176, 170, 171, 172, 173, 174, 175, + 176, 75, 125, 126, 127, 90, 91, 92, 93, 94, + 3, 180, 97, 98, 183, 149, 150, 151, 3, 4, + 5, 6, 3, 621, 147, 80, 81, 82, 74, 152, + 48, 49, 117, 35, 36, 37, 38, 39, 40, 554, + 555, 43, 165, 166, 167, 180, 3, 3, 183, 172, + 173, 174, 180, 67, 177, 183, 179, 4, 74, 75, + 504, 3, 660, 79, 3, 179, 54, 83, 69, 85, + 75, 3, 63, 3, 4, 5, 6, 123, 169, 79, + 79, 3, 6, 180, 180, 101, 102, 103, 104, 74, + 75, 179, 179, 4, 140, 141, 142, 143, 83, 179, + 85, 4, 148, 4, 3, 4, 5, 6, 4, 125, + 126, 127, 6, 179, 179, 179, 101, 102, 103, 104, + 179, 179, 70, 169, 170, 171, 172, 173, 174, 175, + 176, 147, 181, 56, 180, 179, 152, 179, 179, 179, + 125, 126, 127, 180, 74, 75, 179, 4, 79, 165, + 166, 167, 4, 83, 4, 85, 172, 173, 174, 4, + 180, 177, 147, 179, 3, 6, 164, 152, 179, 5, + 183, 101, 102, 103, 104, 74, 120, 3, 6, 183, + 165, 166, 167, 179, 83, 179, 85, 172, 173, 174, + 148, 180, 177, 183, 179, 125, 126, 127, 77, 183, + 145, 179, 101, 102, 103, 104, 90, 91, 92, 93, + 94, 179, 122, 97, 98, 179, 179, 147, 179, 179, + 28, 4, 152, 3, 179, 50, 125, 126, 127, 180, + 4, 177, 4, 117, 4, 165, 166, 167, 58, 58, + 3, 53, 172, 173, 174, 183, 180, 177, 147, 179, + 6, 122, 120, 152, 179, 153, 6, 183, 179, 74, + 180, 76, 180, 180, 54, 180, 165, 166, 167, 55, + 183, 183, 3, 172, 173, 174, 183, 183, 177, 7, + 179, 9, 10, 11, 12, 13, 14, 15, 16, 3, + 183, 183, 183, 183, 183, 23, 74, 25, 26, 27, + 7, 183, 9, 10, 11, 12, 13, 14, 123, 16, + 183, 183, 4, 183, 183, 153, 23, 183, 25, 26, + 27, 183, 183, 183, 183, 140, 141, 142, 143, 144, + 183, 4, 183, 148, 183, 183, 183, 63, 6, 90, + 91, 92, 93, 94, 6, 123, 97, 98, 6, 6, + 6, 79, 6, 6, 169, 170, 171, 172, 173, 174, + 175, 176, 140, 141, 142, 143, 117, 6, 6, 6, + 148, 6, 79, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 6, 6, 6, 6, 6, + 6, 169, 170, 171, 172, 173, 174, 175, 176, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 6, 6, 112, 6, 6, 115, 116, 6, 118, 157, + 6, 6, 6, 169, 79, 3, 183, 180, 183, 180, + 180, 180, 180, 180, 4, 180, 180, 180, 180, 179, + 157, 179, 6, 180, 183, 180, 180, 180, 180, 180, + 180, 180, 180, 180, 180, 180, 60, 180, 180, 180, + 180, 180, 179, 84, 454, 472, 60, 520, 153, 60, + 60, 520, 261, 60, 16, 420, 136, 60, 60, 195, + 142, 486, 552, 60, 60, 60, 310, 290, 519, 362, + 479, 535, 479, 728, 691, -1, 214 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of @@ -1326,74 +1329,75 @@ static const yytype_int16 yystos[] = 189, 199, 200, 202, 204, 207, 208, 209, 210, 211, 233, 238, 239, 240, 241, 29, 30, 31, 41, 42, 33, 29, 30, 31, 41, 42, 3, 231, 77, 231, - 154, 155, 35, 36, 37, 38, 39, 40, 43, 203, - 29, 30, 32, 44, 45, 154, 155, 159, 160, 161, - 30, 149, 150, 151, 3, 231, 3, 234, 235, 158, - 210, 211, 0, 182, 273, 20, 22, 24, 227, 8, - 212, 214, 73, 272, 272, 272, 272, 272, 274, 231, - 73, 271, 271, 271, 271, 271, 181, 14, 231, 77, - 78, 3, 3, 188, 189, 199, 200, 204, 207, 208, - 209, 238, 239, 240, 241, 3, 231, 162, 163, 162, - 163, 3, 231, 56, 183, 6, 180, 180, 187, 21, - 179, 213, 214, 66, 221, 68, 215, 74, 3, 231, - 231, 231, 3, 63, 179, 201, 75, 3, 231, 231, - 231, 3, 3, 3, 205, 206, 67, 224, 4, 270, - 270, 4, 5, 6, 63, 156, 4, 5, 6, 63, - 156, 42, 46, 47, 51, 52, 3, 3, 179, 235, - 270, 213, 214, 3, 4, 5, 6, 74, 75, 83, - 85, 101, 102, 103, 104, 125, 126, 127, 147, 152, - 165, 166, 167, 172, 173, 174, 177, 179, 242, 244, - 245, 246, 247, 248, 249, 250, 252, 253, 254, 255, - 256, 258, 259, 260, 261, 263, 264, 265, 266, 267, - 54, 69, 219, 75, 56, 179, 201, 231, 3, 198, - 34, 211, 63, 169, 183, 224, 245, 79, 79, 3, - 6, 212, 180, 180, 179, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 74, 75, 246, - 179, 179, 88, 245, 257, 4, 4, 4, 4, 6, - 267, 179, 179, 179, 179, 179, 246, 246, 5, 6, - 211, 245, 77, 183, 222, 56, 145, 146, 74, 76, - 123, 140, 141, 142, 143, 144, 148, 169, 170, 171, - 172, 173, 174, 175, 176, 181, 178, 183, 178, 183, - 216, 217, 245, 245, 70, 220, 209, 3, 119, 121, - 190, 191, 192, 197, 56, 179, 279, 180, 183, 179, - 243, 231, 245, 206, 179, 179, 48, 49, 180, 66, - 180, 242, 179, 74, 211, 245, 245, 257, 84, 86, - 88, 4, 245, 4, 4, 4, 180, 180, 179, 228, - 229, 230, 231, 236, 244, 164, 223, 3, 245, 245, - 76, 148, 179, 74, 122, 246, 246, 246, 246, 246, - 246, 246, 246, 246, 246, 246, 246, 246, 246, 3, - 174, 6, 5, 183, 71, 72, 218, 245, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 112, - 115, 116, 118, 193, 120, 179, 180, 183, 209, 198, - 179, 3, 242, 183, 80, 81, 82, 268, 269, 268, - 6, 242, 180, 211, 180, 56, 87, 84, 86, 245, - 245, 77, 183, 183, 180, 183, 180, 183, 209, 183, - 57, 59, 60, 61, 62, 64, 65, 237, 3, 56, - 232, 247, 248, 249, 250, 251, 224, 179, 246, 211, - 242, 122, 145, 217, 179, 179, 179, 179, 74, 119, - 121, 122, 124, 194, 195, 196, 179, 198, 28, 276, - 191, 180, 198, 180, 179, 4, 3, 180, 183, 180, - 50, 180, 180, 193, 245, 245, 84, 87, 246, 262, - 263, 265, 4, 4, 4, 180, 229, 58, 58, 3, - 183, 53, 226, 211, 242, 180, 180, 246, 6, 90, - 91, 92, 93, 94, 97, 98, 117, 90, 91, 92, - 93, 94, 97, 98, 117, 90, 91, 92, 93, 94, - 97, 98, 117, 122, 120, 261, 195, 196, 198, 180, - 179, 153, 180, 242, 269, 6, 180, 84, 245, 180, - 183, 180, 183, 180, 180, 232, 230, 230, 179, 247, - 248, 249, 250, 54, 55, 225, 180, 180, 180, 183, + 154, 155, 160, 35, 36, 37, 38, 39, 40, 43, + 203, 29, 30, 32, 44, 45, 154, 155, 159, 160, + 161, 30, 149, 150, 151, 3, 231, 3, 234, 235, + 158, 210, 211, 0, 182, 273, 20, 22, 24, 227, + 8, 212, 214, 73, 272, 272, 272, 272, 272, 274, + 231, 73, 271, 271, 271, 271, 271, 181, 14, 231, + 77, 78, 3, 3, 3, 188, 189, 199, 200, 204, + 207, 208, 209, 238, 239, 240, 241, 3, 231, 162, + 163, 162, 163, 3, 231, 56, 183, 6, 180, 180, + 187, 21, 179, 213, 214, 66, 221, 68, 215, 74, + 3, 231, 231, 231, 3, 63, 179, 201, 75, 3, + 231, 231, 231, 3, 3, 3, 205, 206, 67, 224, + 4, 270, 270, 3, 5, 6, 63, 156, 3, 5, + 6, 63, 156, 3, 5, 6, 63, 156, 42, 46, + 47, 51, 52, 3, 3, 179, 235, 270, 213, 214, + 3, 4, 5, 6, 74, 75, 83, 85, 101, 102, + 103, 104, 125, 126, 127, 147, 152, 165, 166, 167, + 172, 173, 174, 177, 179, 242, 244, 245, 246, 247, + 248, 249, 250, 252, 253, 254, 255, 256, 258, 259, + 260, 261, 263, 264, 265, 266, 267, 54, 69, 219, + 75, 56, 179, 201, 231, 3, 198, 34, 211, 63, + 169, 183, 224, 245, 79, 79, 3, 6, 212, 180, + 180, 179, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 74, 75, 246, 179, 179, 88, + 245, 257, 4, 4, 4, 4, 6, 267, 179, 179, + 179, 179, 179, 246, 246, 5, 6, 211, 245, 77, + 183, 222, 56, 145, 146, 74, 76, 123, 140, 141, + 142, 143, 144, 148, 169, 170, 171, 172, 173, 174, + 175, 176, 181, 178, 183, 178, 183, 216, 217, 245, + 245, 70, 220, 209, 3, 119, 121, 190, 191, 192, + 197, 56, 179, 279, 180, 183, 179, 243, 231, 245, + 206, 179, 179, 48, 49, 180, 66, 180, 242, 179, + 74, 211, 245, 245, 257, 84, 86, 88, 4, 245, + 4, 4, 4, 180, 180, 179, 228, 229, 230, 231, + 236, 244, 164, 223, 3, 245, 245, 76, 148, 179, + 74, 122, 246, 246, 246, 246, 246, 246, 246, 246, + 246, 246, 246, 246, 246, 246, 3, 174, 6, 5, + 183, 71, 72, 218, 245, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 112, 115, 116, 118, + 193, 120, 179, 180, 183, 209, 198, 179, 3, 242, + 183, 80, 81, 82, 268, 269, 268, 6, 242, 180, + 211, 180, 56, 87, 84, 86, 245, 245, 77, 183, + 183, 180, 183, 180, 183, 209, 183, 57, 59, 60, + 61, 62, 64, 65, 237, 3, 56, 232, 247, 248, + 249, 250, 251, 224, 179, 246, 211, 242, 122, 145, + 217, 179, 179, 179, 179, 74, 119, 121, 122, 124, + 194, 195, 196, 179, 198, 28, 276, 191, 180, 198, + 180, 179, 4, 3, 180, 183, 180, 50, 180, 180, + 193, 245, 245, 84, 87, 246, 262, 263, 265, 4, + 4, 4, 180, 229, 58, 58, 3, 183, 53, 226, + 211, 242, 180, 180, 246, 6, 90, 91, 92, 93, + 94, 97, 98, 117, 90, 91, 92, 93, 94, 97, + 98, 117, 90, 91, 92, 93, 94, 97, 98, 117, + 122, 120, 261, 195, 196, 198, 180, 179, 153, 180, + 242, 269, 6, 180, 84, 245, 180, 183, 180, 183, + 180, 180, 232, 230, 230, 179, 247, 248, 249, 250, + 54, 55, 225, 180, 180, 180, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 180, 3, 277, 278, 3, 153, - 180, 4, 4, 63, 198, 242, 245, 6, 6, 6, + 183, 180, 3, 277, 278, 3, 153, 180, 4, 4, + 63, 198, 242, 245, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 169, 180, 183, 79, 275, 3, 183, 180, - 245, 180, 180, 180, 180, 180, 180, 180, 180, 180, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 169, + 180, 183, 79, 275, 3, 183, 180, 245, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 3, 5, 6, - 278, 179, 275, 4, 277, 183, 180, 6, 180, 275 + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, + 180, 180, 180, 180, 3, 5, 6, 278, 179, 275, + 4, 277, 183, 180, 6, 180, 275 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ @@ -1421,21 +1425,22 @@ static const yytype_int16 yyr1[] = 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 239, 239, 239, 240, 241, 241, 241, 241, 241, 241, - 241, 241, 241, 241, 241, 241, 241, 242, 242, 243, - 243, 244, 244, 245, 245, 245, 245, 245, 246, 246, - 246, 246, 246, 246, 246, 246, 246, 246, 246, 247, - 248, 248, 249, 249, 250, 250, 251, 251, 251, 251, - 251, 251, 251, 251, 252, 252, 252, 252, 252, 252, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 242, 242, 243, 243, 244, 244, 245, 245, + 245, 245, 245, 246, 246, 246, 246, 246, 246, 246, + 246, 246, 246, 246, 247, 248, 248, 249, 249, 250, + 250, 251, 251, 251, 251, 251, 251, 251, 251, 252, + 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 253, 253, 254, - 255, 255, 256, 256, 256, 256, 257, 257, 258, 259, - 259, 259, 259, 260, 260, 260, 260, 261, 261, 261, - 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, - 262, 262, 263, 264, 264, 265, 266, 266, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 268, 268, 269, 269, 269, 270, 271, 271, 272, 272, - 273, 273, 274, 274, 275, 275, 276, 276, 277, 277, - 278, 278, 278, 278, 279, 279, 279 + 252, 252, 253, 253, 254, 255, 255, 256, 256, 256, + 256, 257, 257, 258, 259, 259, 259, 259, 260, 260, + 260, 260, 261, 261, 261, 261, 261, 261, 261, 261, + 261, 261, 261, 261, 261, 262, 262, 263, 264, 264, + 265, 266, 266, 267, 267, 267, 267, 267, 267, 267, + 267, 267, 267, 267, 267, 268, 268, 269, 269, 269, + 270, 271, 271, 272, 272, 273, 273, 274, 274, 275, + 275, 276, 276, 277, 277, 278, 278, 278, 278, 279, + 279, 279 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ @@ -1463,21 +1468,22 @@ static const yytype_int8 yyr2[] = 2, 2, 2, 2, 3, 2, 3, 3, 4, 4, 3, 3, 4, 4, 5, 6, 7, 9, 4, 5, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 3, 1, 3, 3, - 5, 3, 1, 1, 1, 1, 1, 1, 3, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, - 6, 8, 4, 6, 4, 6, 1, 1, 1, 1, - 3, 3, 3, 3, 3, 4, 5, 4, 3, 2, - 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 6, 3, 4, 3, 3, 5, - 5, 6, 4, 6, 3, 5, 4, 5, 6, 4, - 5, 5, 6, 1, 3, 1, 3, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, - 1, 1, 2, 2, 3, 2, 2, 3, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 1, 3, 2, 2, 1, 1, 2, 0, 3, 0, - 1, 0, 2, 0, 4, 0, 4, 0, 1, 3, - 1, 3, 3, 3, 6, 7, 3 + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 3, 1, 3, 3, 5, 3, 1, 1, 1, + 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 13, 6, 8, 4, 6, 4, + 6, 1, 1, 1, 1, 3, 3, 3, 3, 3, + 4, 5, 4, 3, 2, 2, 2, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, + 3, 4, 3, 3, 5, 5, 6, 4, 6, 3, + 5, 4, 5, 6, 4, 5, 5, 6, 1, 3, + 1, 3, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 2, 1, 1, 1, 1, 1, 2, 2, 3, + 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 1, 3, 2, 2, 1, + 1, 2, 0, 3, 0, 1, 0, 2, 0, 4, + 0, 4, 0, 1, 3, 1, 3, 3, 3, 6, + 7, 3 }; @@ -2045,7 +2051,7 @@ yydestruct (const char *yymsg, { free(((*yyvaluep).str_value)); } -#line 2049 "parser.cpp" +#line 2055 "parser.cpp" break; case YYSYMBOL_STRING: /* STRING */ @@ -2053,7 +2059,7 @@ yydestruct (const char *yymsg, { free(((*yyvaluep).str_value)); } -#line 2057 "parser.cpp" +#line 2063 "parser.cpp" break; case YYSYMBOL_statement_list: /* statement_list */ @@ -2067,7 +2073,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).stmt_array)); } } -#line 2071 "parser.cpp" +#line 2077 "parser.cpp" break; case YYSYMBOL_table_element_array: /* table_element_array */ @@ -2081,7 +2087,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).table_element_array_t)); } } -#line 2085 "parser.cpp" +#line 2091 "parser.cpp" break; case YYSYMBOL_column_constraints: /* column_constraints */ @@ -2092,7 +2098,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).column_constraints_t)); } } -#line 2096 "parser.cpp" +#line 2102 "parser.cpp" break; case YYSYMBOL_default_expr: /* default_expr */ @@ -2100,7 +2106,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 2104 "parser.cpp" +#line 2110 "parser.cpp" break; case YYSYMBOL_identifier_array: /* identifier_array */ @@ -2109,7 +2115,7 @@ yydestruct (const char *yymsg, fprintf(stderr, "destroy identifier array\n"); delete (((*yyvaluep).identifier_array_t)); } -#line 2113 "parser.cpp" +#line 2119 "parser.cpp" break; case YYSYMBOL_optional_identifier_array: /* optional_identifier_array */ @@ -2118,7 +2124,7 @@ yydestruct (const char *yymsg, fprintf(stderr, "destroy identifier array\n"); delete (((*yyvaluep).identifier_array_t)); } -#line 2122 "parser.cpp" +#line 2128 "parser.cpp" break; case YYSYMBOL_update_expr_array: /* update_expr_array */ @@ -2132,7 +2138,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).update_expr_array_t)); } } -#line 2136 "parser.cpp" +#line 2142 "parser.cpp" break; case YYSYMBOL_update_expr: /* update_expr */ @@ -2143,7 +2149,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).update_expr_t); } } -#line 2147 "parser.cpp" +#line 2153 "parser.cpp" break; case YYSYMBOL_select_statement: /* select_statement */ @@ -2153,7 +2159,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).select_stmt); } } -#line 2157 "parser.cpp" +#line 2163 "parser.cpp" break; case YYSYMBOL_select_with_paren: /* select_with_paren */ @@ -2163,7 +2169,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).select_stmt); } } -#line 2167 "parser.cpp" +#line 2173 "parser.cpp" break; case YYSYMBOL_select_without_paren: /* select_without_paren */ @@ -2173,7 +2179,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).select_stmt); } } -#line 2177 "parser.cpp" +#line 2183 "parser.cpp" break; case YYSYMBOL_select_clause_with_modifier: /* select_clause_with_modifier */ @@ -2183,7 +2189,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).select_stmt); } } -#line 2187 "parser.cpp" +#line 2193 "parser.cpp" break; case YYSYMBOL_select_clause_without_modifier_paren: /* select_clause_without_modifier_paren */ @@ -2193,7 +2199,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).select_stmt); } } -#line 2197 "parser.cpp" +#line 2203 "parser.cpp" break; case YYSYMBOL_select_clause_without_modifier: /* select_clause_without_modifier */ @@ -2203,7 +2209,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).select_stmt); } } -#line 2207 "parser.cpp" +#line 2213 "parser.cpp" break; case YYSYMBOL_order_by_clause: /* order_by_clause */ @@ -2217,7 +2223,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).order_by_expr_list_t)); } } -#line 2221 "parser.cpp" +#line 2227 "parser.cpp" break; case YYSYMBOL_order_by_expr_list: /* order_by_expr_list */ @@ -2231,7 +2237,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).order_by_expr_list_t)); } } -#line 2235 "parser.cpp" +#line 2241 "parser.cpp" break; case YYSYMBOL_order_by_expr: /* order_by_expr */ @@ -2241,7 +2247,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).order_by_expr_t)->expr_; delete ((*yyvaluep).order_by_expr_t); } -#line 2245 "parser.cpp" +#line 2251 "parser.cpp" break; case YYSYMBOL_limit_expr: /* limit_expr */ @@ -2249,7 +2255,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2253 "parser.cpp" +#line 2259 "parser.cpp" break; case YYSYMBOL_offset_expr: /* offset_expr */ @@ -2257,7 +2263,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2261 "parser.cpp" +#line 2267 "parser.cpp" break; case YYSYMBOL_from_clause: /* from_clause */ @@ -2266,7 +2272,7 @@ yydestruct (const char *yymsg, fprintf(stderr, "destroy table reference\n"); delete (((*yyvaluep).table_reference_t)); } -#line 2270 "parser.cpp" +#line 2276 "parser.cpp" break; case YYSYMBOL_search_clause: /* search_clause */ @@ -2274,7 +2280,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2278 "parser.cpp" +#line 2284 "parser.cpp" break; case YYSYMBOL_where_clause: /* where_clause */ @@ -2282,7 +2288,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2286 "parser.cpp" +#line 2292 "parser.cpp" break; case YYSYMBOL_having_clause: /* having_clause */ @@ -2290,7 +2296,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2294 "parser.cpp" +#line 2300 "parser.cpp" break; case YYSYMBOL_group_by_clause: /* group_by_clause */ @@ -2304,7 +2310,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).expr_array_t)); } } -#line 2308 "parser.cpp" +#line 2314 "parser.cpp" break; case YYSYMBOL_table_reference: /* table_reference */ @@ -2313,7 +2319,7 @@ yydestruct (const char *yymsg, fprintf(stderr, "destroy table reference\n"); delete (((*yyvaluep).table_reference_t)); } -#line 2317 "parser.cpp" +#line 2323 "parser.cpp" break; case YYSYMBOL_table_reference_unit: /* table_reference_unit */ @@ -2322,7 +2328,7 @@ yydestruct (const char *yymsg, fprintf(stderr, "destroy table reference\n"); delete (((*yyvaluep).table_reference_t)); } -#line 2326 "parser.cpp" +#line 2332 "parser.cpp" break; case YYSYMBOL_table_reference_name: /* table_reference_name */ @@ -2331,7 +2337,7 @@ yydestruct (const char *yymsg, fprintf(stderr, "destroy table reference\n"); delete (((*yyvaluep).table_reference_t)); } -#line 2335 "parser.cpp" +#line 2341 "parser.cpp" break; case YYSYMBOL_table_name: /* table_name */ @@ -2344,7 +2350,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).table_name_t)); } } -#line 2348 "parser.cpp" +#line 2354 "parser.cpp" break; case YYSYMBOL_table_alias: /* table_alias */ @@ -2353,7 +2359,7 @@ yydestruct (const char *yymsg, fprintf(stderr, "destroy table alias\n"); delete (((*yyvaluep).table_alias_t)); } -#line 2357 "parser.cpp" +#line 2363 "parser.cpp" break; case YYSYMBOL_with_clause: /* with_clause */ @@ -2367,7 +2373,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).with_expr_list_t)); } } -#line 2371 "parser.cpp" +#line 2377 "parser.cpp" break; case YYSYMBOL_with_expr_list: /* with_expr_list */ @@ -2381,7 +2387,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).with_expr_list_t)); } } -#line 2385 "parser.cpp" +#line 2391 "parser.cpp" break; case YYSYMBOL_with_expr: /* with_expr */ @@ -2391,7 +2397,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).with_expr_t)->select_; delete ((*yyvaluep).with_expr_t); } -#line 2395 "parser.cpp" +#line 2401 "parser.cpp" break; case YYSYMBOL_join_clause: /* join_clause */ @@ -2400,7 +2406,7 @@ yydestruct (const char *yymsg, fprintf(stderr, "destroy table reference\n"); delete (((*yyvaluep).table_reference_t)); } -#line 2404 "parser.cpp" +#line 2410 "parser.cpp" break; case YYSYMBOL_expr_array: /* expr_array */ @@ -2414,7 +2420,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).expr_array_t)); } } -#line 2418 "parser.cpp" +#line 2424 "parser.cpp" break; case YYSYMBOL_expr_array_list: /* expr_array_list */ @@ -2431,7 +2437,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).expr_array_list_t)); } } -#line 2435 "parser.cpp" +#line 2441 "parser.cpp" break; case YYSYMBOL_expr_alias: /* expr_alias */ @@ -2439,7 +2445,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2443 "parser.cpp" +#line 2449 "parser.cpp" break; case YYSYMBOL_expr: /* expr */ @@ -2447,7 +2453,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2451 "parser.cpp" +#line 2457 "parser.cpp" break; case YYSYMBOL_operand: /* operand */ @@ -2455,7 +2461,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2459 "parser.cpp" +#line 2465 "parser.cpp" break; case YYSYMBOL_knn_expr: /* knn_expr */ @@ -2463,7 +2469,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2467 "parser.cpp" +#line 2473 "parser.cpp" break; case YYSYMBOL_match_expr: /* match_expr */ @@ -2471,7 +2477,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2475 "parser.cpp" +#line 2481 "parser.cpp" break; case YYSYMBOL_query_expr: /* query_expr */ @@ -2479,7 +2485,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2483 "parser.cpp" +#line 2489 "parser.cpp" break; case YYSYMBOL_fusion_expr: /* fusion_expr */ @@ -2487,7 +2493,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2491 "parser.cpp" +#line 2497 "parser.cpp" break; case YYSYMBOL_sub_search_array: /* sub_search_array */ @@ -2501,7 +2507,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).expr_array_t)); } } -#line 2505 "parser.cpp" +#line 2511 "parser.cpp" break; case YYSYMBOL_function_expr: /* function_expr */ @@ -2509,7 +2515,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2513 "parser.cpp" +#line 2519 "parser.cpp" break; case YYSYMBOL_conjunction_expr: /* conjunction_expr */ @@ -2517,7 +2523,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2521 "parser.cpp" +#line 2527 "parser.cpp" break; case YYSYMBOL_between_expr: /* between_expr */ @@ -2525,7 +2531,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2529 "parser.cpp" +#line 2535 "parser.cpp" break; case YYSYMBOL_in_expr: /* in_expr */ @@ -2533,7 +2539,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2537 "parser.cpp" +#line 2543 "parser.cpp" break; case YYSYMBOL_case_expr: /* case_expr */ @@ -2541,7 +2547,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2545 "parser.cpp" +#line 2551 "parser.cpp" break; case YYSYMBOL_case_check_array: /* case_check_array */ @@ -2554,7 +2560,7 @@ yydestruct (const char *yymsg, } } } -#line 2558 "parser.cpp" +#line 2564 "parser.cpp" break; case YYSYMBOL_cast_expr: /* cast_expr */ @@ -2562,7 +2568,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2566 "parser.cpp" +#line 2572 "parser.cpp" break; case YYSYMBOL_subquery_expr: /* subquery_expr */ @@ -2570,7 +2576,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2574 "parser.cpp" +#line 2580 "parser.cpp" break; case YYSYMBOL_column_expr: /* column_expr */ @@ -2578,7 +2584,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2582 "parser.cpp" +#line 2588 "parser.cpp" break; case YYSYMBOL_constant_expr: /* constant_expr */ @@ -2586,7 +2592,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 2590 "parser.cpp" +#line 2596 "parser.cpp" break; case YYSYMBOL_array_expr: /* array_expr */ @@ -2594,7 +2600,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 2598 "parser.cpp" +#line 2604 "parser.cpp" break; case YYSYMBOL_long_array_expr: /* long_array_expr */ @@ -2602,7 +2608,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 2606 "parser.cpp" +#line 2612 "parser.cpp" break; case YYSYMBOL_unclosed_long_array_expr: /* unclosed_long_array_expr */ @@ -2610,7 +2616,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 2614 "parser.cpp" +#line 2620 "parser.cpp" break; case YYSYMBOL_double_array_expr: /* double_array_expr */ @@ -2618,7 +2624,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 2622 "parser.cpp" +#line 2628 "parser.cpp" break; case YYSYMBOL_unclosed_double_array_expr: /* unclosed_double_array_expr */ @@ -2626,7 +2632,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 2630 "parser.cpp" +#line 2636 "parser.cpp" break; case YYSYMBOL_interval_expr: /* interval_expr */ @@ -2634,7 +2640,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 2638 "parser.cpp" +#line 2644 "parser.cpp" break; case YYSYMBOL_file_path: /* file_path */ @@ -2642,7 +2648,7 @@ yydestruct (const char *yymsg, { free(((*yyvaluep).str_value)); } -#line 2646 "parser.cpp" +#line 2652 "parser.cpp" break; case YYSYMBOL_if_not_exists_info: /* if_not_exists_info */ @@ -2653,7 +2659,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).if_not_exists_info_t)); } } -#line 2657 "parser.cpp" +#line 2663 "parser.cpp" break; case YYSYMBOL_with_index_param_list: /* with_index_param_list */ @@ -2667,7 +2673,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).with_index_param_list_t)); } } -#line 2671 "parser.cpp" +#line 2677 "parser.cpp" break; case YYSYMBOL_optional_table_properties_list: /* optional_table_properties_list */ @@ -2681,7 +2687,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).with_index_param_list_t)); } } -#line 2685 "parser.cpp" +#line 2691 "parser.cpp" break; case YYSYMBOL_index_info_list: /* index_info_list */ @@ -2695,7 +2701,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).index_info_list_t)); } } -#line 2699 "parser.cpp" +#line 2705 "parser.cpp" break; default: @@ -2803,7 +2809,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.string_length = 0; } -#line 2807 "parser.cpp" +#line 2813 "parser.cpp" yylsp[0] = yylloc; goto yysetstate; @@ -3018,7 +3024,7 @@ YYLTYPE yylloc = yyloc_default; { result->statements_ptr_ = (yyvsp[-1].stmt_array); } -#line 3022 "parser.cpp" +#line 3028 "parser.cpp" break; case 3: /* statement_list: statement */ @@ -3029,7 +3035,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.stmt_array) = new std::vector(); (yyval.stmt_array)->push_back((yyvsp[0].base_stmt)); } -#line 3033 "parser.cpp" +#line 3039 "parser.cpp" break; case 4: /* statement_list: statement_list ';' statement */ @@ -3040,145 +3046,145 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-2].stmt_array)->push_back((yyvsp[0].base_stmt)); (yyval.stmt_array) = (yyvsp[-2].stmt_array); } -#line 3044 "parser.cpp" +#line 3050 "parser.cpp" break; case 5: /* statement: create_statement */ #line 490 "parser.y" { (yyval.base_stmt) = (yyvsp[0].create_stmt); } -#line 3050 "parser.cpp" +#line 3056 "parser.cpp" break; case 6: /* statement: drop_statement */ #line 491 "parser.y" { (yyval.base_stmt) = (yyvsp[0].drop_stmt); } -#line 3056 "parser.cpp" +#line 3062 "parser.cpp" break; case 7: /* statement: copy_statement */ #line 492 "parser.y" { (yyval.base_stmt) = (yyvsp[0].copy_stmt); } -#line 3062 "parser.cpp" +#line 3068 "parser.cpp" break; case 8: /* statement: show_statement */ #line 493 "parser.y" { (yyval.base_stmt) = (yyvsp[0].show_stmt); } -#line 3068 "parser.cpp" +#line 3074 "parser.cpp" break; case 9: /* statement: select_statement */ #line 494 "parser.y" { (yyval.base_stmt) = (yyvsp[0].select_stmt); } -#line 3074 "parser.cpp" +#line 3080 "parser.cpp" break; case 10: /* statement: delete_statement */ #line 495 "parser.y" { (yyval.base_stmt) = (yyvsp[0].delete_stmt); } -#line 3080 "parser.cpp" +#line 3086 "parser.cpp" break; case 11: /* statement: update_statement */ #line 496 "parser.y" { (yyval.base_stmt) = (yyvsp[0].update_stmt); } -#line 3086 "parser.cpp" +#line 3092 "parser.cpp" break; case 12: /* statement: insert_statement */ #line 497 "parser.y" { (yyval.base_stmt) = (yyvsp[0].insert_stmt); } -#line 3092 "parser.cpp" +#line 3098 "parser.cpp" break; case 13: /* statement: explain_statement */ #line 498 "parser.y" { (yyval.base_stmt) = (yyvsp[0].explain_stmt); } -#line 3098 "parser.cpp" +#line 3104 "parser.cpp" break; case 14: /* statement: flush_statement */ #line 499 "parser.y" { (yyval.base_stmt) = (yyvsp[0].flush_stmt); } -#line 3104 "parser.cpp" +#line 3110 "parser.cpp" break; case 15: /* statement: optimize_statement */ #line 500 "parser.y" { (yyval.base_stmt) = (yyvsp[0].optimize_stmt); } -#line 3110 "parser.cpp" +#line 3116 "parser.cpp" break; case 16: /* statement: command_statement */ #line 501 "parser.y" { (yyval.base_stmt) = (yyvsp[0].command_stmt); } -#line 3116 "parser.cpp" +#line 3122 "parser.cpp" break; case 17: /* explainable_statement: create_statement */ #line 503 "parser.y" { (yyval.base_stmt) = (yyvsp[0].create_stmt); } -#line 3122 "parser.cpp" +#line 3128 "parser.cpp" break; case 18: /* explainable_statement: drop_statement */ #line 504 "parser.y" { (yyval.base_stmt) = (yyvsp[0].drop_stmt); } -#line 3128 "parser.cpp" +#line 3134 "parser.cpp" break; case 19: /* explainable_statement: copy_statement */ #line 505 "parser.y" { (yyval.base_stmt) = (yyvsp[0].copy_stmt); } -#line 3134 "parser.cpp" +#line 3140 "parser.cpp" break; case 20: /* explainable_statement: show_statement */ #line 506 "parser.y" { (yyval.base_stmt) = (yyvsp[0].show_stmt); } -#line 3140 "parser.cpp" +#line 3146 "parser.cpp" break; case 21: /* explainable_statement: select_statement */ #line 507 "parser.y" { (yyval.base_stmt) = (yyvsp[0].select_stmt); } -#line 3146 "parser.cpp" +#line 3152 "parser.cpp" break; case 22: /* explainable_statement: delete_statement */ #line 508 "parser.y" { (yyval.base_stmt) = (yyvsp[0].delete_stmt); } -#line 3152 "parser.cpp" +#line 3158 "parser.cpp" break; case 23: /* explainable_statement: update_statement */ #line 509 "parser.y" { (yyval.base_stmt) = (yyvsp[0].update_stmt); } -#line 3158 "parser.cpp" +#line 3164 "parser.cpp" break; case 24: /* explainable_statement: insert_statement */ #line 510 "parser.y" { (yyval.base_stmt) = (yyvsp[0].insert_stmt); } -#line 3164 "parser.cpp" +#line 3170 "parser.cpp" break; case 25: /* explainable_statement: flush_statement */ #line 511 "parser.y" { (yyval.base_stmt) = (yyvsp[0].flush_stmt); } -#line 3170 "parser.cpp" +#line 3176 "parser.cpp" break; case 26: /* explainable_statement: optimize_statement */ #line 512 "parser.y" { (yyval.base_stmt) = (yyvsp[0].optimize_stmt); } -#line 3176 "parser.cpp" +#line 3182 "parser.cpp" break; case 27: /* explainable_statement: command_statement */ #line 513 "parser.y" { (yyval.base_stmt) = (yyvsp[0].command_stmt); } -#line 3182 "parser.cpp" +#line 3188 "parser.cpp" break; case 28: /* create_statement: CREATE DATABASE if_not_exists IDENTIFIER */ @@ -3198,7 +3204,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->create_info_ = create_schema_info; (yyval.create_stmt)->create_info_->conflict_type_ = (yyvsp[-1].bool_value) ? infinity::ConflictType::kIgnore : infinity::ConflictType::kError; } -#line 3202 "parser.cpp" +#line 3208 "parser.cpp" break; case 29: /* create_statement: CREATE COLLECTION if_not_exists table_name */ @@ -3216,7 +3222,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->create_info_->conflict_type_ = (yyvsp[-1].bool_value) ? infinity::ConflictType::kIgnore : infinity::ConflictType::kError; delete (yyvsp[0].table_name_t); } -#line 3220 "parser.cpp" +#line 3226 "parser.cpp" break; case 30: /* create_statement: CREATE TABLE if_not_exists table_name '(' table_element_array ')' optional_table_properties_list */ @@ -3249,7 +3255,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->create_info_ = create_table_info; (yyval.create_stmt)->create_info_->conflict_type_ = (yyvsp[-5].bool_value) ? infinity::ConflictType::kIgnore : infinity::ConflictType::kError; } -#line 3253 "parser.cpp" +#line 3259 "parser.cpp" break; case 31: /* create_statement: CREATE TABLE if_not_exists table_name AS select_statement */ @@ -3269,7 +3275,7 @@ YYLTYPE yylloc = yyloc_default; create_table_info->select_ = (yyvsp[0].select_stmt); (yyval.create_stmt)->create_info_ = create_table_info; } -#line 3273 "parser.cpp" +#line 3279 "parser.cpp" break; case 32: /* create_statement: CREATE VIEW if_not_exists table_name optional_identifier_array AS select_statement */ @@ -3290,7 +3296,7 @@ YYLTYPE yylloc = yyloc_default; create_view_info->conflict_type_ = (yyvsp[-4].bool_value) ? infinity::ConflictType::kIgnore : infinity::ConflictType::kError; (yyval.create_stmt)->create_info_ = create_view_info; } -#line 3294 "parser.cpp" +#line 3300 "parser.cpp" break; case 33: /* create_statement: CREATE INDEX if_not_exists_info ON table_name index_info_list */ @@ -3323,7 +3329,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt) = new infinity::CreateStatement(); (yyval.create_stmt)->create_info_ = create_index_info; } -#line 3327 "parser.cpp" +#line 3333 "parser.cpp" break; case 34: /* table_element_array: table_element */ @@ -3332,7 +3338,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.table_element_array_t) = new std::vector(); (yyval.table_element_array_t)->push_back((yyvsp[0].table_element_t)); } -#line 3336 "parser.cpp" +#line 3342 "parser.cpp" break; case 35: /* table_element_array: table_element_array ',' table_element */ @@ -3341,7 +3347,7 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-2].table_element_array_t)->push_back((yyvsp[0].table_element_t)); (yyval.table_element_array_t) = (yyvsp[-2].table_element_array_t); } -#line 3345 "parser.cpp" +#line 3351 "parser.cpp" break; case 36: /* table_element: table_column */ @@ -3349,7 +3355,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.table_element_t) = (yyvsp[0].table_column_t); } -#line 3353 "parser.cpp" +#line 3359 "parser.cpp" break; case 37: /* table_element: table_constraint */ @@ -3357,7 +3363,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.table_element_t) = (yyvsp[0].table_constraint_t); } -#line 3361 "parser.cpp" +#line 3367 "parser.cpp" break; case 38: /* table_column: IDENTIFIER column_type default_expr */ @@ -3400,7 +3406,7 @@ YYLTYPE yylloc = yyloc_default; } */ } -#line 3404 "parser.cpp" +#line 3410 "parser.cpp" break; case 39: /* table_column: IDENTIFIER column_type column_constraints default_expr */ @@ -3439,295 +3445,295 @@ YYLTYPE yylloc = yyloc_default; } */ } -#line 3443 "parser.cpp" +#line 3449 "parser.cpp" break; case 40: /* column_type: BOOLEAN */ #line 738 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kBoolean, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3449 "parser.cpp" +#line 3455 "parser.cpp" break; case 41: /* column_type: TINYINT */ #line 739 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTinyInt, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3455 "parser.cpp" +#line 3461 "parser.cpp" break; case 42: /* column_type: SMALLINT */ #line 740 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kSmallInt, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3461 "parser.cpp" +#line 3467 "parser.cpp" break; case 43: /* column_type: INTEGER */ #line 741 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kInteger, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3467 "parser.cpp" +#line 3473 "parser.cpp" break; case 44: /* column_type: INT */ #line 742 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kInteger, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3473 "parser.cpp" +#line 3479 "parser.cpp" break; case 45: /* column_type: BIGINT */ #line 743 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kBigInt, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3479 "parser.cpp" +#line 3485 "parser.cpp" break; case 46: /* column_type: HUGEINT */ #line 744 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kHugeInt, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3485 "parser.cpp" +#line 3491 "parser.cpp" break; case 47: /* column_type: FLOAT */ #line 745 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kFloat, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3491 "parser.cpp" +#line 3497 "parser.cpp" break; case 48: /* column_type: REAL */ #line 746 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kFloat, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3497 "parser.cpp" +#line 3503 "parser.cpp" break; case 49: /* column_type: DOUBLE */ #line 747 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kDouble, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3503 "parser.cpp" +#line 3509 "parser.cpp" break; case 50: /* column_type: DATE */ #line 748 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kDate, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3509 "parser.cpp" +#line 3515 "parser.cpp" break; case 51: /* column_type: TIME */ #line 749 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTime, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3515 "parser.cpp" +#line 3521 "parser.cpp" break; case 52: /* column_type: DATETIME */ #line 750 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kDateTime, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3521 "parser.cpp" +#line 3527 "parser.cpp" break; case 53: /* column_type: TIMESTAMP */ #line 751 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTimestamp, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3527 "parser.cpp" +#line 3533 "parser.cpp" break; case 54: /* column_type: UUID */ #line 752 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kUuid, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3533 "parser.cpp" +#line 3539 "parser.cpp" break; case 55: /* column_type: POINT */ #line 753 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kPoint, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3539 "parser.cpp" +#line 3545 "parser.cpp" break; case 56: /* column_type: LINE */ #line 754 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kLine, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3545 "parser.cpp" +#line 3551 "parser.cpp" break; case 57: /* column_type: LSEG */ #line 755 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kLineSeg, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3551 "parser.cpp" +#line 3557 "parser.cpp" break; case 58: /* column_type: BOX */ #line 756 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kBox, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3557 "parser.cpp" +#line 3563 "parser.cpp" break; case 59: /* column_type: CIRCLE */ #line 759 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kCircle, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3563 "parser.cpp" +#line 3569 "parser.cpp" break; case 60: /* column_type: VARCHAR */ #line 761 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kVarchar, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3569 "parser.cpp" +#line 3575 "parser.cpp" break; case 61: /* column_type: DECIMAL '(' LONG_VALUE ',' LONG_VALUE ')' */ #line 762 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kDecimal, 0, (yyvsp[-3].long_value), (yyvsp[-1].long_value), infinity::EmbeddingDataType::kElemInvalid}; } -#line 3575 "parser.cpp" +#line 3581 "parser.cpp" break; case 62: /* column_type: DECIMAL '(' LONG_VALUE ')' */ #line 763 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kDecimal, 0, (yyvsp[-1].long_value), 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3581 "parser.cpp" +#line 3587 "parser.cpp" break; case 63: /* column_type: DECIMAL */ #line 764 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kDecimal, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3587 "parser.cpp" +#line 3593 "parser.cpp" break; case 64: /* column_type: EMBEDDING '(' BIT ',' LONG_VALUE ')' */ #line 767 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::kElemBit}; } -#line 3593 "parser.cpp" +#line 3599 "parser.cpp" break; case 65: /* column_type: EMBEDDING '(' TINYINT ',' LONG_VALUE ')' */ #line 768 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::kElemInt8}; } -#line 3599 "parser.cpp" +#line 3605 "parser.cpp" break; case 66: /* column_type: EMBEDDING '(' SMALLINT ',' LONG_VALUE ')' */ #line 769 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::kElemInt16}; } -#line 3605 "parser.cpp" +#line 3611 "parser.cpp" break; case 67: /* column_type: EMBEDDING '(' INTEGER ',' LONG_VALUE ')' */ #line 770 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::kElemInt32}; } -#line 3611 "parser.cpp" +#line 3617 "parser.cpp" break; case 68: /* column_type: EMBEDDING '(' INT ',' LONG_VALUE ')' */ #line 771 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::kElemInt32}; } -#line 3617 "parser.cpp" +#line 3623 "parser.cpp" break; case 69: /* column_type: EMBEDDING '(' BIGINT ',' LONG_VALUE ')' */ #line 772 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::kElemInt64}; } -#line 3623 "parser.cpp" +#line 3629 "parser.cpp" break; case 70: /* column_type: EMBEDDING '(' FLOAT ',' LONG_VALUE ')' */ #line 773 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::kElemFloat}; } -#line 3629 "parser.cpp" +#line 3635 "parser.cpp" break; case 71: /* column_type: EMBEDDING '(' DOUBLE ',' LONG_VALUE ')' */ #line 774 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::kElemDouble}; } -#line 3635 "parser.cpp" +#line 3641 "parser.cpp" break; case 72: /* column_type: TENSOR '(' BIT ',' LONG_VALUE ')' */ #line 775 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::kElemBit}; } -#line 3641 "parser.cpp" +#line 3647 "parser.cpp" break; case 73: /* column_type: TENSOR '(' TINYINT ',' LONG_VALUE ')' */ #line 776 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::kElemInt8}; } -#line 3647 "parser.cpp" +#line 3653 "parser.cpp" break; case 74: /* column_type: TENSOR '(' SMALLINT ',' LONG_VALUE ')' */ #line 777 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::kElemInt16}; } -#line 3653 "parser.cpp" +#line 3659 "parser.cpp" break; case 75: /* column_type: TENSOR '(' INTEGER ',' LONG_VALUE ')' */ #line 778 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::kElemInt32}; } -#line 3659 "parser.cpp" +#line 3665 "parser.cpp" break; case 76: /* column_type: TENSOR '(' INT ',' LONG_VALUE ')' */ #line 779 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::kElemInt32}; } -#line 3665 "parser.cpp" +#line 3671 "parser.cpp" break; case 77: /* column_type: TENSOR '(' BIGINT ',' LONG_VALUE ')' */ #line 780 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::kElemInt64}; } -#line 3671 "parser.cpp" +#line 3677 "parser.cpp" break; case 78: /* column_type: TENSOR '(' FLOAT ',' LONG_VALUE ')' */ #line 781 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::kElemFloat}; } -#line 3677 "parser.cpp" +#line 3683 "parser.cpp" break; case 79: /* column_type: TENSOR '(' DOUBLE ',' LONG_VALUE ')' */ #line 782 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::kElemDouble}; } -#line 3683 "parser.cpp" +#line 3689 "parser.cpp" break; case 80: /* column_type: VECTOR '(' BIT ',' LONG_VALUE ')' */ #line 783 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::kElemBit}; } -#line 3689 "parser.cpp" +#line 3695 "parser.cpp" break; case 81: /* column_type: VECTOR '(' TINYINT ',' LONG_VALUE ')' */ #line 784 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::kElemInt8}; } -#line 3695 "parser.cpp" +#line 3701 "parser.cpp" break; case 82: /* column_type: VECTOR '(' SMALLINT ',' LONG_VALUE ')' */ #line 785 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::kElemInt16}; } -#line 3701 "parser.cpp" +#line 3707 "parser.cpp" break; case 83: /* column_type: VECTOR '(' INTEGER ',' LONG_VALUE ')' */ #line 786 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::kElemInt32}; } -#line 3707 "parser.cpp" +#line 3713 "parser.cpp" break; case 84: /* column_type: VECTOR '(' INT ',' LONG_VALUE ')' */ #line 787 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::kElemInt32}; } -#line 3713 "parser.cpp" +#line 3719 "parser.cpp" break; case 85: /* column_type: VECTOR '(' BIGINT ',' LONG_VALUE ')' */ #line 788 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::kElemInt64}; } -#line 3719 "parser.cpp" +#line 3725 "parser.cpp" break; case 86: /* column_type: VECTOR '(' FLOAT ',' LONG_VALUE ')' */ #line 789 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::kElemFloat}; } -#line 3725 "parser.cpp" +#line 3731 "parser.cpp" break; case 87: /* column_type: VECTOR '(' DOUBLE ',' LONG_VALUE ')' */ #line 790 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::kElemDouble}; } -#line 3731 "parser.cpp" +#line 3737 "parser.cpp" break; case 88: /* column_constraints: column_constraint */ @@ -3736,7 +3742,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.column_constraints_t) = new std::unordered_set(); (yyval.column_constraints_t)->insert((yyvsp[0].column_constraint_t)); } -#line 3740 "parser.cpp" +#line 3746 "parser.cpp" break; case 89: /* column_constraints: column_constraints column_constraint */ @@ -3750,7 +3756,7 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-1].column_constraints_t)->insert((yyvsp[0].column_constraint_t)); (yyval.column_constraints_t) = (yyvsp[-1].column_constraints_t); } -#line 3754 "parser.cpp" +#line 3760 "parser.cpp" break; case 90: /* column_constraint: PRIMARY KEY */ @@ -3758,7 +3764,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.column_constraint_t) = infinity::ConstraintType::kPrimaryKey; } -#line 3762 "parser.cpp" +#line 3768 "parser.cpp" break; case 91: /* column_constraint: UNIQUE */ @@ -3766,7 +3772,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.column_constraint_t) = infinity::ConstraintType::kUnique; } -#line 3770 "parser.cpp" +#line 3776 "parser.cpp" break; case 92: /* column_constraint: NULLABLE */ @@ -3774,7 +3780,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.column_constraint_t) = infinity::ConstraintType::kNull; } -#line 3778 "parser.cpp" +#line 3784 "parser.cpp" break; case 93: /* column_constraint: NOT NULLABLE */ @@ -3782,7 +3788,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.column_constraint_t) = infinity::ConstraintType::kNotNull; } -#line 3786 "parser.cpp" +#line 3792 "parser.cpp" break; case 94: /* default_expr: DEFAULT constant_expr */ @@ -3790,7 +3796,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 3794 "parser.cpp" +#line 3800 "parser.cpp" break; case 95: /* default_expr: %empty */ @@ -3798,7 +3804,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.const_expr_t) = nullptr; } -#line 3802 "parser.cpp" +#line 3808 "parser.cpp" break; case 96: /* table_constraint: PRIMARY KEY '(' identifier_array ')' */ @@ -3808,7 +3814,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.table_constraint_t)->names_ptr_ = (yyvsp[-1].identifier_array_t); (yyval.table_constraint_t)->constraint_ = infinity::ConstraintType::kPrimaryKey; } -#line 3812 "parser.cpp" +#line 3818 "parser.cpp" break; case 97: /* table_constraint: UNIQUE '(' identifier_array ')' */ @@ -3818,7 +3824,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.table_constraint_t)->names_ptr_ = (yyvsp[-1].identifier_array_t); (yyval.table_constraint_t)->constraint_ = infinity::ConstraintType::kUnique; } -#line 3822 "parser.cpp" +#line 3828 "parser.cpp" break; case 98: /* identifier_array: IDENTIFIER */ @@ -3829,7 +3835,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.identifier_array_t)->emplace_back((yyvsp[0].str_value)); free((yyvsp[0].str_value)); } -#line 3833 "parser.cpp" +#line 3839 "parser.cpp" break; case 99: /* identifier_array: identifier_array ',' IDENTIFIER */ @@ -3840,7 +3846,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[0].str_value)); (yyval.identifier_array_t) = (yyvsp[-2].identifier_array_t); } -#line 3844 "parser.cpp" +#line 3850 "parser.cpp" break; case 100: /* delete_statement: DELETE FROM table_name where_clause */ @@ -3857,7 +3863,7 @@ YYLTYPE yylloc = yyloc_default; delete (yyvsp[-1].table_name_t); (yyval.delete_stmt)->where_expr_ = (yyvsp[0].expr_t); } -#line 3861 "parser.cpp" +#line 3867 "parser.cpp" break; case 101: /* insert_statement: INSERT INTO table_name optional_identifier_array VALUES expr_array_list */ @@ -3896,7 +3902,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns_ = (yyvsp[-2].identifier_array_t); (yyval.insert_stmt)->values_ = (yyvsp[0].expr_array_list_t); } -#line 3900 "parser.cpp" +#line 3906 "parser.cpp" break; case 102: /* insert_statement: INSERT INTO table_name optional_identifier_array select_without_paren */ @@ -3913,7 +3919,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns_ = (yyvsp[-1].identifier_array_t); (yyval.insert_stmt)->select_ = (yyvsp[0].select_stmt); } -#line 3917 "parser.cpp" +#line 3923 "parser.cpp" break; case 103: /* optional_identifier_array: '(' identifier_array ')' */ @@ -3921,7 +3927,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.identifier_array_t) = (yyvsp[-1].identifier_array_t); } -#line 3925 "parser.cpp" +#line 3931 "parser.cpp" break; case 104: /* optional_identifier_array: %empty */ @@ -3929,7 +3935,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.identifier_array_t) = nullptr; } -#line 3933 "parser.cpp" +#line 3939 "parser.cpp" break; case 105: /* explain_statement: EXPLAIN explain_type explainable_statement */ @@ -3939,7 +3945,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.explain_stmt)->type_ = (yyvsp[-1].explain_type_t); (yyval.explain_stmt)->statement_ = (yyvsp[0].base_stmt); } -#line 3943 "parser.cpp" +#line 3949 "parser.cpp" break; case 106: /* explain_type: ANALYZE */ @@ -3947,7 +3953,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.explain_type_t) = infinity::ExplainType::kAnalyze; } -#line 3951 "parser.cpp" +#line 3957 "parser.cpp" break; case 107: /* explain_type: AST */ @@ -3955,7 +3961,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.explain_type_t) = infinity::ExplainType::kAst; } -#line 3959 "parser.cpp" +#line 3965 "parser.cpp" break; case 108: /* explain_type: RAW */ @@ -3963,7 +3969,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.explain_type_t) = infinity::ExplainType::kUnOpt; } -#line 3967 "parser.cpp" +#line 3973 "parser.cpp" break; case 109: /* explain_type: LOGICAL */ @@ -3971,7 +3977,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.explain_type_t) = infinity::ExplainType::kOpt; } -#line 3975 "parser.cpp" +#line 3981 "parser.cpp" break; case 110: /* explain_type: PHYSICAL */ @@ -3979,7 +3985,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.explain_type_t) = infinity::ExplainType::kPhysical; } -#line 3983 "parser.cpp" +#line 3989 "parser.cpp" break; case 111: /* explain_type: PIPELINE */ @@ -3987,7 +3993,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.explain_type_t) = infinity::ExplainType::kPipeline; } -#line 3991 "parser.cpp" +#line 3997 "parser.cpp" break; case 112: /* explain_type: FRAGMENT */ @@ -3995,7 +4001,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.explain_type_t) = infinity::ExplainType::kFragment; } -#line 3999 "parser.cpp" +#line 4005 "parser.cpp" break; case 113: /* explain_type: %empty */ @@ -4003,7 +4009,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.explain_type_t) = infinity::ExplainType::kPhysical; } -#line 4007 "parser.cpp" +#line 4013 "parser.cpp" break; case 114: /* update_statement: UPDATE table_name SET update_expr_array where_clause */ @@ -4020,7 +4026,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.update_stmt)->where_expr_ = (yyvsp[0].expr_t); (yyval.update_stmt)->update_expr_array_ = (yyvsp[-1].update_expr_array_t); } -#line 4024 "parser.cpp" +#line 4030 "parser.cpp" break; case 115: /* update_expr_array: update_expr */ @@ -4029,7 +4035,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.update_expr_array_t) = new std::vector(); (yyval.update_expr_array_t)->emplace_back((yyvsp[0].update_expr_t)); } -#line 4033 "parser.cpp" +#line 4039 "parser.cpp" break; case 116: /* update_expr_array: update_expr_array ',' update_expr */ @@ -4038,7 +4044,7 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-2].update_expr_array_t)->emplace_back((yyvsp[0].update_expr_t)); (yyval.update_expr_array_t) = (yyvsp[-2].update_expr_array_t); } -#line 4042 "parser.cpp" +#line 4048 "parser.cpp" break; case 117: /* update_expr: IDENTIFIER '=' expr */ @@ -4050,7 +4056,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-2].str_value)); (yyval.update_expr_t)->value = (yyvsp[0].expr_t); } -#line 4054 "parser.cpp" +#line 4060 "parser.cpp" break; case 118: /* drop_statement: DROP DATABASE if_exists IDENTIFIER */ @@ -4066,7 +4072,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.drop_stmt)->drop_info_ = drop_schema_info; (yyval.drop_stmt)->drop_info_->conflict_type_ = (yyvsp[-1].bool_value) ? infinity::ConflictType::kIgnore : infinity::ConflictType::kError; } -#line 4070 "parser.cpp" +#line 4076 "parser.cpp" break; case 119: /* drop_statement: DROP COLLECTION if_exists table_name */ @@ -4084,7 +4090,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.drop_stmt)->drop_info_->conflict_type_ = (yyvsp[-1].bool_value) ? infinity::ConflictType::kIgnore : infinity::ConflictType::kError; delete (yyvsp[0].table_name_t); } -#line 4088 "parser.cpp" +#line 4094 "parser.cpp" break; case 120: /* drop_statement: DROP TABLE if_exists table_name */ @@ -4102,7 +4108,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.drop_stmt)->drop_info_->conflict_type_ = (yyvsp[-1].bool_value) ? infinity::ConflictType::kIgnore : infinity::ConflictType::kError; delete (yyvsp[0].table_name_t); } -#line 4106 "parser.cpp" +#line 4112 "parser.cpp" break; case 121: /* drop_statement: DROP VIEW if_exists table_name */ @@ -4120,7 +4126,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.drop_stmt)->drop_info_->conflict_type_ = (yyvsp[-1].bool_value) ? infinity::ConflictType::kIgnore : infinity::ConflictType::kError; delete (yyvsp[0].table_name_t); } -#line 4124 "parser.cpp" +#line 4130 "parser.cpp" break; case 122: /* drop_statement: DROP INDEX if_exists IDENTIFIER ON table_name */ @@ -4143,7 +4149,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[0].table_name_t)->table_name_ptr_); delete (yyvsp[0].table_name_t); } -#line 4147 "parser.cpp" +#line 4153 "parser.cpp" break; case 123: /* copy_statement: COPY table_name TO file_path WITH '(' copy_option_list ')' */ @@ -4189,7 +4195,7 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[-1].copy_option_array); } -#line 4193 "parser.cpp" +#line 4199 "parser.cpp" break; case 124: /* copy_statement: COPY table_name FROM file_path WITH '(' copy_option_list ')' */ @@ -4235,7 +4241,7 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[-1].copy_option_array); } -#line 4239 "parser.cpp" +#line 4245 "parser.cpp" break; case 125: /* select_statement: select_without_paren */ @@ -4243,7 +4249,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.select_stmt) = (yyvsp[0].select_stmt); } -#line 4247 "parser.cpp" +#line 4253 "parser.cpp" break; case 126: /* select_statement: select_with_paren */ @@ -4251,7 +4257,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.select_stmt) = (yyvsp[0].select_stmt); } -#line 4255 "parser.cpp" +#line 4261 "parser.cpp" break; case 127: /* select_statement: select_statement set_operator select_clause_without_modifier_paren */ @@ -4265,7 +4271,7 @@ YYLTYPE yylloc = yyloc_default; node->nested_select_ = (yyvsp[0].select_stmt); (yyval.select_stmt) = (yyvsp[-2].select_stmt); } -#line 4269 "parser.cpp" +#line 4275 "parser.cpp" break; case 128: /* select_statement: select_statement set_operator select_clause_without_modifier */ @@ -4279,7 +4285,7 @@ YYLTYPE yylloc = yyloc_default; node->nested_select_ = (yyvsp[0].select_stmt); (yyval.select_stmt) = (yyvsp[-2].select_stmt); } -#line 4283 "parser.cpp" +#line 4289 "parser.cpp" break; case 129: /* select_with_paren: '(' select_without_paren ')' */ @@ -4287,7 +4293,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4291 "parser.cpp" +#line 4297 "parser.cpp" break; case 130: /* select_with_paren: '(' select_with_paren ')' */ @@ -4295,7 +4301,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4299 "parser.cpp" +#line 4305 "parser.cpp" break; case 131: /* select_without_paren: with_clause select_clause_with_modifier */ @@ -4304,7 +4310,7 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[0].select_stmt)->with_exprs_ = (yyvsp[-1].with_expr_list_t); (yyval.select_stmt) = (yyvsp[0].select_stmt); } -#line 4308 "parser.cpp" +#line 4314 "parser.cpp" break; case 132: /* select_clause_with_modifier: select_clause_without_modifier order_by_clause limit_expr offset_expr */ @@ -4330,7 +4336,7 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-3].select_stmt)->offset_expr_ = (yyvsp[0].expr_t); (yyval.select_stmt) = (yyvsp[-3].select_stmt); } -#line 4334 "parser.cpp" +#line 4340 "parser.cpp" break; case 133: /* select_clause_without_modifier_paren: '(' select_clause_without_modifier ')' */ @@ -4338,7 +4344,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4342 "parser.cpp" +#line 4348 "parser.cpp" break; case 134: /* select_clause_without_modifier_paren: '(' select_clause_without_modifier_paren ')' */ @@ -4346,7 +4352,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4350 "parser.cpp" +#line 4356 "parser.cpp" break; case 135: /* select_clause_without_modifier: SELECT distinct expr_array from_clause search_clause where_clause group_by_clause having_clause */ @@ -4366,7 +4372,7 @@ YYLTYPE yylloc = yyloc_default; YYERROR; } } -#line 4370 "parser.cpp" +#line 4376 "parser.cpp" break; case 136: /* order_by_clause: ORDER BY order_by_expr_list */ @@ -4374,7 +4380,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.order_by_expr_list_t) = (yyvsp[0].order_by_expr_list_t); } -#line 4378 "parser.cpp" +#line 4384 "parser.cpp" break; case 137: /* order_by_clause: %empty */ @@ -4382,7 +4388,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.order_by_expr_list_t) = nullptr; } -#line 4386 "parser.cpp" +#line 4392 "parser.cpp" break; case 138: /* order_by_expr_list: order_by_expr */ @@ -4391,7 +4397,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.order_by_expr_list_t) = new std::vector(); (yyval.order_by_expr_list_t)->emplace_back((yyvsp[0].order_by_expr_t)); } -#line 4395 "parser.cpp" +#line 4401 "parser.cpp" break; case 139: /* order_by_expr_list: order_by_expr_list ',' order_by_expr */ @@ -4400,7 +4406,7 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-2].order_by_expr_list_t)->emplace_back((yyvsp[0].order_by_expr_t)); (yyval.order_by_expr_list_t) = (yyvsp[-2].order_by_expr_list_t); } -#line 4404 "parser.cpp" +#line 4410 "parser.cpp" break; case 140: /* order_by_expr: expr order_by_type */ @@ -4410,7 +4416,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.order_by_expr_t)->expr_ = (yyvsp[-1].expr_t); (yyval.order_by_expr_t)->type_ = (yyvsp[0].order_by_type_t); } -#line 4414 "parser.cpp" +#line 4420 "parser.cpp" break; case 141: /* order_by_type: ASC */ @@ -4418,7 +4424,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.order_by_type_t) = infinity::kAsc; } -#line 4422 "parser.cpp" +#line 4428 "parser.cpp" break; case 142: /* order_by_type: DESC */ @@ -4426,7 +4432,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.order_by_type_t) = infinity::kDesc; } -#line 4430 "parser.cpp" +#line 4436 "parser.cpp" break; case 143: /* order_by_type: %empty */ @@ -4434,7 +4440,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.order_by_type_t) = infinity::kAsc; } -#line 4438 "parser.cpp" +#line 4444 "parser.cpp" break; case 144: /* limit_expr: LIMIT expr */ @@ -4442,13 +4448,13 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 4446 "parser.cpp" +#line 4452 "parser.cpp" break; case 145: /* limit_expr: %empty */ #line 1300 "parser.y" { (yyval.expr_t) = nullptr; } -#line 4452 "parser.cpp" +#line 4458 "parser.cpp" break; case 146: /* offset_expr: OFFSET expr */ @@ -4456,13 +4462,13 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 4460 "parser.cpp" +#line 4466 "parser.cpp" break; case 147: /* offset_expr: %empty */ #line 1306 "parser.y" { (yyval.expr_t) = nullptr; } -#line 4466 "parser.cpp" +#line 4472 "parser.cpp" break; case 148: /* distinct: DISTINCT */ @@ -4470,7 +4476,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.bool_value) = true; } -#line 4474 "parser.cpp" +#line 4480 "parser.cpp" break; case 149: /* distinct: %empty */ @@ -4478,7 +4484,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.bool_value) = false; } -#line 4482 "parser.cpp" +#line 4488 "parser.cpp" break; case 150: /* from_clause: FROM table_reference */ @@ -4486,7 +4492,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.table_reference_t) = (yyvsp[0].table_reference_t); } -#line 4490 "parser.cpp" +#line 4496 "parser.cpp" break; case 151: /* from_clause: %empty */ @@ -4494,7 +4500,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.table_reference_t) = nullptr; } -#line 4498 "parser.cpp" +#line 4504 "parser.cpp" break; case 152: /* search_clause: SEARCH sub_search_array */ @@ -4504,7 +4510,7 @@ YYLTYPE yylloc = yyloc_default; search_expr->SetExprs((yyvsp[0].expr_array_t)); (yyval.expr_t) = search_expr; } -#line 4508 "parser.cpp" +#line 4514 "parser.cpp" break; case 153: /* search_clause: %empty */ @@ -4512,7 +4518,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_t) = nullptr; } -#line 4516 "parser.cpp" +#line 4522 "parser.cpp" break; case 154: /* where_clause: WHERE expr */ @@ -4520,7 +4526,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 4524 "parser.cpp" +#line 4530 "parser.cpp" break; case 155: /* where_clause: %empty */ @@ -4528,7 +4534,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_t) = nullptr; } -#line 4532 "parser.cpp" +#line 4538 "parser.cpp" break; case 156: /* having_clause: HAVING expr */ @@ -4536,7 +4542,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 4540 "parser.cpp" +#line 4546 "parser.cpp" break; case 157: /* having_clause: %empty */ @@ -4544,7 +4550,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_t) = nullptr; } -#line 4548 "parser.cpp" +#line 4554 "parser.cpp" break; case 158: /* group_by_clause: GROUP BY expr_array */ @@ -4552,7 +4558,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_array_t) = (yyvsp[0].expr_array_t); } -#line 4556 "parser.cpp" +#line 4562 "parser.cpp" break; case 159: /* group_by_clause: %empty */ @@ -4560,7 +4566,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_array_t) = nullptr; } -#line 4564 "parser.cpp" +#line 4570 "parser.cpp" break; case 160: /* set_operator: UNION */ @@ -4568,7 +4574,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.set_operator_t) = infinity::SetOperatorType::kUnion; } -#line 4572 "parser.cpp" +#line 4578 "parser.cpp" break; case 161: /* set_operator: UNION ALL */ @@ -4576,7 +4582,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.set_operator_t) = infinity::SetOperatorType::kUnionAll; } -#line 4580 "parser.cpp" +#line 4586 "parser.cpp" break; case 162: /* set_operator: INTERSECT */ @@ -4584,7 +4590,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.set_operator_t) = infinity::SetOperatorType::kIntersect; } -#line 4588 "parser.cpp" +#line 4594 "parser.cpp" break; case 163: /* set_operator: EXCEPT */ @@ -4592,7 +4598,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.set_operator_t) = infinity::SetOperatorType::kExcept; } -#line 4596 "parser.cpp" +#line 4602 "parser.cpp" break; case 164: /* table_reference: table_reference_unit */ @@ -4600,7 +4606,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.table_reference_t) = (yyvsp[0].table_reference_t); } -#line 4604 "parser.cpp" +#line 4610 "parser.cpp" break; case 165: /* table_reference: table_reference ',' table_reference_unit */ @@ -4618,7 +4624,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.table_reference_t) = cross_product_ref; } -#line 4622 "parser.cpp" +#line 4628 "parser.cpp" break; case 168: /* table_reference_name: table_name table_alias */ @@ -4636,7 +4642,7 @@ YYLTYPE yylloc = yyloc_default; table_ref->alias_ = (yyvsp[0].table_alias_t); (yyval.table_reference_t) = table_ref; } -#line 4640 "parser.cpp" +#line 4646 "parser.cpp" break; case 169: /* table_reference_name: '(' select_statement ')' table_alias */ @@ -4647,7 +4653,7 @@ YYLTYPE yylloc = yyloc_default; subquery_reference->alias_ = (yyvsp[0].table_alias_t); (yyval.table_reference_t) = subquery_reference; } -#line 4651 "parser.cpp" +#line 4657 "parser.cpp" break; case 170: /* table_name: IDENTIFIER */ @@ -4657,7 +4663,7 @@ YYLTYPE yylloc = yyloc_default; ParserHelper::ToLower((yyvsp[0].str_value)); (yyval.table_name_t)->table_name_ptr_ = (yyvsp[0].str_value); } -#line 4661 "parser.cpp" +#line 4667 "parser.cpp" break; case 171: /* table_name: IDENTIFIER '.' IDENTIFIER */ @@ -4669,7 +4675,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.table_name_t)->schema_name_ptr_ = (yyvsp[-2].str_value); (yyval.table_name_t)->table_name_ptr_ = (yyvsp[0].str_value); } -#line 4673 "parser.cpp" +#line 4679 "parser.cpp" break; case 172: /* table_alias: AS IDENTIFIER */ @@ -4679,7 +4685,7 @@ YYLTYPE yylloc = yyloc_default; ParserHelper::ToLower((yyvsp[0].str_value)); (yyval.table_alias_t)->alias_ = (yyvsp[0].str_value); } -#line 4683 "parser.cpp" +#line 4689 "parser.cpp" break; case 173: /* table_alias: IDENTIFIER */ @@ -4689,7 +4695,7 @@ YYLTYPE yylloc = yyloc_default; ParserHelper::ToLower((yyvsp[0].str_value)); (yyval.table_alias_t)->alias_ = (yyvsp[0].str_value); } -#line 4693 "parser.cpp" +#line 4699 "parser.cpp" break; case 174: /* table_alias: AS IDENTIFIER '(' identifier_array ')' */ @@ -4700,7 +4706,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.table_alias_t)->alias_ = (yyvsp[-3].str_value); (yyval.table_alias_t)->column_alias_array_ = (yyvsp[-1].identifier_array_t); } -#line 4704 "parser.cpp" +#line 4710 "parser.cpp" break; case 175: /* table_alias: %empty */ @@ -4708,7 +4714,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.table_alias_t) = nullptr; } -#line 4712 "parser.cpp" +#line 4718 "parser.cpp" break; case 176: /* with_clause: WITH with_expr_list */ @@ -4716,7 +4722,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.with_expr_list_t) = (yyvsp[0].with_expr_list_t); } -#line 4720 "parser.cpp" +#line 4726 "parser.cpp" break; case 177: /* with_clause: %empty */ @@ -4724,7 +4730,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.with_expr_list_t) = nullptr; } -#line 4728 "parser.cpp" +#line 4734 "parser.cpp" break; case 178: /* with_expr_list: with_expr */ @@ -4733,7 +4739,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.with_expr_list_t) = new std::vector(); (yyval.with_expr_list_t)->emplace_back((yyvsp[0].with_expr_t)); } -#line 4737 "parser.cpp" +#line 4743 "parser.cpp" break; case 179: /* with_expr_list: with_expr_list ',' with_expr */ @@ -4742,7 +4748,7 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-2].with_expr_list_t)->emplace_back((yyvsp[0].with_expr_t)); (yyval.with_expr_list_t) = (yyvsp[-2].with_expr_list_t); } -#line 4746 "parser.cpp" +#line 4752 "parser.cpp" break; case 180: /* with_expr: IDENTIFIER AS '(' select_clause_with_modifier ')' */ @@ -4754,7 +4760,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-4].str_value)); (yyval.with_expr_t)->select_ = (yyvsp[-1].select_stmt); } -#line 4758 "parser.cpp" +#line 4764 "parser.cpp" break; case 181: /* join_clause: table_reference_unit NATURAL JOIN table_reference_name */ @@ -4766,7 +4772,7 @@ YYLTYPE yylloc = yyloc_default; join_reference->join_type_ = infinity::JoinType::kNatural; (yyval.table_reference_t) = join_reference; } -#line 4770 "parser.cpp" +#line 4776 "parser.cpp" break; case 182: /* join_clause: table_reference_unit join_type JOIN table_reference_name ON expr */ @@ -4779,7 +4785,7 @@ YYLTYPE yylloc = yyloc_default; join_reference->condition_ = (yyvsp[0].expr_t); (yyval.table_reference_t) = join_reference; } -#line 4783 "parser.cpp" +#line 4789 "parser.cpp" break; case 183: /* join_type: INNER */ @@ -4787,7 +4793,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.join_type_t) = infinity::JoinType::kInner; } -#line 4791 "parser.cpp" +#line 4797 "parser.cpp" break; case 184: /* join_type: LEFT */ @@ -4795,7 +4801,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.join_type_t) = infinity::JoinType::kLeft; } -#line 4799 "parser.cpp" +#line 4805 "parser.cpp" break; case 185: /* join_type: RIGHT */ @@ -4803,7 +4809,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.join_type_t) = infinity::JoinType::kRight; } -#line 4807 "parser.cpp" +#line 4813 "parser.cpp" break; case 186: /* join_type: OUTER */ @@ -4811,7 +4817,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.join_type_t) = infinity::JoinType::kFull; } -#line 4815 "parser.cpp" +#line 4821 "parser.cpp" break; case 187: /* join_type: FULL */ @@ -4819,7 +4825,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.join_type_t) = infinity::JoinType::kFull; } -#line 4823 "parser.cpp" +#line 4829 "parser.cpp" break; case 188: /* join_type: CROSS */ @@ -4827,14 +4833,14 @@ YYLTYPE yylloc = yyloc_default; { (yyval.join_type_t) = infinity::JoinType::kCross; } -#line 4831 "parser.cpp" +#line 4837 "parser.cpp" break; case 189: /* join_type: %empty */ #line 1515 "parser.y" { } -#line 4838 "parser.cpp" +#line 4844 "parser.cpp" break; case 190: /* show_statement: SHOW DATABASES */ @@ -4843,7 +4849,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kDatabases; } -#line 4847 "parser.cpp" +#line 4853 "parser.cpp" break; case 191: /* show_statement: SHOW TABLES */ @@ -4852,7 +4858,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kTables; } -#line 4856 "parser.cpp" +#line 4862 "parser.cpp" break; case 192: /* show_statement: SHOW VIEWS */ @@ -4861,7 +4867,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kViews; } -#line 4865 "parser.cpp" +#line 4871 "parser.cpp" break; case 193: /* show_statement: SHOW CONFIGS */ @@ -4870,7 +4876,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kConfigs; } -#line 4874 "parser.cpp" +#line 4880 "parser.cpp" break; case 194: /* show_statement: SHOW CONFIG IDENTIFIER */ @@ -4882,7 +4888,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->var_name_ = std::string((yyvsp[0].str_value)); free((yyvsp[0].str_value)); } -#line 4886 "parser.cpp" +#line 4892 "parser.cpp" break; case 195: /* show_statement: SHOW PROFILES */ @@ -4891,7 +4897,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kProfiles; } -#line 4895 "parser.cpp" +#line 4901 "parser.cpp" break; case 196: /* show_statement: SHOW SESSION VARIABLES */ @@ -4900,7 +4906,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kSessionVariables; } -#line 4904 "parser.cpp" +#line 4910 "parser.cpp" break; case 197: /* show_statement: SHOW GLOBAL VARIABLES */ @@ -4909,7 +4915,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kGlobalVariables; } -#line 4913 "parser.cpp" +#line 4919 "parser.cpp" break; case 198: /* show_statement: SHOW SESSION VARIABLE IDENTIFIER */ @@ -4920,7 +4926,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->var_name_ = std::string((yyvsp[0].str_value)); free((yyvsp[0].str_value)); } -#line 4924 "parser.cpp" +#line 4930 "parser.cpp" break; case 199: /* show_statement: SHOW GLOBAL VARIABLE IDENTIFIER */ @@ -4931,7 +4937,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->var_name_ = std::string((yyvsp[0].str_value)); free((yyvsp[0].str_value)); } -#line 4935 "parser.cpp" +#line 4941 "parser.cpp" break; case 200: /* show_statement: SHOW DATABASE IDENTIFIER */ @@ -4942,7 +4948,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->schema_name_ = (yyvsp[0].str_value); free((yyvsp[0].str_value)); } -#line 4946 "parser.cpp" +#line 4952 "parser.cpp" break; case 201: /* show_statement: SHOW TABLE table_name */ @@ -4958,7 +4964,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[0].table_name_t)->table_name_ptr_); delete (yyvsp[0].table_name_t); } -#line 4962 "parser.cpp" +#line 4968 "parser.cpp" break; case 202: /* show_statement: SHOW TABLE table_name COLUMNS */ @@ -4974,7 +4980,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].table_name_t)->table_name_ptr_); delete (yyvsp[-1].table_name_t); } -#line 4978 "parser.cpp" +#line 4984 "parser.cpp" break; case 203: /* show_statement: SHOW TABLE table_name SEGMENTS */ @@ -4990,7 +4996,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].table_name_t)->table_name_ptr_); delete (yyvsp[-1].table_name_t); } -#line 4994 "parser.cpp" +#line 5000 "parser.cpp" break; case 204: /* show_statement: SHOW TABLE table_name SEGMENT LONG_VALUE */ @@ -5007,7 +5013,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->segment_id_ = (yyvsp[0].long_value); delete (yyvsp[-2].table_name_t); } -#line 5011 "parser.cpp" +#line 5017 "parser.cpp" break; case 205: /* show_statement: SHOW TABLE table_name SEGMENT LONG_VALUE BLOCKS */ @@ -5024,7 +5030,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->segment_id_ = (yyvsp[-1].long_value); delete (yyvsp[-3].table_name_t); } -#line 5028 "parser.cpp" +#line 5034 "parser.cpp" break; case 206: /* show_statement: SHOW TABLE table_name SEGMENT LONG_VALUE BLOCK LONG_VALUE */ @@ -5042,7 +5048,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->block_id_ = (yyvsp[0].long_value); delete (yyvsp[-4].table_name_t); } -#line 5046 "parser.cpp" +#line 5052 "parser.cpp" break; case 207: /* show_statement: SHOW TABLE table_name SEGMENT LONG_VALUE BLOCK LONG_VALUE COLUMN LONG_VALUE */ @@ -5061,7 +5067,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->column_id_ = (yyvsp[0].long_value); delete (yyvsp[-6].table_name_t); } -#line 5065 "parser.cpp" +#line 5071 "parser.cpp" break; case 208: /* show_statement: SHOW TABLE table_name INDEXES */ @@ -5077,7 +5083,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].table_name_t)->table_name_ptr_); delete (yyvsp[-1].table_name_t); } -#line 5081 "parser.cpp" +#line 5087 "parser.cpp" break; case 209: /* show_statement: SHOW TABLE table_name INDEX IDENTIFIER */ @@ -5096,7 +5102,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->index_name_ = (yyvsp[0].str_value); free((yyvsp[0].str_value)); } -#line 5100 "parser.cpp" +#line 5106 "parser.cpp" break; case 210: /* flush_statement: FLUSH DATA */ @@ -5105,7 +5111,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.flush_stmt) = new infinity::FlushStatement(); (yyval.flush_stmt)->type_ = infinity::FlushType::kData; } -#line 5109 "parser.cpp" +#line 5115 "parser.cpp" break; case 211: /* flush_statement: FLUSH LOG */ @@ -5114,7 +5120,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.flush_stmt) = new infinity::FlushStatement(); (yyval.flush_stmt)->type_ = infinity::FlushType::kLog; } -#line 5118 "parser.cpp" +#line 5124 "parser.cpp" break; case 212: /* flush_statement: FLUSH BUFFER */ @@ -5123,7 +5129,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.flush_stmt) = new infinity::FlushStatement(); (yyval.flush_stmt)->type_ = infinity::FlushType::kBuffer; } -#line 5127 "parser.cpp" +#line 5133 "parser.cpp" break; case 213: /* optimize_statement: OPTIMIZE table_name */ @@ -5138,7 +5144,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[0].table_name_t)->table_name_ptr_); delete (yyvsp[0].table_name_t); } -#line 5142 "parser.cpp" +#line 5148 "parser.cpp" break; case 214: /* command_statement: USE IDENTIFIER */ @@ -5149,7 +5155,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.command_stmt)->command_info_ = std::make_unique((yyvsp[0].str_value)); free((yyvsp[0].str_value)); } -#line 5153 "parser.cpp" +#line 5159 "parser.cpp" break; case 215: /* command_statement: EXPORT PROFILE LONG_VALUE file_path */ @@ -5159,7 +5165,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.command_stmt)->command_info_ = std::make_unique((yyvsp[0].str_value), infinity::ExportType::kProfileRecord, (yyvsp[-1].long_value)); free((yyvsp[0].str_value)); } -#line 5163 "parser.cpp" +#line 5169 "parser.cpp" break; case 216: /* command_statement: SET SESSION IDENTIFIER ON */ @@ -5170,7 +5176,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.command_stmt)->command_info_ = std::make_unique(infinity::SetScope::kSession, infinity::SetVarType::kBool, (yyvsp[-1].str_value), true); free((yyvsp[-1].str_value)); } -#line 5174 "parser.cpp" +#line 5180 "parser.cpp" break; case 217: /* command_statement: SET SESSION IDENTIFIER OFF */ @@ -5181,12 +5187,12 @@ YYLTYPE yylloc = yyloc_default; (yyval.command_stmt)->command_info_ = std::make_unique(infinity::SetScope::kSession, infinity::SetVarType::kBool, (yyvsp[-1].str_value), false); free((yyvsp[-1].str_value)); } -#line 5185 "parser.cpp" +#line 5191 "parser.cpp" break; - case 218: /* command_statement: SET SESSION IDENTIFIER STRING */ + case 218: /* command_statement: SET SESSION IDENTIFIER IDENTIFIER */ #line 1740 "parser.y" - { + { ParserHelper::ToLower((yyvsp[-1].str_value)); ParserHelper::ToLower((yyvsp[0].str_value)); (yyval.command_stmt) = new infinity::CommandStatement(); @@ -5194,7 +5200,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].str_value)); free((yyvsp[0].str_value)); } -#line 5198 "parser.cpp" +#line 5204 "parser.cpp" break; case 219: /* command_statement: SET SESSION IDENTIFIER LONG_VALUE */ @@ -5205,7 +5211,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.command_stmt)->command_info_ = std::make_unique(infinity::SetScope::kSession, infinity::SetVarType::kInteger, (yyvsp[-1].str_value), (yyvsp[0].long_value)); free((yyvsp[-1].str_value)); } -#line 5209 "parser.cpp" +#line 5215 "parser.cpp" break; case 220: /* command_statement: SET SESSION IDENTIFIER DOUBLE_VALUE */ @@ -5216,7 +5222,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.command_stmt)->command_info_ = std::make_unique(infinity::SetScope::kSession, infinity::SetVarType::kDouble, (yyvsp[-1].str_value), (yyvsp[0].double_value)); free((yyvsp[-1].str_value)); } -#line 5220 "parser.cpp" +#line 5226 "parser.cpp" break; case 221: /* command_statement: SET GLOBAL IDENTIFIER ON */ @@ -5227,7 +5233,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.command_stmt)->command_info_ = std::make_unique(infinity::SetScope::kGlobal, infinity::SetVarType::kBool, (yyvsp[-1].str_value), true); free((yyvsp[-1].str_value)); } -#line 5231 "parser.cpp" +#line 5237 "parser.cpp" break; case 222: /* command_statement: SET GLOBAL IDENTIFIER OFF */ @@ -5238,12 +5244,12 @@ YYLTYPE yylloc = yyloc_default; (yyval.command_stmt)->command_info_ = std::make_unique(infinity::SetScope::kGlobal, infinity::SetVarType::kBool, (yyvsp[-1].str_value), false); free((yyvsp[-1].str_value)); } -#line 5242 "parser.cpp" +#line 5248 "parser.cpp" break; - case 223: /* command_statement: SET GLOBAL IDENTIFIER STRING */ + case 223: /* command_statement: SET GLOBAL IDENTIFIER IDENTIFIER */ #line 1772 "parser.y" - { + { ParserHelper::ToLower((yyvsp[-1].str_value)); ParserHelper::ToLower((yyvsp[0].str_value)); (yyval.command_stmt) = new infinity::CommandStatement(); @@ -5251,7 +5257,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].str_value)); free((yyvsp[0].str_value)); } -#line 5255 "parser.cpp" +#line 5261 "parser.cpp" break; case 224: /* command_statement: SET GLOBAL IDENTIFIER LONG_VALUE */ @@ -5262,7 +5268,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.command_stmt)->command_info_ = std::make_unique(infinity::SetScope::kGlobal, infinity::SetVarType::kInteger, (yyvsp[-1].str_value), (yyvsp[0].long_value)); free((yyvsp[-1].str_value)); } -#line 5266 "parser.cpp" +#line 5272 "parser.cpp" break; case 225: /* command_statement: SET GLOBAL IDENTIFIER DOUBLE_VALUE */ @@ -5273,12 +5279,69 @@ YYLTYPE yylloc = yyloc_default; (yyval.command_stmt)->command_info_ = std::make_unique(infinity::SetScope::kGlobal, infinity::SetVarType::kDouble, (yyvsp[-1].str_value), (yyvsp[0].double_value)); free((yyvsp[-1].str_value)); } -#line 5277 "parser.cpp" +#line 5283 "parser.cpp" break; - case 226: /* command_statement: COMPACT TABLE table_name */ + case 226: /* command_statement: SET CONFIG IDENTIFIER ON */ #line 1792 "parser.y" { + ParserHelper::ToLower((yyvsp[-1].str_value)); + (yyval.command_stmt) = new infinity::CommandStatement(); + (yyval.command_stmt)->command_info_ = std::make_unique(infinity::SetScope::kConfig, infinity::SetVarType::kBool, (yyvsp[-1].str_value), true); + free((yyvsp[-1].str_value)); +} +#line 5294 "parser.cpp" + break; + + case 227: /* command_statement: SET CONFIG IDENTIFIER OFF */ +#line 1798 "parser.y" + { + ParserHelper::ToLower((yyvsp[-1].str_value)); + (yyval.command_stmt) = new infinity::CommandStatement(); + (yyval.command_stmt)->command_info_ = std::make_unique(infinity::SetScope::kConfig, infinity::SetVarType::kBool, (yyvsp[-1].str_value), false); + free((yyvsp[-1].str_value)); +} +#line 5305 "parser.cpp" + break; + + case 228: /* command_statement: SET CONFIG IDENTIFIER IDENTIFIER */ +#line 1804 "parser.y" + { + ParserHelper::ToLower((yyvsp[-1].str_value)); + ParserHelper::ToLower((yyvsp[0].str_value)); + (yyval.command_stmt) = new infinity::CommandStatement(); + (yyval.command_stmt)->command_info_ = std::make_unique(infinity::SetScope::kConfig, infinity::SetVarType::kString, (yyvsp[-1].str_value), (yyvsp[0].str_value)); + free((yyvsp[-1].str_value)); + free((yyvsp[0].str_value)); +} +#line 5318 "parser.cpp" + break; + + case 229: /* command_statement: SET CONFIG IDENTIFIER LONG_VALUE */ +#line 1812 "parser.y" + { + ParserHelper::ToLower((yyvsp[-1].str_value)); + (yyval.command_stmt) = new infinity::CommandStatement(); + (yyval.command_stmt)->command_info_ = std::make_unique(infinity::SetScope::kConfig, infinity::SetVarType::kInteger, (yyvsp[-1].str_value), (yyvsp[0].long_value)); + free((yyvsp[-1].str_value)); +} +#line 5329 "parser.cpp" + break; + + case 230: /* command_statement: SET CONFIG IDENTIFIER DOUBLE_VALUE */ +#line 1818 "parser.y" + { + ParserHelper::ToLower((yyvsp[-1].str_value)); + (yyval.command_stmt) = new infinity::CommandStatement(); + (yyval.command_stmt)->command_info_ = std::make_unique(infinity::SetScope::kConfig, infinity::SetVarType::kDouble, (yyvsp[-1].str_value), (yyvsp[0].double_value)); + free((yyvsp[-1].str_value)); +} +#line 5340 "parser.cpp" + break; + + case 231: /* command_statement: COMPACT TABLE table_name */ +#line 1824 "parser.y" + { (yyval.command_stmt) = new infinity::CommandStatement(); if ((yyvsp[0].table_name_t)->schema_name_ptr_ != nullptr) { (yyval.command_stmt)->command_info_ = std::make_unique(std::string((yyvsp[0].table_name_t)->schema_name_ptr_), std::string((yyvsp[0].table_name_t)->table_name_ptr_)); @@ -5289,38 +5352,38 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[0].table_name_t)->table_name_ptr_); } delete (yyvsp[0].table_name_t); } -#line 5293 "parser.cpp" +#line 5356 "parser.cpp" break; - case 227: /* expr_array: expr_alias */ -#line 1808 "parser.y" + case 232: /* expr_array: expr_alias */ +#line 1840 "parser.y" { (yyval.expr_array_t) = new std::vector(); (yyval.expr_array_t)->emplace_back((yyvsp[0].expr_t)); } -#line 5302 "parser.cpp" +#line 5365 "parser.cpp" break; - case 228: /* expr_array: expr_array ',' expr_alias */ -#line 1812 "parser.y" + case 233: /* expr_array: expr_array ',' expr_alias */ +#line 1844 "parser.y" { (yyvsp[-2].expr_array_t)->emplace_back((yyvsp[0].expr_t)); (yyval.expr_array_t) = (yyvsp[-2].expr_array_t); } -#line 5311 "parser.cpp" +#line 5374 "parser.cpp" break; - case 229: /* expr_array_list: '(' expr_array ')' */ -#line 1817 "parser.y" + case 234: /* expr_array_list: '(' expr_array ')' */ +#line 1849 "parser.y" { (yyval.expr_array_list_t) = new std::vector*>(); (yyval.expr_array_list_t)->push_back((yyvsp[-1].expr_array_t)); } -#line 5320 "parser.cpp" +#line 5383 "parser.cpp" break; - case 230: /* expr_array_list: expr_array_list ',' '(' expr_array ')' */ -#line 1821 "parser.y" + case 235: /* expr_array_list: expr_array_list ',' '(' expr_array ')' */ +#line 1853 "parser.y" { if(!(yyvsp[-4].expr_array_list_t)->empty() && (yyvsp[-4].expr_array_list_t)->back()->size() != (yyvsp[-1].expr_array_t)->size()) { yyerror(&yyloc, scanner, result, "The expr_array in list shall have the same size."); @@ -5336,57 +5399,57 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-4].expr_array_list_t)->push_back((yyvsp[-1].expr_array_t)); (yyval.expr_array_list_t) = (yyvsp[-4].expr_array_list_t); } -#line 5340 "parser.cpp" +#line 5403 "parser.cpp" break; - case 231: /* expr_alias: expr AS IDENTIFIER */ -#line 1848 "parser.y" + case 236: /* expr_alias: expr AS IDENTIFIER */ +#line 1880 "parser.y" { (yyval.expr_t) = (yyvsp[-2].expr_t); ParserHelper::ToLower((yyvsp[0].str_value)); (yyval.expr_t)->alias_ = (yyvsp[0].str_value); free((yyvsp[0].str_value)); } -#line 5351 "parser.cpp" +#line 5414 "parser.cpp" break; - case 232: /* expr_alias: expr */ -#line 1854 "parser.y" + case 237: /* expr_alias: expr */ +#line 1886 "parser.y" { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 5359 "parser.cpp" +#line 5422 "parser.cpp" break; - case 238: /* operand: '(' expr ')' */ -#line 1864 "parser.y" + case 243: /* operand: '(' expr ')' */ +#line 1896 "parser.y" { (yyval.expr_t) = (yyvsp[-1].expr_t); } -#line 5367 "parser.cpp" +#line 5430 "parser.cpp" break; - case 239: /* operand: '(' select_without_paren ')' */ -#line 1867 "parser.y" + case 244: /* operand: '(' select_without_paren ')' */ +#line 1899 "parser.y" { infinity::SubqueryExpr* subquery_expr = new infinity::SubqueryExpr(); subquery_expr->subquery_type_ = infinity::SubqueryType::kScalar; subquery_expr->select_ = (yyvsp[-1].select_stmt); (yyval.expr_t) = subquery_expr; } -#line 5378 "parser.cpp" +#line 5441 "parser.cpp" break; - case 240: /* operand: constant_expr */ -#line 1873 "parser.y" + case 245: /* operand: constant_expr */ +#line 1905 "parser.y" { (yyval.expr_t) = (yyvsp[0].const_expr_t); } -#line 5386 "parser.cpp" +#line 5449 "parser.cpp" break; - case 249: /* knn_expr: KNN '(' expr ',' array_expr ',' STRING ',' STRING ',' LONG_VALUE ')' with_index_param_list */ -#line 1885 "parser.y" + case 254: /* knn_expr: KNN '(' expr ',' array_expr ',' STRING ',' STRING ',' LONG_VALUE ')' with_index_param_list */ +#line 1917 "parser.y" { infinity::KnnExpr* knn_expr = new infinity::KnnExpr(); (yyval.expr_t) = knn_expr; @@ -5553,11 +5616,11 @@ YYLTYPE yylloc = yyloc_default; knn_expr->topn_ = (yyvsp[-2].long_value); knn_expr->opt_params_ = (yyvsp[0].with_index_param_list_t); } -#line 5557 "parser.cpp" +#line 5620 "parser.cpp" break; - case 250: /* match_expr: MATCH '(' STRING ',' STRING ')' */ -#line 2052 "parser.y" + case 255: /* match_expr: MATCH '(' STRING ',' STRING ')' */ +#line 2084 "parser.y" { infinity::MatchExpr* match_expr = new infinity::MatchExpr(); match_expr->fields_ = std::string((yyvsp[-3].str_value)); @@ -5566,11 +5629,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].str_value)); (yyval.expr_t) = match_expr; } -#line 5570 "parser.cpp" +#line 5633 "parser.cpp" break; - case 251: /* match_expr: MATCH '(' STRING ',' STRING ',' STRING ')' */ -#line 2060 "parser.y" + case 256: /* match_expr: MATCH '(' STRING ',' STRING ',' STRING ')' */ +#line 2092 "parser.y" { infinity::MatchExpr* match_expr = new infinity::MatchExpr(); match_expr->fields_ = std::string((yyvsp[-5].str_value)); @@ -5581,22 +5644,22 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].str_value)); (yyval.expr_t) = match_expr; } -#line 5585 "parser.cpp" +#line 5648 "parser.cpp" break; - case 252: /* query_expr: QUERY '(' STRING ')' */ -#line 2071 "parser.y" + case 257: /* query_expr: QUERY '(' STRING ')' */ +#line 2103 "parser.y" { infinity::MatchExpr* match_expr = new infinity::MatchExpr(); match_expr->matching_text_ = std::string((yyvsp[-1].str_value)); free((yyvsp[-1].str_value)); (yyval.expr_t) = match_expr; } -#line 5596 "parser.cpp" +#line 5659 "parser.cpp" break; - case 253: /* query_expr: QUERY '(' STRING ',' STRING ')' */ -#line 2077 "parser.y" + case 258: /* query_expr: QUERY '(' STRING ',' STRING ')' */ +#line 2109 "parser.y" { infinity::MatchExpr* match_expr = new infinity::MatchExpr(); match_expr->matching_text_ = std::string((yyvsp[-3].str_value)); @@ -5605,22 +5668,22 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].str_value)); (yyval.expr_t) = match_expr; } -#line 5609 "parser.cpp" +#line 5672 "parser.cpp" break; - case 254: /* fusion_expr: FUSION '(' STRING ')' */ -#line 2086 "parser.y" + case 259: /* fusion_expr: FUSION '(' STRING ')' */ +#line 2118 "parser.y" { infinity::FusionExpr* fusion_expr = new infinity::FusionExpr(); fusion_expr->method_ = std::string((yyvsp[-1].str_value)); free((yyvsp[-1].str_value)); (yyval.expr_t) = fusion_expr; } -#line 5620 "parser.cpp" +#line 5683 "parser.cpp" break; - case 255: /* fusion_expr: FUSION '(' STRING ',' STRING ')' */ -#line 2092 "parser.y" + case 260: /* fusion_expr: FUSION '(' STRING ',' STRING ')' */ +#line 2124 "parser.y" { infinity::FusionExpr* fusion_expr = new infinity::FusionExpr(); fusion_expr->method_ = std::string((yyvsp[-3].str_value)); @@ -5629,83 +5692,83 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].str_value)); (yyval.expr_t) = fusion_expr; } -#line 5633 "parser.cpp" +#line 5696 "parser.cpp" break; - case 256: /* sub_search_array: knn_expr */ -#line 2102 "parser.y" + case 261: /* sub_search_array: knn_expr */ +#line 2134 "parser.y" { (yyval.expr_array_t) = new std::vector(); (yyval.expr_array_t)->emplace_back((yyvsp[0].expr_t)); } -#line 5642 "parser.cpp" +#line 5705 "parser.cpp" break; - case 257: /* sub_search_array: match_expr */ -#line 2106 "parser.y" + case 262: /* sub_search_array: match_expr */ +#line 2138 "parser.y" { (yyval.expr_array_t) = new std::vector(); (yyval.expr_array_t)->emplace_back((yyvsp[0].expr_t)); } -#line 5651 "parser.cpp" +#line 5714 "parser.cpp" break; - case 258: /* sub_search_array: query_expr */ -#line 2110 "parser.y" + case 263: /* sub_search_array: query_expr */ +#line 2142 "parser.y" { (yyval.expr_array_t) = new std::vector(); (yyval.expr_array_t)->emplace_back((yyvsp[0].expr_t)); } -#line 5660 "parser.cpp" +#line 5723 "parser.cpp" break; - case 259: /* sub_search_array: fusion_expr */ -#line 2114 "parser.y" + case 264: /* sub_search_array: fusion_expr */ +#line 2146 "parser.y" { (yyval.expr_array_t) = new std::vector(); (yyval.expr_array_t)->emplace_back((yyvsp[0].expr_t)); } -#line 5669 "parser.cpp" +#line 5732 "parser.cpp" break; - case 260: /* sub_search_array: sub_search_array ',' knn_expr */ -#line 2118 "parser.y" + case 265: /* sub_search_array: sub_search_array ',' knn_expr */ +#line 2150 "parser.y" { (yyvsp[-2].expr_array_t)->emplace_back((yyvsp[0].expr_t)); (yyval.expr_array_t) = (yyvsp[-2].expr_array_t); } -#line 5678 "parser.cpp" +#line 5741 "parser.cpp" break; - case 261: /* sub_search_array: sub_search_array ',' match_expr */ -#line 2122 "parser.y" + case 266: /* sub_search_array: sub_search_array ',' match_expr */ +#line 2154 "parser.y" { (yyvsp[-2].expr_array_t)->emplace_back((yyvsp[0].expr_t)); (yyval.expr_array_t) = (yyvsp[-2].expr_array_t); } -#line 5687 "parser.cpp" +#line 5750 "parser.cpp" break; - case 262: /* sub_search_array: sub_search_array ',' query_expr */ -#line 2126 "parser.y" + case 267: /* sub_search_array: sub_search_array ',' query_expr */ +#line 2158 "parser.y" { (yyvsp[-2].expr_array_t)->emplace_back((yyvsp[0].expr_t)); (yyval.expr_array_t) = (yyvsp[-2].expr_array_t); } -#line 5696 "parser.cpp" +#line 5759 "parser.cpp" break; - case 263: /* sub_search_array: sub_search_array ',' fusion_expr */ -#line 2130 "parser.y" + case 268: /* sub_search_array: sub_search_array ',' fusion_expr */ +#line 2162 "parser.y" { (yyvsp[-2].expr_array_t)->emplace_back((yyvsp[0].expr_t)); (yyval.expr_array_t) = (yyvsp[-2].expr_array_t); } -#line 5705 "parser.cpp" +#line 5768 "parser.cpp" break; - case 264: /* function_expr: IDENTIFIER '(' ')' */ -#line 2135 "parser.y" + case 269: /* function_expr: IDENTIFIER '(' ')' */ +#line 2167 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); ParserHelper::ToLower((yyvsp[-2].str_value)); @@ -5714,11 +5777,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_ = nullptr; (yyval.expr_t) = func_expr; } -#line 5718 "parser.cpp" +#line 5781 "parser.cpp" break; - case 265: /* function_expr: IDENTIFIER '(' expr_array ')' */ -#line 2143 "parser.y" + case 270: /* function_expr: IDENTIFIER '(' expr_array ')' */ +#line 2175 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); ParserHelper::ToLower((yyvsp[-3].str_value)); @@ -5727,11 +5790,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_ = (yyvsp[-1].expr_array_t); (yyval.expr_t) = func_expr; } -#line 5731 "parser.cpp" +#line 5794 "parser.cpp" break; - case 266: /* function_expr: IDENTIFIER '(' DISTINCT expr_array ')' */ -#line 2151 "parser.y" + case 271: /* function_expr: IDENTIFIER '(' DISTINCT expr_array ')' */ +#line 2183 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); ParserHelper::ToLower((yyvsp[-4].str_value)); @@ -5741,11 +5804,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->distinct_ = true; (yyval.expr_t) = func_expr; } -#line 5745 "parser.cpp" +#line 5808 "parser.cpp" break; - case 267: /* function_expr: operand IS NOT NULLABLE */ -#line 2160 "parser.y" + case 272: /* function_expr: operand IS NOT NULLABLE */ +#line 2192 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "is_not_null"; @@ -5753,11 +5816,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[-3].expr_t)); (yyval.expr_t) = func_expr; } -#line 5757 "parser.cpp" +#line 5820 "parser.cpp" break; - case 268: /* function_expr: operand IS NULLABLE */ -#line 2167 "parser.y" + case 273: /* function_expr: operand IS NULLABLE */ +#line 2199 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "is_null"; @@ -5765,11 +5828,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[-2].expr_t)); (yyval.expr_t) = func_expr; } -#line 5769 "parser.cpp" +#line 5832 "parser.cpp" break; - case 269: /* function_expr: NOT operand */ -#line 2174 "parser.y" + case 274: /* function_expr: NOT operand */ +#line 2206 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "not"; @@ -5777,11 +5840,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 5781 "parser.cpp" +#line 5844 "parser.cpp" break; - case 270: /* function_expr: '-' operand */ -#line 2181 "parser.y" + case 275: /* function_expr: '-' operand */ +#line 2213 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "-"; @@ -5789,11 +5852,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 5793 "parser.cpp" +#line 5856 "parser.cpp" break; - case 271: /* function_expr: '+' operand */ -#line 2188 "parser.y" + case 276: /* function_expr: '+' operand */ +#line 2220 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "+"; @@ -5801,11 +5864,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 5805 "parser.cpp" +#line 5868 "parser.cpp" break; - case 272: /* function_expr: operand '-' operand */ -#line 2195 "parser.y" + case 277: /* function_expr: operand '-' operand */ +#line 2227 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "-"; @@ -5814,11 +5877,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 5818 "parser.cpp" +#line 5881 "parser.cpp" break; - case 273: /* function_expr: operand '+' operand */ -#line 2203 "parser.y" + case 278: /* function_expr: operand '+' operand */ +#line 2235 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "+"; @@ -5827,11 +5890,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 5831 "parser.cpp" +#line 5894 "parser.cpp" break; - case 274: /* function_expr: operand '*' operand */ -#line 2211 "parser.y" + case 279: /* function_expr: operand '*' operand */ +#line 2243 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "*"; @@ -5840,11 +5903,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 5844 "parser.cpp" +#line 5907 "parser.cpp" break; - case 275: /* function_expr: operand '/' operand */ -#line 2219 "parser.y" + case 280: /* function_expr: operand '/' operand */ +#line 2251 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "/"; @@ -5853,11 +5916,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 5857 "parser.cpp" +#line 5920 "parser.cpp" break; - case 276: /* function_expr: operand '%' operand */ -#line 2227 "parser.y" + case 281: /* function_expr: operand '%' operand */ +#line 2259 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "%"; @@ -5866,11 +5929,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 5870 "parser.cpp" +#line 5933 "parser.cpp" break; - case 277: /* function_expr: operand '=' operand */ -#line 2235 "parser.y" + case 282: /* function_expr: operand '=' operand */ +#line 2267 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "="; @@ -5879,11 +5942,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 5883 "parser.cpp" +#line 5946 "parser.cpp" break; - case 278: /* function_expr: operand EQUAL operand */ -#line 2243 "parser.y" + case 283: /* function_expr: operand EQUAL operand */ +#line 2275 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "="; @@ -5892,11 +5955,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 5896 "parser.cpp" +#line 5959 "parser.cpp" break; - case 279: /* function_expr: operand NOT_EQ operand */ -#line 2251 "parser.y" + case 284: /* function_expr: operand NOT_EQ operand */ +#line 2283 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "<>"; @@ -5905,11 +5968,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 5909 "parser.cpp" +#line 5972 "parser.cpp" break; - case 280: /* function_expr: operand '<' operand */ -#line 2259 "parser.y" + case 285: /* function_expr: operand '<' operand */ +#line 2291 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "<"; @@ -5918,11 +5981,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 5922 "parser.cpp" +#line 5985 "parser.cpp" break; - case 281: /* function_expr: operand '>' operand */ -#line 2267 "parser.y" + case 286: /* function_expr: operand '>' operand */ +#line 2299 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = ">"; @@ -5931,11 +5994,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 5935 "parser.cpp" +#line 5998 "parser.cpp" break; - case 282: /* function_expr: operand LESS_EQ operand */ -#line 2275 "parser.y" + case 287: /* function_expr: operand LESS_EQ operand */ +#line 2307 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "<="; @@ -5944,11 +6007,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 5948 "parser.cpp" +#line 6011 "parser.cpp" break; - case 283: /* function_expr: operand GREATER_EQ operand */ -#line 2283 "parser.y" + case 288: /* function_expr: operand GREATER_EQ operand */ +#line 2315 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = ">="; @@ -5957,11 +6020,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 5961 "parser.cpp" +#line 6024 "parser.cpp" break; - case 284: /* function_expr: EXTRACT '(' STRING FROM operand ')' */ -#line 2291 "parser.y" + case 289: /* function_expr: EXTRACT '(' STRING FROM operand ')' */ +#line 2323 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); ParserHelper::ToLower((yyvsp[-3].str_value)); @@ -5992,11 +6055,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[-1].expr_t)); (yyval.expr_t) = func_expr; } -#line 5996 "parser.cpp" +#line 6059 "parser.cpp" break; - case 285: /* function_expr: operand LIKE operand */ -#line 2321 "parser.y" + case 290: /* function_expr: operand LIKE operand */ +#line 2353 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "like"; @@ -6005,11 +6068,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 6009 "parser.cpp" +#line 6072 "parser.cpp" break; - case 286: /* function_expr: operand NOT LIKE operand */ -#line 2329 "parser.y" + case 291: /* function_expr: operand NOT LIKE operand */ +#line 2361 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "not_like"; @@ -6018,11 +6081,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 6022 "parser.cpp" +#line 6085 "parser.cpp" break; - case 287: /* conjunction_expr: expr AND expr */ -#line 2338 "parser.y" + case 292: /* conjunction_expr: expr AND expr */ +#line 2370 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "and"; @@ -6031,11 +6094,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 6035 "parser.cpp" +#line 6098 "parser.cpp" break; - case 288: /* conjunction_expr: expr OR expr */ -#line 2346 "parser.y" + case 293: /* conjunction_expr: expr OR expr */ +#line 2378 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "or"; @@ -6044,11 +6107,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 6048 "parser.cpp" +#line 6111 "parser.cpp" break; - case 289: /* between_expr: operand BETWEEN operand AND operand */ -#line 2355 "parser.y" + case 294: /* between_expr: operand BETWEEN operand AND operand */ +#line 2387 "parser.y" { infinity::BetweenExpr* between_expr = new infinity::BetweenExpr(); between_expr->value_ = (yyvsp[-4].expr_t); @@ -6056,44 +6119,44 @@ YYLTYPE yylloc = yyloc_default; between_expr->upper_bound_ = (yyvsp[0].expr_t); (yyval.expr_t) = between_expr; } -#line 6060 "parser.cpp" +#line 6123 "parser.cpp" break; - case 290: /* in_expr: operand IN '(' expr_array ')' */ -#line 2363 "parser.y" + case 295: /* in_expr: operand IN '(' expr_array ')' */ +#line 2395 "parser.y" { infinity::InExpr* in_expr = new infinity::InExpr(true); in_expr->left_ = (yyvsp[-4].expr_t); in_expr->arguments_ = (yyvsp[-1].expr_array_t); (yyval.expr_t) = in_expr; } -#line 6071 "parser.cpp" +#line 6134 "parser.cpp" break; - case 291: /* in_expr: operand NOT IN '(' expr_array ')' */ -#line 2369 "parser.y" + case 296: /* in_expr: operand NOT IN '(' expr_array ')' */ +#line 2401 "parser.y" { infinity::InExpr* in_expr = new infinity::InExpr(false); in_expr->left_ = (yyvsp[-5].expr_t); in_expr->arguments_ = (yyvsp[-1].expr_array_t); (yyval.expr_t) = in_expr; } -#line 6082 "parser.cpp" +#line 6145 "parser.cpp" break; - case 292: /* case_expr: CASE expr case_check_array END */ -#line 2376 "parser.y" + case 297: /* case_expr: CASE expr case_check_array END */ +#line 2408 "parser.y" { infinity::CaseExpr* case_expr = new infinity::CaseExpr(); case_expr->expr_ = (yyvsp[-2].expr_t); case_expr->case_check_array_ = (yyvsp[-1].case_check_array_t); (yyval.expr_t) = case_expr; } -#line 6093 "parser.cpp" +#line 6156 "parser.cpp" break; - case 293: /* case_expr: CASE expr case_check_array ELSE expr END */ -#line 2382 "parser.y" + case 298: /* case_expr: CASE expr case_check_array ELSE expr END */ +#line 2414 "parser.y" { infinity::CaseExpr* case_expr = new infinity::CaseExpr(); case_expr->expr_ = (yyvsp[-4].expr_t); @@ -6101,32 +6164,32 @@ YYLTYPE yylloc = yyloc_default; case_expr->else_expr_ = (yyvsp[-1].expr_t); (yyval.expr_t) = case_expr; } -#line 6105 "parser.cpp" +#line 6168 "parser.cpp" break; - case 294: /* case_expr: CASE case_check_array END */ -#line 2389 "parser.y" + case 299: /* case_expr: CASE case_check_array END */ +#line 2421 "parser.y" { infinity::CaseExpr* case_expr = new infinity::CaseExpr(); case_expr->case_check_array_ = (yyvsp[-1].case_check_array_t); (yyval.expr_t) = case_expr; } -#line 6115 "parser.cpp" +#line 6178 "parser.cpp" break; - case 295: /* case_expr: CASE case_check_array ELSE expr END */ -#line 2394 "parser.y" + case 300: /* case_expr: CASE case_check_array ELSE expr END */ +#line 2426 "parser.y" { infinity::CaseExpr* case_expr = new infinity::CaseExpr(); case_expr->case_check_array_ = (yyvsp[-3].case_check_array_t); case_expr->else_expr_ = (yyvsp[-1].expr_t); (yyval.expr_t) = case_expr; } -#line 6126 "parser.cpp" +#line 6189 "parser.cpp" break; - case 296: /* case_check_array: WHEN expr THEN expr */ -#line 2401 "parser.y" + case 301: /* case_check_array: WHEN expr THEN expr */ +#line 2433 "parser.y" { (yyval.case_check_array_t) = new std::vector(); infinity::WhenThen* when_then_ptr = new infinity::WhenThen(); @@ -6134,11 +6197,11 @@ YYLTYPE yylloc = yyloc_default; when_then_ptr->then_ = (yyvsp[0].expr_t); (yyval.case_check_array_t)->emplace_back(when_then_ptr); } -#line 6138 "parser.cpp" +#line 6201 "parser.cpp" break; - case 297: /* case_check_array: case_check_array WHEN expr THEN expr */ -#line 2408 "parser.y" + case 302: /* case_check_array: case_check_array WHEN expr THEN expr */ +#line 2440 "parser.y" { infinity::WhenThen* when_then_ptr = new infinity::WhenThen(); when_then_ptr->when_ = (yyvsp[-2].expr_t); @@ -6146,11 +6209,11 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-4].case_check_array_t)->emplace_back(when_then_ptr); (yyval.case_check_array_t) = (yyvsp[-4].case_check_array_t); } -#line 6150 "parser.cpp" +#line 6213 "parser.cpp" break; - case 298: /* cast_expr: CAST '(' expr AS column_type ')' */ -#line 2416 "parser.y" + case 303: /* cast_expr: CAST '(' expr AS column_type ')' */ +#line 2448 "parser.y" { std::shared_ptr type_info_ptr{nullptr}; switch((yyvsp[-1].column_type_t).logical_type_) { @@ -6174,33 +6237,33 @@ YYLTYPE yylloc = yyloc_default; cast_expr->expr_ = (yyvsp[-3].expr_t); (yyval.expr_t) = cast_expr; } -#line 6178 "parser.cpp" +#line 6241 "parser.cpp" break; - case 299: /* subquery_expr: EXISTS '(' select_without_paren ')' */ -#line 2440 "parser.y" + case 304: /* subquery_expr: EXISTS '(' select_without_paren ')' */ +#line 2472 "parser.y" { infinity::SubqueryExpr* subquery_expr = new infinity::SubqueryExpr(); subquery_expr->subquery_type_ = infinity::SubqueryType::kExists; subquery_expr->select_ = (yyvsp[-1].select_stmt); (yyval.expr_t) = subquery_expr; } -#line 6189 "parser.cpp" +#line 6252 "parser.cpp" break; - case 300: /* subquery_expr: NOT EXISTS '(' select_without_paren ')' */ -#line 2446 "parser.y" + case 305: /* subquery_expr: NOT EXISTS '(' select_without_paren ')' */ +#line 2478 "parser.y" { infinity::SubqueryExpr* subquery_expr = new infinity::SubqueryExpr(); subquery_expr->subquery_type_ = infinity::SubqueryType::kNotExists; subquery_expr->select_ = (yyvsp[-1].select_stmt); (yyval.expr_t) = subquery_expr; } -#line 6200 "parser.cpp" +#line 6263 "parser.cpp" break; - case 301: /* subquery_expr: operand IN '(' select_without_paren ')' */ -#line 2452 "parser.y" + case 306: /* subquery_expr: operand IN '(' select_without_paren ')' */ +#line 2484 "parser.y" { infinity::SubqueryExpr* subquery_expr = new infinity::SubqueryExpr(); subquery_expr->subquery_type_ = infinity::SubqueryType::kIn; @@ -6208,11 +6271,11 @@ YYLTYPE yylloc = yyloc_default; subquery_expr->select_ = (yyvsp[-1].select_stmt); (yyval.expr_t) = subquery_expr; } -#line 6212 "parser.cpp" +#line 6275 "parser.cpp" break; - case 302: /* subquery_expr: operand NOT IN '(' select_without_paren ')' */ -#line 2459 "parser.y" + case 307: /* subquery_expr: operand NOT IN '(' select_without_paren ')' */ +#line 2491 "parser.y" { infinity::SubqueryExpr* subquery_expr = new infinity::SubqueryExpr(); subquery_expr->subquery_type_ = infinity::SubqueryType::kNotIn; @@ -6220,11 +6283,11 @@ YYLTYPE yylloc = yyloc_default; subquery_expr->select_ = (yyvsp[-1].select_stmt); (yyval.expr_t) = subquery_expr; } -#line 6224 "parser.cpp" +#line 6287 "parser.cpp" break; - case 303: /* column_expr: IDENTIFIER */ -#line 2467 "parser.y" + case 308: /* column_expr: IDENTIFIER */ +#line 2499 "parser.y" { infinity::ColumnExpr* column_expr = new infinity::ColumnExpr(); ParserHelper::ToLower((yyvsp[0].str_value)); @@ -6232,11 +6295,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[0].str_value)); (yyval.expr_t) = column_expr; } -#line 6236 "parser.cpp" +#line 6299 "parser.cpp" break; - case 304: /* column_expr: column_expr '.' IDENTIFIER */ -#line 2474 "parser.y" + case 309: /* column_expr: column_expr '.' IDENTIFIER */ +#line 2506 "parser.y" { infinity::ColumnExpr* column_expr = (infinity::ColumnExpr*)(yyvsp[-2].expr_t); ParserHelper::ToLower((yyvsp[0].str_value)); @@ -6244,21 +6307,21 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[0].str_value)); (yyval.expr_t) = column_expr; } -#line 6248 "parser.cpp" +#line 6311 "parser.cpp" break; - case 305: /* column_expr: '*' */ -#line 2481 "parser.y" + case 310: /* column_expr: '*' */ +#line 2513 "parser.y" { infinity::ColumnExpr* column_expr = new infinity::ColumnExpr(); column_expr->star_ = true; (yyval.expr_t) = column_expr; } -#line 6258 "parser.cpp" +#line 6321 "parser.cpp" break; - case 306: /* column_expr: column_expr '.' '*' */ -#line 2486 "parser.y" + case 311: /* column_expr: column_expr '.' '*' */ +#line 2518 "parser.y" { infinity::ColumnExpr* column_expr = (infinity::ColumnExpr*)(yyvsp[-2].expr_t); if(column_expr->star_) { @@ -6268,353 +6331,353 @@ YYLTYPE yylloc = yyloc_default; column_expr->star_ = true; (yyval.expr_t) = column_expr; } -#line 6272 "parser.cpp" +#line 6335 "parser.cpp" break; - case 307: /* constant_expr: STRING */ -#line 2496 "parser.y" + case 312: /* constant_expr: STRING */ +#line 2528 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kString); const_expr->str_value_ = (yyvsp[0].str_value); (yyval.const_expr_t) = const_expr; } -#line 6282 "parser.cpp" +#line 6345 "parser.cpp" break; - case 308: /* constant_expr: TRUE */ -#line 2501 "parser.y" + case 313: /* constant_expr: TRUE */ +#line 2533 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kBoolean); const_expr->bool_value_ = true; (yyval.const_expr_t) = const_expr; } -#line 6292 "parser.cpp" +#line 6355 "parser.cpp" break; - case 309: /* constant_expr: FALSE */ -#line 2506 "parser.y" + case 314: /* constant_expr: FALSE */ +#line 2538 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kBoolean); const_expr->bool_value_ = false; (yyval.const_expr_t) = const_expr; } -#line 6302 "parser.cpp" +#line 6365 "parser.cpp" break; - case 310: /* constant_expr: DOUBLE_VALUE */ -#line 2511 "parser.y" + case 315: /* constant_expr: DOUBLE_VALUE */ +#line 2543 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kDouble); const_expr->double_value_ = (yyvsp[0].double_value); (yyval.const_expr_t) = const_expr; } -#line 6312 "parser.cpp" +#line 6375 "parser.cpp" break; - case 311: /* constant_expr: LONG_VALUE */ -#line 2516 "parser.y" + case 316: /* constant_expr: LONG_VALUE */ +#line 2548 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInteger); const_expr->integer_value_ = (yyvsp[0].long_value); (yyval.const_expr_t) = const_expr; } -#line 6322 "parser.cpp" +#line 6385 "parser.cpp" break; - case 312: /* constant_expr: DATE STRING */ -#line 2521 "parser.y" + case 317: /* constant_expr: DATE STRING */ +#line 2553 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kDate); const_expr->date_value_ = (yyvsp[0].str_value); (yyval.const_expr_t) = const_expr; } -#line 6332 "parser.cpp" +#line 6395 "parser.cpp" break; - case 313: /* constant_expr: TIME STRING */ -#line 2526 "parser.y" + case 318: /* constant_expr: TIME STRING */ +#line 2558 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kTime); const_expr->date_value_ = (yyvsp[0].str_value); (yyval.const_expr_t) = const_expr; } -#line 6342 "parser.cpp" +#line 6405 "parser.cpp" break; - case 314: /* constant_expr: DATETIME STRING */ -#line 2531 "parser.y" + case 319: /* constant_expr: DATETIME STRING */ +#line 2563 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kDateTime); const_expr->date_value_ = (yyvsp[0].str_value); (yyval.const_expr_t) = const_expr; } -#line 6352 "parser.cpp" +#line 6415 "parser.cpp" break; - case 315: /* constant_expr: TIMESTAMP STRING */ -#line 2536 "parser.y" + case 320: /* constant_expr: TIMESTAMP STRING */ +#line 2568 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kTimestamp); const_expr->date_value_ = (yyvsp[0].str_value); (yyval.const_expr_t) = const_expr; } -#line 6362 "parser.cpp" +#line 6425 "parser.cpp" break; - case 316: /* constant_expr: INTERVAL interval_expr */ -#line 2541 "parser.y" + case 321: /* constant_expr: INTERVAL interval_expr */ +#line 2573 "parser.y" { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 6370 "parser.cpp" +#line 6433 "parser.cpp" break; - case 317: /* constant_expr: interval_expr */ -#line 2544 "parser.y" + case 322: /* constant_expr: interval_expr */ +#line 2576 "parser.y" { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 6378 "parser.cpp" +#line 6441 "parser.cpp" break; - case 318: /* constant_expr: long_array_expr */ -#line 2547 "parser.y" + case 323: /* constant_expr: long_array_expr */ +#line 2579 "parser.y" { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 6386 "parser.cpp" +#line 6449 "parser.cpp" break; - case 319: /* constant_expr: double_array_expr */ -#line 2550 "parser.y" + case 324: /* constant_expr: double_array_expr */ +#line 2582 "parser.y" { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 6394 "parser.cpp" +#line 6457 "parser.cpp" break; - case 320: /* array_expr: long_array_expr */ -#line 2554 "parser.y" + case 325: /* array_expr: long_array_expr */ +#line 2586 "parser.y" { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 6402 "parser.cpp" +#line 6465 "parser.cpp" break; - case 321: /* array_expr: double_array_expr */ -#line 2557 "parser.y" + case 326: /* array_expr: double_array_expr */ +#line 2589 "parser.y" { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 6410 "parser.cpp" +#line 6473 "parser.cpp" break; - case 322: /* long_array_expr: unclosed_long_array_expr ']' */ -#line 2561 "parser.y" + case 327: /* long_array_expr: unclosed_long_array_expr ']' */ +#line 2593 "parser.y" { (yyval.const_expr_t) = (yyvsp[-1].const_expr_t); } -#line 6418 "parser.cpp" +#line 6481 "parser.cpp" break; - case 323: /* unclosed_long_array_expr: '[' LONG_VALUE */ -#line 2565 "parser.y" + case 328: /* unclosed_long_array_expr: '[' LONG_VALUE */ +#line 2597 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kIntegerArray); const_expr->long_array_.emplace_back((yyvsp[0].long_value)); (yyval.const_expr_t) = const_expr; } -#line 6428 "parser.cpp" +#line 6491 "parser.cpp" break; - case 324: /* unclosed_long_array_expr: unclosed_long_array_expr ',' LONG_VALUE */ -#line 2570 "parser.y" + case 329: /* unclosed_long_array_expr: unclosed_long_array_expr ',' LONG_VALUE */ +#line 2602 "parser.y" { (yyvsp[-2].const_expr_t)->long_array_.emplace_back((yyvsp[0].long_value)); (yyval.const_expr_t) = (yyvsp[-2].const_expr_t); } -#line 6437 "parser.cpp" +#line 6500 "parser.cpp" break; - case 325: /* double_array_expr: unclosed_double_array_expr ']' */ -#line 2575 "parser.y" + case 330: /* double_array_expr: unclosed_double_array_expr ']' */ +#line 2607 "parser.y" { (yyval.const_expr_t) = (yyvsp[-1].const_expr_t); } -#line 6445 "parser.cpp" +#line 6508 "parser.cpp" break; - case 326: /* unclosed_double_array_expr: '[' DOUBLE_VALUE */ -#line 2579 "parser.y" + case 331: /* unclosed_double_array_expr: '[' DOUBLE_VALUE */ +#line 2611 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kDoubleArray); const_expr->double_array_.emplace_back((yyvsp[0].double_value)); (yyval.const_expr_t) = const_expr; } -#line 6455 "parser.cpp" +#line 6518 "parser.cpp" break; - case 327: /* unclosed_double_array_expr: unclosed_double_array_expr ',' DOUBLE_VALUE */ -#line 2584 "parser.y" + case 332: /* unclosed_double_array_expr: unclosed_double_array_expr ',' DOUBLE_VALUE */ +#line 2616 "parser.y" { (yyvsp[-2].const_expr_t)->double_array_.emplace_back((yyvsp[0].double_value)); (yyval.const_expr_t) = (yyvsp[-2].const_expr_t); } -#line 6464 "parser.cpp" +#line 6527 "parser.cpp" break; - case 328: /* interval_expr: LONG_VALUE SECONDS */ -#line 2589 "parser.y" + case 333: /* interval_expr: LONG_VALUE SECONDS */ +#line 2621 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInterval); const_expr->interval_type_ = infinity::TimeUnit::kSecond; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 6475 "parser.cpp" +#line 6538 "parser.cpp" break; - case 329: /* interval_expr: LONG_VALUE SECOND */ -#line 2595 "parser.y" + case 334: /* interval_expr: LONG_VALUE SECOND */ +#line 2627 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInterval); const_expr->interval_type_ = infinity::TimeUnit::kSecond; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 6486 "parser.cpp" +#line 6549 "parser.cpp" break; - case 330: /* interval_expr: LONG_VALUE MINUTES */ -#line 2601 "parser.y" + case 335: /* interval_expr: LONG_VALUE MINUTES */ +#line 2633 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInterval); const_expr->interval_type_ = infinity::TimeUnit::kMinute; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 6497 "parser.cpp" +#line 6560 "parser.cpp" break; - case 331: /* interval_expr: LONG_VALUE MINUTE */ -#line 2607 "parser.y" + case 336: /* interval_expr: LONG_VALUE MINUTE */ +#line 2639 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInterval); const_expr->interval_type_ = infinity::TimeUnit::kMinute; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 6508 "parser.cpp" +#line 6571 "parser.cpp" break; - case 332: /* interval_expr: LONG_VALUE HOURS */ -#line 2613 "parser.y" + case 337: /* interval_expr: LONG_VALUE HOURS */ +#line 2645 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInterval); const_expr->interval_type_ = infinity::TimeUnit::kHour; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 6519 "parser.cpp" +#line 6582 "parser.cpp" break; - case 333: /* interval_expr: LONG_VALUE HOUR */ -#line 2619 "parser.y" + case 338: /* interval_expr: LONG_VALUE HOUR */ +#line 2651 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInterval); const_expr->interval_type_ = infinity::TimeUnit::kHour; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 6530 "parser.cpp" +#line 6593 "parser.cpp" break; - case 334: /* interval_expr: LONG_VALUE DAYS */ -#line 2625 "parser.y" + case 339: /* interval_expr: LONG_VALUE DAYS */ +#line 2657 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInterval); const_expr->interval_type_ = infinity::TimeUnit::kDay; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 6541 "parser.cpp" +#line 6604 "parser.cpp" break; - case 335: /* interval_expr: LONG_VALUE DAY */ -#line 2631 "parser.y" + case 340: /* interval_expr: LONG_VALUE DAY */ +#line 2663 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInterval); const_expr->interval_type_ = infinity::TimeUnit::kDay; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 6552 "parser.cpp" +#line 6615 "parser.cpp" break; - case 336: /* interval_expr: LONG_VALUE MONTHS */ -#line 2637 "parser.y" + case 341: /* interval_expr: LONG_VALUE MONTHS */ +#line 2669 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInterval); const_expr->interval_type_ = infinity::TimeUnit::kMonth; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 6563 "parser.cpp" +#line 6626 "parser.cpp" break; - case 337: /* interval_expr: LONG_VALUE MONTH */ -#line 2643 "parser.y" + case 342: /* interval_expr: LONG_VALUE MONTH */ +#line 2675 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInterval); const_expr->interval_type_ = infinity::TimeUnit::kMonth; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 6574 "parser.cpp" +#line 6637 "parser.cpp" break; - case 338: /* interval_expr: LONG_VALUE YEARS */ -#line 2649 "parser.y" + case 343: /* interval_expr: LONG_VALUE YEARS */ +#line 2681 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInterval); const_expr->interval_type_ = infinity::TimeUnit::kYear; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 6585 "parser.cpp" +#line 6648 "parser.cpp" break; - case 339: /* interval_expr: LONG_VALUE YEAR */ -#line 2655 "parser.y" + case 344: /* interval_expr: LONG_VALUE YEAR */ +#line 2687 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInterval); const_expr->interval_type_ = infinity::TimeUnit::kYear; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 6596 "parser.cpp" +#line 6659 "parser.cpp" break; - case 340: /* copy_option_list: copy_option */ -#line 2666 "parser.y" + case 345: /* copy_option_list: copy_option */ +#line 2698 "parser.y" { (yyval.copy_option_array) = new std::vector(); (yyval.copy_option_array)->push_back((yyvsp[0].copy_option_t)); } -#line 6605 "parser.cpp" +#line 6668 "parser.cpp" break; - case 341: /* copy_option_list: copy_option_list ',' copy_option */ -#line 2670 "parser.y" + case 346: /* copy_option_list: copy_option_list ',' copy_option */ +#line 2702 "parser.y" { (yyvsp[-2].copy_option_array)->push_back((yyvsp[0].copy_option_t)); (yyval.copy_option_array) = (yyvsp[-2].copy_option_array); } -#line 6614 "parser.cpp" +#line 6677 "parser.cpp" break; - case 342: /* copy_option: FORMAT IDENTIFIER */ -#line 2675 "parser.y" + case 347: /* copy_option: FORMAT IDENTIFIER */ +#line 2707 "parser.y" { (yyval.copy_option_t) = new infinity::CopyOption(); (yyval.copy_option_t)->option_type_ = infinity::CopyOptionType::kFormat; @@ -6637,11 +6700,11 @@ YYLTYPE yylloc = yyloc_default; YYERROR; } } -#line 6641 "parser.cpp" +#line 6704 "parser.cpp" break; - case 343: /* copy_option: DELIMITER STRING */ -#line 2697 "parser.y" + case 348: /* copy_option: DELIMITER STRING */ +#line 2729 "parser.y" { (yyval.copy_option_t) = new infinity::CopyOption(); (yyval.copy_option_t)->option_type_ = infinity::CopyOptionType::kDelimiter; @@ -6652,53 +6715,53 @@ YYLTYPE yylloc = yyloc_default; } free((yyvsp[0].str_value)); } -#line 6656 "parser.cpp" +#line 6719 "parser.cpp" break; - case 344: /* copy_option: HEADER */ -#line 2707 "parser.y" + case 349: /* copy_option: HEADER */ +#line 2739 "parser.y" { (yyval.copy_option_t) = new infinity::CopyOption(); (yyval.copy_option_t)->option_type_ = infinity::CopyOptionType::kHeader; (yyval.copy_option_t)->header_ = true; } -#line 6666 "parser.cpp" +#line 6729 "parser.cpp" break; - case 345: /* file_path: STRING */ -#line 2713 "parser.y" + case 350: /* file_path: STRING */ +#line 2745 "parser.y" { (yyval.str_value) = (yyvsp[0].str_value); } -#line 6674 "parser.cpp" +#line 6737 "parser.cpp" break; - case 346: /* if_exists: IF EXISTS */ -#line 2717 "parser.y" + case 351: /* if_exists: IF EXISTS */ +#line 2749 "parser.y" { (yyval.bool_value) = true; } -#line 6680 "parser.cpp" +#line 6743 "parser.cpp" break; - case 347: /* if_exists: %empty */ -#line 2718 "parser.y" + case 352: /* if_exists: %empty */ +#line 2750 "parser.y" { (yyval.bool_value) = false; } -#line 6686 "parser.cpp" +#line 6749 "parser.cpp" break; - case 348: /* if_not_exists: IF NOT EXISTS */ -#line 2720 "parser.y" + case 353: /* if_not_exists: IF NOT EXISTS */ +#line 2752 "parser.y" { (yyval.bool_value) = true; } -#line 6692 "parser.cpp" +#line 6755 "parser.cpp" break; - case 349: /* if_not_exists: %empty */ -#line 2721 "parser.y" + case 354: /* if_not_exists: %empty */ +#line 2753 "parser.y" { (yyval.bool_value) = false; } -#line 6698 "parser.cpp" +#line 6761 "parser.cpp" break; - case 352: /* if_not_exists_info: if_not_exists IDENTIFIER */ -#line 2736 "parser.y" + case 357: /* if_not_exists_info: if_not_exists IDENTIFIER */ +#line 2768 "parser.y" { (yyval.if_not_exists_info_t) = new infinity::IfNotExistsInfo(); (yyval.if_not_exists_info_t)->exists_ = true; @@ -6707,79 +6770,79 @@ YYLTYPE yylloc = yyloc_default; (yyval.if_not_exists_info_t)->info_ = (yyvsp[0].str_value); free((yyvsp[0].str_value)); } -#line 6711 "parser.cpp" +#line 6774 "parser.cpp" break; - case 353: /* if_not_exists_info: %empty */ -#line 2744 "parser.y" + case 358: /* if_not_exists_info: %empty */ +#line 2776 "parser.y" { (yyval.if_not_exists_info_t) = new infinity::IfNotExistsInfo(); } -#line 6719 "parser.cpp" +#line 6782 "parser.cpp" break; - case 354: /* with_index_param_list: WITH '(' index_param_list ')' */ -#line 2748 "parser.y" + case 359: /* with_index_param_list: WITH '(' index_param_list ')' */ +#line 2780 "parser.y" { (yyval.with_index_param_list_t) = std::move((yyvsp[-1].index_param_list_t)); } -#line 6727 "parser.cpp" +#line 6790 "parser.cpp" break; - case 355: /* with_index_param_list: %empty */ -#line 2751 "parser.y" + case 360: /* with_index_param_list: %empty */ +#line 2783 "parser.y" { (yyval.with_index_param_list_t) = new std::vector(); } -#line 6735 "parser.cpp" +#line 6798 "parser.cpp" break; - case 356: /* optional_table_properties_list: PROPERTIES '(' index_param_list ')' */ -#line 2755 "parser.y" + case 361: /* optional_table_properties_list: PROPERTIES '(' index_param_list ')' */ +#line 2787 "parser.y" { (yyval.with_index_param_list_t) = (yyvsp[-1].index_param_list_t); } -#line 6743 "parser.cpp" +#line 6806 "parser.cpp" break; - case 357: /* optional_table_properties_list: %empty */ -#line 2758 "parser.y" + case 362: /* optional_table_properties_list: %empty */ +#line 2790 "parser.y" { (yyval.with_index_param_list_t) = nullptr; } -#line 6751 "parser.cpp" +#line 6814 "parser.cpp" break; - case 358: /* index_param_list: index_param */ -#line 2762 "parser.y" + case 363: /* index_param_list: index_param */ +#line 2794 "parser.y" { (yyval.index_param_list_t) = new std::vector(); (yyval.index_param_list_t)->push_back((yyvsp[0].index_param_t)); } -#line 6760 "parser.cpp" +#line 6823 "parser.cpp" break; - case 359: /* index_param_list: index_param_list ',' index_param */ -#line 2766 "parser.y" + case 364: /* index_param_list: index_param_list ',' index_param */ +#line 2798 "parser.y" { (yyvsp[-2].index_param_list_t)->push_back((yyvsp[0].index_param_t)); (yyval.index_param_list_t) = (yyvsp[-2].index_param_list_t); } -#line 6769 "parser.cpp" +#line 6832 "parser.cpp" break; - case 360: /* index_param: IDENTIFIER */ -#line 2771 "parser.y" + case 365: /* index_param: IDENTIFIER */ +#line 2803 "parser.y" { (yyval.index_param_t) = new infinity::InitParameter(); (yyval.index_param_t)->param_name_ = (yyvsp[0].str_value); free((yyvsp[0].str_value)); } -#line 6779 "parser.cpp" +#line 6842 "parser.cpp" break; - case 361: /* index_param: IDENTIFIER '=' IDENTIFIER */ -#line 2776 "parser.y" + case 366: /* index_param: IDENTIFIER '=' IDENTIFIER */ +#line 2808 "parser.y" { (yyval.index_param_t) = new infinity::InitParameter(); (yyval.index_param_t)->param_name_ = (yyvsp[-2].str_value); @@ -6788,11 +6851,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.index_param_t)->param_value_ = (yyvsp[0].str_value); free((yyvsp[0].str_value)); } -#line 6792 "parser.cpp" +#line 6855 "parser.cpp" break; - case 362: /* index_param: IDENTIFIER '=' LONG_VALUE */ -#line 2784 "parser.y" + case 367: /* index_param: IDENTIFIER '=' LONG_VALUE */ +#line 2816 "parser.y" { (yyval.index_param_t) = new infinity::InitParameter(); (yyval.index_param_t)->param_name_ = (yyvsp[-2].str_value); @@ -6800,11 +6863,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.index_param_t)->param_value_ = std::to_string((yyvsp[0].long_value)); } -#line 6804 "parser.cpp" +#line 6867 "parser.cpp" break; - case 363: /* index_param: IDENTIFIER '=' DOUBLE_VALUE */ -#line 2791 "parser.y" + case 368: /* index_param: IDENTIFIER '=' DOUBLE_VALUE */ +#line 2823 "parser.y" { (yyval.index_param_t) = new infinity::InitParameter(); (yyval.index_param_t)->param_name_ = (yyvsp[-2].str_value); @@ -6812,11 +6875,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.index_param_t)->param_value_ = std::to_string((yyvsp[0].double_value)); } -#line 6816 "parser.cpp" +#line 6879 "parser.cpp" break; - case 364: /* index_info_list: '(' identifier_array ')' USING IDENTIFIER with_index_param_list */ -#line 2802 "parser.y" + case 369: /* index_info_list: '(' identifier_array ')' USING IDENTIFIER with_index_param_list */ +#line 2834 "parser.y" { ParserHelper::ToLower((yyvsp[-1].str_value)); infinity::IndexType index_type = infinity::IndexType::kInvalid; @@ -6865,11 +6928,11 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[-4].identifier_array_t); } -#line 6869 "parser.cpp" +#line 6932 "parser.cpp" break; - case 365: /* index_info_list: index_info_list '(' identifier_array ')' USING IDENTIFIER with_index_param_list */ -#line 2850 "parser.y" + case 370: /* index_info_list: index_info_list '(' identifier_array ')' USING IDENTIFIER with_index_param_list */ +#line 2882 "parser.y" { ParserHelper::ToLower((yyvsp[-1].str_value)); infinity::IndexType index_type = infinity::IndexType::kInvalid; @@ -6919,11 +6982,11 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[-4].identifier_array_t); } -#line 6923 "parser.cpp" +#line 6986 "parser.cpp" break; - case 366: /* index_info_list: '(' identifier_array ')' */ -#line 2899 "parser.y" + case 371: /* index_info_list: '(' identifier_array ')' */ +#line 2931 "parser.y" { infinity::IndexType index_type = infinity::IndexType::kSecondary; size_t index_count = (yyvsp[-1].identifier_array_t)->size(); @@ -6937,11 +7000,11 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[-1].identifier_array_t); } -#line 6941 "parser.cpp" +#line 7004 "parser.cpp" break; -#line 6945 "parser.cpp" +#line 7008 "parser.cpp" default: break; } @@ -7170,7 +7233,7 @@ YYLTYPE yylloc = yyloc_default; return yyresult; } -#line 2913 "parser.y" +#line 2945 "parser.y" void diff --git a/src/parser/parser.y b/src/parser/parser.y index d49052e2d1..6eabdf4425 100644 --- a/src/parser/parser.y +++ b/src/parser/parser.y @@ -1737,7 +1737,7 @@ command_statement: USE IDENTIFIER { $$->command_info_ = std::make_unique(infinity::SetScope::kSession, infinity::SetVarType::kBool, $3, false); free($3); } -| SET SESSION IDENTIFIER STRING { +| SET SESSION IDENTIFIER IDENTIFIER { ParserHelper::ToLower($3); ParserHelper::ToLower($4); $$ = new infinity::CommandStatement(); @@ -1769,7 +1769,7 @@ command_statement: USE IDENTIFIER { $$->command_info_ = std::make_unique(infinity::SetScope::kGlobal, infinity::SetVarType::kBool, $3, false); free($3); } -| SET GLOBAL IDENTIFIER STRING { +| SET GLOBAL IDENTIFIER IDENTIFIER { ParserHelper::ToLower($3); ParserHelper::ToLower($4); $$ = new infinity::CommandStatement(); @@ -1789,6 +1789,38 @@ command_statement: USE IDENTIFIER { $$->command_info_ = std::make_unique(infinity::SetScope::kGlobal, infinity::SetVarType::kDouble, $3, $4); free($3); } +| SET CONFIG IDENTIFIER ON { + ParserHelper::ToLower($3); + $$ = new infinity::CommandStatement(); + $$->command_info_ = std::make_unique(infinity::SetScope::kConfig, infinity::SetVarType::kBool, $3, true); + free($3); +} +| SET CONFIG IDENTIFIER OFF { + ParserHelper::ToLower($3); + $$ = new infinity::CommandStatement(); + $$->command_info_ = std::make_unique(infinity::SetScope::kConfig, infinity::SetVarType::kBool, $3, false); + free($3); +} +| SET CONFIG IDENTIFIER IDENTIFIER { + ParserHelper::ToLower($3); + ParserHelper::ToLower($4); + $$ = new infinity::CommandStatement(); + $$->command_info_ = std::make_unique(infinity::SetScope::kConfig, infinity::SetVarType::kString, $3, $4); + free($3); + free($4); +} +| SET CONFIG IDENTIFIER LONG_VALUE { + ParserHelper::ToLower($3); + $$ = new infinity::CommandStatement(); + $$->command_info_ = std::make_unique(infinity::SetScope::kConfig, infinity::SetVarType::kInteger, $3, $4); + free($3); +} +| SET CONFIG IDENTIFIER DOUBLE_VALUE { + ParserHelper::ToLower($3); + $$ = new infinity::CommandStatement(); + $$->command_info_ = std::make_unique(infinity::SetScope::kConfig, infinity::SetVarType::kDouble, $3, $4); + free($3); +} | COMPACT TABLE table_name { $$ = new infinity::CommandStatement(); if ($3->schema_name_ptr_ != nullptr) { diff --git a/src/parser/statement/command_statement.h b/src/parser/statement/command_statement.h index e442f04b00..970a742222 100644 --- a/src/parser/statement/command_statement.h +++ b/src/parser/statement/command_statement.h @@ -61,6 +61,7 @@ class UseCmd final : public CommandInfo { enum class SetScope { kSession, kGlobal, + kConfig, kInvalid, }; diff --git a/src/storage/meta/catalog.cpp b/src/storage/meta/catalog.cpp index 9baffcbfc1..bb96d59ecb 100644 --- a/src/storage/meta/catalog.cpp +++ b/src/storage/meta/catalog.cpp @@ -57,6 +57,49 @@ import log_file; namespace infinity { +void ProfileHistory::Resize(SizeT new_size) { + std::unique_lock lk(lock_); + if(new_size == 0) { + deque_.clear(); + return; + } + + if(new_size == max_size_) { + return; + } + + if(new_size < deque_.size()) { + SizeT diff = max_size_ - new_size; + for(SizeT i = 0; i < diff; ++ i) { + deque_.pop_back(); + } + } + + max_size_ = new_size; +} + +QueryProfiler *ProfileHistory::GetElement(SizeT index) { + std::unique_lock lk(lock_); + if (index < 0 || index > max_size_) { + return nullptr; + } + + return deque_[index].get(); +} + +Vector> ProfileHistory::GetElements() { + Vector> elements; + elements.reserve(max_size_); + + std::unique_lock lk(lock_); + for (SizeT i = 0; i < deque_.size(); ++i) { + if (deque_[i].get() != nullptr) { + elements.push_back(deque_[i]); + } + } + return elements; +} + // TODO Consider letting it commit as a transaction. Catalog::Catalog(SharedPtr data_dir) : data_dir_(std::move(data_dir)), catalog_dir_(MakeShared(*data_dir_ + "/" + String(CATALOG_FILE_DIR))), running_(true) { @@ -65,6 +108,7 @@ Catalog::Catalog(SharedPtr data_dir) fs.CreateDirectory(*catalog_dir_); } mem_index_commit_thread_ = Thread([this] { MemIndexCommitLoop(); }); + ResizeProfileHistory(DEFAULT_PROFILER_HISTORY_SIZE); } Catalog::~Catalog() { diff --git a/src/storage/meta/catalog.cppm b/src/storage/meta/catalog.cppm index 49263264e4..68597b5af8 100644 --- a/src/storage/meta/catalog.cppm +++ b/src/storage/meta/catalog.cppm @@ -50,52 +50,36 @@ class TxnManager; class Txn; class ProfileHistory { private: - std::mutex lock_{}; - Vector> queue{}; - SizeT front{}; - SizeT rear{}; - SizeT max_size{}; + mutable std::mutex lock_{}; + Deque> deque_{}; + SizeT max_size_{}; public: explicit ProfileHistory(SizeT size) { - max_size = size + 1; - queue.resize(max_size); - front = 0; - rear = 0; - } - - void Enqueue(SharedPtr &&profiler) { std::unique_lock lk(lock_); - if ((rear + 1) % max_size == front) { - return; - } - queue[rear] = profiler; - rear = (rear + 1) % max_size; + max_size_ = size; } - QueryProfiler *GetElement(SizeT index) { + SizeT HistoryCapacity() const { std::unique_lock lk(lock_); - - // FIXME: Bug, unsigned integer: index will always >= 0 - if (index < 0 || index >= (rear - front + max_size) % max_size) { - return nullptr; - } - SizeT actualIndex = (front + index) % max_size; - return queue[actualIndex].get(); + return max_size_; } - Vector> GetElements() { - Vector> elements; - elements.reserve(max_size); + void Resize(SizeT new_size); + void Enqueue(SharedPtr &&profiler) { std::unique_lock lk(lock_); - for (SizeT i = 0; i < queue.size(); ++i) { - if (queue[i].get() != nullptr) { - elements.push_back(queue[i]); - } + if(deque_.size() >= max_size_) { + deque_.pop_back(); } - return elements; + + deque_.emplace_front(profiler); } + + QueryProfiler *GetElement(SizeT index); + + Vector> GetElements(); + }; class GlobalCatalogDeltaEntry; @@ -258,11 +242,19 @@ private: public: // Profile related methods - void AppendProfilerRecord(SharedPtr profiler) { history.Enqueue(std::move(profiler)); } + void AppendProfileRecord(SharedPtr profiler) { history_.Enqueue(std::move(profiler)); } + + const QueryProfiler *GetProfileRecord(SizeT index) { return history_.GetElement(index); } - const QueryProfiler *GetProfilerRecord(SizeT index) { return history.GetElement(index); } + const Vector> GetProfileRecords() { return history_.GetElements(); } - const Vector> GetProfilerRecords() { return history.GetElements(); } + void ResizeProfileHistory(SizeT new_size) { + history_.Resize(new_size); + } + + SizeT ProfileHistorySize() const { + return history_.HistoryCapacity(); + } public: const SharedPtr &DataDir() const { return data_dir_; } @@ -287,7 +279,7 @@ public: HashMap> function_sets_{}; HashMap> special_functions_{}; - ProfileHistory history{DEFAULT_PROFILER_HISTORY_SIZE}; + ProfileHistory history_{DEFAULT_PROFILER_HISTORY_SIZE}; private: // TODO: remove this std::shared_mutex &rw_locker() { return db_meta_map_.rw_locker_; } diff --git a/src/unit_test/main/infinity.cpp b/src/unit_test/main/infinity.cpp index f2a2463520..f8c7d81787 100644 --- a/src/unit_test/main/infinity.cpp +++ b/src/unit_test/main/infinity.cpp @@ -331,7 +331,7 @@ TEST_F(InfinityTest, test2) { } { - QueryResult result = infinity->ShowVariable("profile_record_capacity", SetScope::kSession); + QueryResult result = infinity->ShowVariable("profile_record_capacity", SetScope::kGlobal); EXPECT_EQ(result.IsOk(), true); }