diff --git a/CMakeLists.txt b/CMakeLists.txt index 861e33f58b..24a65d74a1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,6 +18,7 @@ endif() set(CMAKE_CXX_STANDARD 20) +message(STATUS "CXX: ${CMAKE_CXX_COMPILER}") execute_process(COMMAND ${CMAKE_CXX_COMPILER} --version OUTPUT_VARIABLE clang_full_version_string) string(REGEX REPLACE ".*clang version ([0-9]+\\.[0-9]+).*" "\\1" CLANG_VERSION_STRING ${clang_full_version_string}) if (CLANG_VERSION_STRING VERSION_GREATER 16) @@ -48,7 +49,7 @@ if (CLANG_VERSION_STRING VERSION_GREATER 16) else () - message(FATAL_ERROR "Please use clang version 17.0 and above, current version: ${CLANG_VERSION_STRING}") + message(FATAL_ERROR "Please use clang version 17.0 and above, current version: ${CLANG_VERSION_STRING} ${CMAKE_CXX_COMPILER}") endif () @@ -192,10 +193,10 @@ find_package(Lz4 REQUIRED) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") - -find_package(Python 3.8 - REQUIRED COMPONENTS Interpreter Development.Module - OPTIONAL_COMPONENTS Development.SABIModule) +find_package(Python COMPONENTS Interpreter Development REQUIRED) +#find_package(Python 3.8 +# REQUIRED COMPONENTS Interpreter Development.Module +# OPTIONAL_COMPONENTS Development.SABIModule) if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE) diff --git a/cmake/FindPython.cmake b/cmake/FindPython.cmake new file mode 100644 index 0000000000..3153753a2a --- /dev/null +++ b/cmake/FindPython.cmake @@ -0,0 +1,75 @@ +if(NOT DEFINED Python3_EXECUTABLE) + execute_process( + COMMAND which python3 + RESULT_VARIABLE STATUS + OUTPUT_VARIABLE OUTPUT + ERROR_QUIET) + if(STATUS EQUAL 0) + string(STRIP ${OUTPUT} STRIPPED) + message(STATUS "Using Python3 from 'which python3': ${STRIPPED}") + set(Python3_EXECUTABLE ${STRIPPED}) + endif() +endif() + +set (Python3_USE_STATIC_LIBS "ON") +find_package(Python3 COMPONENTS Interpreter Development REQUIRED) +message(STATUS "Python3 specified. Version found: " ${Python3_VERSION}) +set(Python_EXECUTABLE ${Python3_EXECUTABLE}) +message(STATUS "Using Python executable: " ${Python_EXECUTABLE}) + +find_package(Python3 COMPONENTS Development Module) +if(Python3_Development_FOUND AND Python3_INCLUDE_DIRS) + set(Python_INCLUDE_DIRS ${Python3_INCLUDE_DIRS}) +endif() + +if(NOT Python_INCLUDE_DIRS) + message(STATUS "Getting python include directory from sysconfig..") + execute_process( + COMMAND ${Python_EXECUTABLE} -c "import sysconfig; print(sysconfig.get_paths()['include'])" + OUTPUT_VARIABLE Python_INCLUDE_DIRS RESULT_VARIABLE ret_code) + string(STRIP "${Python_INCLUDE_DIRS}" Python_INCLUDE_DIRS) + if((NOT (ret_code EQUAL "0")) OR (NOT IS_DIRECTORY ${Python_INCLUDE_DIRS}) + OR (NOT EXISTS ${Python_INCLUDE_DIRS}/Python.h)) + set(Python_INCLUDE_DIRS "") + endif() +endif() + +if(NOT Python_INCLUDE_DIRS) + message(FATAL_ERROR "Cannot find python include directory") +endif() + +message(STATUS "Found python include directory ${Python_INCLUDE_DIRS}") + +if(NOT Python3_LIBRARIES) + message(STATUS "Getting python library from sysconfig..") + execute_process( + COMMAND ${Python_EXECUTABLE} -c + " + import sysconfig + import os + import platform + import sys + vars = sysconfig.get_config_vars() + if platform.system() == 'Windows': + libpython_suffix = 'dll' + else: + libpython_suffix = 'a' + python_version = f'python{sys.version_info.major}.{sys.version_info.minor}' + libpython_name = f'lib{python_version}.{libpython_suffix}' + base_dir = sysconfig.get_config_var('base') + platform_dir = f'config-{sys.version_info.major}.{sys.version_info.minor}-{platform.machine()}-linux-gnu' + libpython_path = os.path.join(base_dir, 'lib', python_version, platform_dir, libpython_name) + print(libpython_path)) + " + OUTPUT_VARIABLE Python3_LIBRARIES RESULT_VARIABLE ret_code) + string(STRIP "${Python3_LIBRARIES}" Python3_LIBRARIES) + if((NOT (ret_code EQUAL "0")) OR (NOT ${Python3_LIBRARIES})) + set(Python_INCLUDE_DIRS "") + endif() +endif() + +if(NOT Python3_LIBRARIES) + message(FATAL_ERROR "Cannot find python static library") +endif() + +message(STATUS "Found python static library ${Python3_LIBRARIES}") \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2da381201d..c5b9197c95 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -2,6 +2,8 @@ set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_SCAN_FOR_MODULES ON) +#find_package(Python) + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/bin/compilation_config.cppm.in ${CMAKE_CURRENT_SOURCE_DIR}/bin/compilation_config.cppm) ### Parser @@ -218,7 +220,7 @@ target_sources(infinity_core ) add_dependencies(infinity_core thrift thriftnb parquet_static snappy) - +target_include_directories(infinity_core PUBLIC ${Python3_INCLUDE_DIRS}) target_include_directories(infinity_core PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") target_include_directories(infinity_core PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/parser") target_include_directories(infinity_core PUBLIC "${CMAKE_SOURCE_DIR}/third_party/spdlog/include") @@ -492,9 +494,14 @@ target_link_libraries(unit_test thrift.a thriftnb.a snappy.a + ${Python3_LIBRARIES} + z.a + expat.a ${JEMALLOC_STATIC_LIB} + util ) +target_link_options(unit_test PRIVATE -no-pie) target_link_directories(unit_test PUBLIC "${CMAKE_BINARY_DIR}/lib") target_link_directories(unit_test PUBLIC "${CMAKE_BINARY_DIR}/third_party/arrow/") target_link_directories(unit_test PUBLIC "${CMAKE_BINARY_DIR}/third_party/snappy/") diff --git a/src/common/analyzer/analyzer_pool.cpp b/src/common/analyzer/analyzer_pool.cpp index 37f55dde29..23a878013f 100644 --- a/src/common/analyzer/analyzer_pool.cpp +++ b/src/common/analyzer/analyzer_pool.cpp @@ -149,6 +149,9 @@ Tuple, Status> AnalyzerPool::GetAnalyzer(const std::string_v return {MakeUnique(ngram), Status::OK()}; } default: { + if(std::filesystem::is_regular_file(name)) { + // Suppose it is a customized Python script analyzer + } return {nullptr, Status::AnalyzerNotFound(name.data())}; } } diff --git a/src/common/analyzer/user_defined_analyzer.cpp b/src/common/analyzer/user_defined_analyzer.cpp new file mode 100644 index 0000000000..210c29395b --- /dev/null +++ b/src/common/analyzer/user_defined_analyzer.cpp @@ -0,0 +1,134 @@ +// Copyright(C) 2024 InfiniFlow, Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +module; + +#include "Python.h" + +module user_defined_analyzer; + +import stl; +import term; +import stemmer; +import analyzer; +import tokenizer; +import status; +import third_party; + +namespace infinity { + +Status UserDefinedAnalyzer::Init() { + locker_.lock(); + // gil_state_ = PyGILState_Ensure(); + + if (!Py_IsInitialized()) { + Py_Initialize(); + } + +// if (!Py_IsInitialized()) { +// return Status::FailToRunPython("Fail to init Python"); +// } +// +// if (!PyEval_ThreadsInitialized()) { +// // Start multiple thread supports +// PyEval_InitThreads(); +// PyEval_SaveThread(); +// } + +// if (!PyGILState_Check()) { +// gil_state_ = PyGILState_Ensure(); +// } + + std::filesystem::path path = analyzer_path_; + + if (!std::filesystem::exists(path)) { + return Status::FailToRunPython(fmt::format("{} doesn't exist!", analyzer_path_)); + } + + String file_dir = path.parent_path(); + String file_name = path.filename(); + // Set module directory + PyRun_SimpleString("import sys"); + String import_str = fmt::format("sys.path.append('{}')", file_dir); + PyRun_SimpleString(import_str.c_str()); + + // Import the module + std::filesystem::path filePath(file_name); + String main_filename = filePath.stem().string(); + module_ = PyImport_ImportModule(main_filename.c_str()); + if (module_ == nullptr) { + return Status::FailToRunPython(fmt::format("Fail to load python module: {}", main_filename)); + } + + // Load function: analyze + function_ = PyObject_GetAttrString(module_, "analyze"); + if (function_ == nullptr || !PyCallable_Check(function_)) { + return Status::FailToRunPython(fmt::format("Can't to load function: analyze")); + } + + return Status::OK(); +} + +void UserDefinedAnalyzer::UnInit() { + if (function_ != nullptr) { + Py_DECREF(function_); + function_ = nullptr; + } + + if (module_ != nullptr) { + Py_DECREF(module_); + module_ = nullptr; + } + + // if (Py_IsInitialized()) { + // Py_FinalizeEx(); + // } + +// if (PyGILState_Check()) { +// PyGILState_Release(gil_state_); +// } + locker_.unlock(); +} + +Tuple, Status> UserDefinedAnalyzer::Analyze(const String &text) { + Vector return_list; + + PyObject *args = Py_BuildValue("(s)", text.c_str()); + PyObject *result = PyObject_CallObject(function_, args); + + if (result == nullptr || !PyList_Check(result)) { + return {return_list, Status::FailToRunPython(fmt::format("Failed to use {} to parse: {}", analyzer_path_, text))}; + } + + PyObject *python_list = nullptr; + SizeT len = PyList_GET_SIZE(result); + return_list.reserve(len); + for (SizeT i = 0; i < len; ++i) { + python_list = PyList_GetItem(result, i); + + char *result_ptr{nullptr}; + PyArg_Parse(python_list, "s", &result_ptr); + return_list.push_back(result_ptr); + +// Py_DECREF(python_list); +// python_list = nullptr; + } + + Py_DECREF(args); + Py_DECREF(result); + + return {return_list, Status::OK()}; +} + +} // namespace infinity \ No newline at end of file diff --git a/src/common/analyzer/user_defined_analyzer.cppm b/src/common/analyzer/user_defined_analyzer.cppm new file mode 100644 index 0000000000..ba3d481893 --- /dev/null +++ b/src/common/analyzer/user_defined_analyzer.cppm @@ -0,0 +1,51 @@ +// Copyright(C) 2024 InfiniFlow, Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +module; + +#include "Python.h" + +export module user_defined_analyzer; + +import stl; +import term; +import stemmer; +import analyzer; +import tokenizer; +import third_party; +import status; + +namespace infinity { +export class UserDefinedAnalyzer : public Analyzer { +public: + UserDefinedAnalyzer(const String &analyzer_path) : analyzer_path_(analyzer_path) {} + + ~UserDefinedAnalyzer() = default; + + Status Init(); + void UnInit(); + + Tuple, Status> Analyze(const String &text); + +protected: +private: + const String analyzer_path_; + + PyGILState_STATE gil_state_; + std::mutex locker_; + + PyObject *module_{}; + PyObject *function_{}; +}; +} // namespace infinity diff --git a/src/common/analyzer/user_defined_term_weight.cpp b/src/common/analyzer/user_defined_term_weight.cpp new file mode 100644 index 0000000000..61bc42c45f --- /dev/null +++ b/src/common/analyzer/user_defined_term_weight.cpp @@ -0,0 +1,136 @@ +// Copyright(C) 2024 InfiniFlow, Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +module; + +#include "Python.h" +#include + +module user_defined_term_weight; + +import stl; +import term; +import stemmer; +import analyzer; +import tokenizer; +import status; +import third_party; + +namespace infinity { + +Status UserDefinedTermWeight::Init() { + locker_.lock(); + // gil_state_ = PyGILState_Ensure(); + + if (!Py_IsInitialized()) { + Py_Initialize(); + } + +// if (!Py_IsInitialized()) { +// return Status::FailToRunPython("Fail to init Python"); +// } +// +// if (!PyEval_ThreadsInitialized()) { +// // Start multiple thread supports +// PyEval_InitThreads(); +// PyEval_SaveThread(); +// } + +// if (!PyGILState_Check()) { +// gil_state_ = PyGILState_Ensure(); +// } + + std::filesystem::path path = tw_path_; + + if (!std::filesystem::exists(path)) { + return Status::FailToRunPython(fmt::format("{} doesn't exist!", tw_path_)); + } + + String file_dir = path.parent_path(); + String file_name = path.filename(); + // Set module directory + PyRun_SimpleString("import sys"); + String import_str = fmt::format("sys.path.append('{}')", file_dir); + PyRun_SimpleString(import_str.c_str()); + + // Import the module + std::filesystem::path filePath(file_name); + String main_filename = filePath.stem().string(); + module_ = PyImport_ImportModule(main_filename.c_str()); + if (module_ == nullptr) { + return Status::FailToRunPython(fmt::format("Fail to load python module: {}", main_filename)); + } + + // Load function: analyze + function_ = PyObject_GetAttrString(module_, "term_weight"); + if (function_ == nullptr || !PyCallable_Check(function_)) { + return Status::FailToRunPython(fmt::format("Can't to load function: analyze")); + } + + return Status::OK(); +} + +void UserDefinedTermWeight::UnInit() { + if (function_ != nullptr) { + Py_DECREF(function_); + function_ = nullptr; + } + + if (module_ != nullptr) { + Py_DECREF(module_); + module_ = nullptr; + } + + // if (Py_IsInitialized()) { + // Py_FinalizeEx(); + // } + +// if (PyGILState_Check()) { +// PyGILState_Release(gil_state_); +// } + locker_.unlock(); +} + +Tuple, Status> UserDefinedTermWeight::Run(const Vector &text_array) { + HashMap return_map; + + PyObject* pyParams = PyList_New(0); + for(const String& text: text_array) { + PyList_Append(pyParams, Py_BuildValue("s", text.c_str())); + } + + PyObject* args = PyTuple_Pack(1, pyParams); + PyObject* dict_result = PyObject_CallObject(function_, args); + + if (dict_result == nullptr || !PyDict_Check(dict_result)) { + return {return_map, Status::FailToRunPython(fmt::format("Failed to use {} to parse text array", tw_path_))}; + } + + PyObject* pItems = PyDict_Items(dict_result); + for (Py_ssize_t i = 0; i < PyList_Size(pItems); ++i) { + PyObject* pItem = PyList_GetItem(pItems, i); + PyObject* pKey = PyTuple_GetItem(pItem, 0); + PyObject* pValue = PyTuple_GetItem(pItem, 1); + + return_map.emplace(PyUnicode_AsUTF8(pKey), PyFloat_AsDouble(pValue)); + } + Py_DECREF(pItems); + Py_DECREF(dict_result); + Py_XDECREF(args); + Py_DECREF(pyParams); + + return {return_map, Status::OK()}; +} + +} // namespace infinity \ No newline at end of file diff --git a/src/common/analyzer/user_defined_term_weight.cppm b/src/common/analyzer/user_defined_term_weight.cppm new file mode 100644 index 0000000000..9086965edc --- /dev/null +++ b/src/common/analyzer/user_defined_term_weight.cppm @@ -0,0 +1,51 @@ +// Copyright(C) 2024 InfiniFlow, Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +module; + +#include "Python.h" + +export module user_defined_term_weight; + +import stl; +import term; +import stemmer; +import analyzer; +import tokenizer; +import third_party; +import status; + +namespace infinity { +export class UserDefinedTermWeight { +public: + UserDefinedTermWeight(const String &tw_path) : tw_path_(tw_path) {} + + ~UserDefinedTermWeight() = default; + + Status Init(); + void UnInit(); + + Tuple, Status> Run(const Vector &text); + +protected: +private: + const String tw_path_; + + PyGILState_STATE gil_state_; + std::mutex locker_; + + PyObject *module_{}; + PyObject *function_{}; +}; +} // namespace infinity diff --git a/src/common/status.cpp b/src/common/status.cpp index 45238348eb..a44cd4352a 100644 --- a/src/common/status.cpp +++ b/src/common/status.cpp @@ -532,6 +532,10 @@ Status Status::InvalidFileFlag(u8 flag) { return Status(ErrorCode::kInvalidFileFlag, MakeUnique(fmt::format("Invalid open file flag: {}", flag))); } +Status Status::FailToRunPython(const String& reason) { + return Status(ErrorCode::kFailToRunPython, MakeUnique(reason)); +} + Status Status::ColumnCountMismatch(const String &detailed_info) { return Status(ErrorCode::kColumnCountMismatch, MakeUnique(fmt::format("Column count mismatch: {}", detailed_info))); } diff --git a/src/common/status.cppm b/src/common/status.cppm index d3ea28cc5f..9274a774f5 100644 --- a/src/common/status.cppm +++ b/src/common/status.cppm @@ -166,6 +166,7 @@ export enum class ErrorCode : long { kMunmapFileError = 7014, kInvalidFileFlag = 7015, kInvalidServerAddress = 7016, + kFailToRunPython = 7017, // 8. meta error kInvalidEntry = 8001, @@ -317,6 +318,7 @@ public: static Status MmapFileError(const String &detailed_info); static Status MunmapFileError(const String &detailed_info); static Status InvalidFileFlag(u8 flag); + static Status FailToRunPython(const String& reason); // meta static Status InvalidEntry(); diff --git a/src/common/stl.cppm b/src/common/stl.cppm index f6d1f1f947..51944a320b 100644 --- a/src/common/stl.cppm +++ b/src/common/stl.cppm @@ -221,6 +221,7 @@ export namespace std { using std::filesystem::path; using std::filesystem::remove; using std::filesystem::remove_all; + using std::filesystem::is_regular_file; } namespace this_thread { diff --git a/src/common/third_party.cppm b/src/common/third_party.cppm index 1699609908..f5344b052c 100644 --- a/src/common/third_party.cppm +++ b/src/common/third_party.cppm @@ -66,6 +66,7 @@ module; #include #include #include "arrow/array/builder_primitive.h" +#include "Python.h" #pragma clang diagnostic pop @@ -298,4 +299,7 @@ export using WebEnvironment = oatpp::base::Environment; export using WebAddress = oatpp::network::Address; export using HTTPStatus = oatpp::web::protocol::http::Status; +// Python +export using PyObject = PyObject; + } // namespace infinity diff --git a/src/executor/operator/physical_index_scan.cpp b/src/executor/operator/physical_index_scan.cpp index 428f88efda..dc5905991c 100644 --- a/src/executor/operator/physical_index_scan.cpp +++ b/src/executor/operator/physical_index_scan.cpp @@ -660,7 +660,7 @@ std::variant, Bitmask> SolveSecondaryIndexFilter(const Vector, Bitmask>(std::in_place_type); auto &bitmask = std::get(res); - bitmask.Initialize(DEFAULT_SEGMENT_CAPACITY); + bitmask.Initialize(std::bit_ceil(DEFAULT_SEGMENT_CAPACITY)); return res; } auto result = diff --git a/src/executor/operator/physical_scan/physical_knn_scan.cpp b/src/executor/operator/physical_scan/physical_knn_scan.cpp index 3b272bd682..3f48df62b6 100644 --- a/src/executor/operator/physical_scan/physical_knn_scan.cpp +++ b/src/executor/operator/physical_scan/physical_knn_scan.cpp @@ -566,7 +566,7 @@ void PhysicalKnnScan::ExecuteInternalByColumnDataTypeAndQueryDataType(QueryConte const std::variant, Bitmask> &filter_result = it->second; if (std::holds_alternative>(filter_result)) { const Vector &filter_result_vector = std::get>(filter_result); - bitmask.Initialize(std::ceil(segment_row_count)); + bitmask.Initialize(std::bit_ceil(segment_row_count)); bitmask.SetAllFalse(); for (u32 row_id : filter_result_vector) { bitmask.SetTrue(row_id); diff --git a/src/executor/operator/physical_scan/physical_match_sparse_scan.cpp b/src/executor/operator/physical_scan/physical_match_sparse_scan.cpp index 58f719f89b..014574c3aa 100644 --- a/src/executor/operator/physical_scan/physical_match_sparse_scan.cpp +++ b/src/executor/operator/physical_scan/physical_match_sparse_scan.cpp @@ -450,7 +450,7 @@ void PhysicalMatchSparseScan::ExecuteInnerT(DistFunc *dist_func, const std::variant, Bitmask> &filter_result = it->second; if (std::holds_alternative>(filter_result)) { const Vector &filter_result_vector = std::get>(filter_result); - bitmask.Initialize(std::ceil(segment_row_count)); + bitmask.Initialize(std::bit_ceil(segment_row_count)); bitmask.SetAllFalse(); for (u32 row_id : filter_result_vector) { bitmask.SetTrue(row_id); diff --git a/src/executor/operator/physical_scan/physical_match_tensor_scan.cpp b/src/executor/operator/physical_scan/physical_match_tensor_scan.cpp index f1a09f38e4..4fe451d054 100644 --- a/src/executor/operator/physical_scan/physical_match_tensor_scan.cpp +++ b/src/executor/operator/physical_scan/physical_match_tensor_scan.cpp @@ -271,7 +271,7 @@ void PhysicalMatchTensorScan::ExecuteInner(QueryContext *query_context, MatchTen const std::variant, Bitmask> &filter_result = it->second; if (std::holds_alternative>(filter_result)) { const Vector &filter_result_vector = std::get>(filter_result); - segment_bitmask.Initialize(std::ceil(segment_row_count)); + segment_bitmask.Initialize(std::bit_ceil(segment_row_count)); segment_bitmask.SetAllFalse(); for (u32 row_id : filter_result_vector) { segment_bitmask.SetTrue(row_id); diff --git a/src/parser/parser.cpp b/src/parser/parser.cpp index ca4831159b..48075101bd 100644 --- a/src/parser/parser.cpp +++ b/src/parser/parser.cpp @@ -774,16 +774,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 99 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1318 +#define YYLAST 1321 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 210 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 114 /* YYNRULES -- Number of rules. */ -#define YYNRULES 491 +#define YYNRULES 492 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 1078 +#define YYNSTATES 1079 /* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 448 @@ -899,8 +899,8 @@ static const yytype_int16 yyrline[] = 3265, 3270, 3276, 3282, 3288, 3294, 3300, 3306, 3312, 3318, 3324, 3330, 3336, 3347, 3351, 3356, 3386, 3396, 3401, 3406, 3411, 3417, 3421, 3422, 3424, 3425, 3427, 3428, 3440, 3448, - 3452, 3455, 3459, 3462, 3466, 3470, 3475, 3481, 3491, 3499, - 3510, 3541 + 3452, 3455, 3459, 3462, 3466, 3470, 3475, 3481, 3491, 3501, + 3509, 3520, 3551 }; #endif @@ -1003,114 +1003,114 @@ yysymbol_name (yysymbol_kind_t yysymbol) STATE-NUM. */ static const yytype_int16 yypact[] = { - 49, 251, 95, 366, 132, 1, 132, 177, 447, 604, - 114, 306, 150, 166, 210, 36, 173, -2, 238, 79, - -533, -533, -533, -533, -533, -533, -533, -533, 312, -533, - -533, 282, -533, -533, -533, -533, -533, -533, 222, 222, - 222, 222, 62, 132, 239, 239, 239, 239, 239, 78, - 301, 132, 29, 350, 367, 373, -533, -533, -533, -533, - -533, -533, -533, 703, 388, 132, -533, -533, -533, -533, - -533, 387, -533, 76, 98, -533, 400, -533, 233, -533, - -533, 291, -533, 323, -88, 132, -533, -533, -533, -533, - -18, -533, 382, 280, -533, 472, 126, 300, 314, -533, - 26, -533, 502, -533, -533, 6, 458, -533, 469, 470, - 557, 132, 132, 132, 569, 486, 362, 506, 583, 132, - 132, 132, 600, 607, 611, 540, 617, 617, 418, 77, - 81, 85, -533, -533, -533, -533, -533, -533, -533, 312, - -533, -533, -533, -533, -533, -533, 274, -533, -533, 623, - -533, 625, -533, -533, 626, 631, -533, -533, -533, -533, - -533, 132, 438, 210, 617, 637, -533, -533, 638, -533, - -533, -533, -533, 6, -533, -533, -533, 418, 595, 582, - 577, -533, -9, -533, 362, -533, 132, 657, 58, -533, - -533, -533, -533, -533, 599, -533, 471, -1, -533, 418, - -533, -533, 586, 587, 460, -533, -533, 758, 543, 467, - 468, 270, 670, 671, 672, 677, -533, -533, 676, 482, - 255, 484, 485, 503, 503, -533, 13, 395, -86, -533, - -7, 683, -533, -533, -533, -533, -533, -533, -533, -533, - -533, -533, -533, -533, -533, 487, -533, -533, -533, -103, - -533, -533, 28, -533, 91, -533, -533, -533, 102, -533, - 121, -533, -533, -533, -533, -533, -533, -533, -533, -533, - -533, -533, -533, -533, -533, -533, -533, 687, 685, -533, - -533, -533, -533, -533, -533, -533, 612, 282, -533, -533, - 88, 688, 491, 492, -62, 418, 418, 624, -533, -2, - 40, 641, 499, -533, 60, 500, -533, 132, 418, 611, - -533, 152, 504, 505, 153, -533, -533, -533, -533, -533, - -533, -533, -533, -533, -533, -533, -533, 503, 507, 717, - 640, 418, 418, 72, 305, -533, -533, -533, -533, 758, - -533, 702, 514, 517, 518, 520, 727, 728, 424, 424, - -533, 524, -533, -533, -533, -533, 529, -34, 656, 418, - 733, 418, 418, -20, 534, -4, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 20, -533, 537, -533, 737, -533, 738, -533, 740, -533, - 743, 704, 371, 545, -533, 546, 746, -533, 69, -533, - -533, 10, 574, 551, -533, 186, 152, 418, -533, 312, - 829, 632, 559, 139, -533, -533, -533, -2, 768, -533, - -533, 769, 418, 565, -533, 152, -533, 196, 196, 418, - -533, 156, 640, 620, 573, -3, 108, 340, -533, 418, - 418, 706, 418, 778, 22, 418, 161, 253, 490, -533, - -533, 617, -533, -533, -533, 634, 581, 503, 395, 658, - -533, 662, 662, 187, 187, 693, 662, 662, 187, 187, - 424, 424, -533, -533, -533, -533, -533, -533, 588, -533, - 589, -533, -533, -533, 784, 787, -533, 793, -533, -533, - 801, -533, -2, 601, 352, -533, 74, -533, 273, 540, - 418, -533, -533, -533, 152, -533, -533, -533, -533, -533, - -533, -533, -533, -533, -533, -533, 613, -533, -533, -533, - -533, -533, -533, -533, -533, -533, -533, -533, -533, 614, - 616, 618, 619, 622, 627, 237, 633, 657, 780, 40, - 312, 636, -533, 254, 635, 810, 815, 820, 824, -533, - 822, 268, -533, 272, 284, -533, 643, -533, 829, 418, - -533, 418, -12, 115, 503, -44, 621, -533, -8, -42, - -533, 826, -533, 834, -533, -533, 766, 395, 662, 646, - 319, -533, 503, 846, 848, 802, 804, 678, 327, -533, - 858, 46, 10, 806, -533, -533, -533, -533, -533, -533, - 811, -533, 870, -533, -533, -533, -533, -533, -533, -533, - -533, 667, 831, -533, 880, 342, 464, 563, 865, 882, - 899, 745, 779, -533, -533, 167, -533, 776, 657, 328, - 732, -533, -533, 782, -533, 418, -533, -533, -533, -533, - -533, -533, 196, -533, -533, -533, 705, 152, 0, -533, - 418, 605, 741, 940, 537, 748, 742, 756, 747, 757, - 329, -533, -533, 717, 959, 960, 425, -533, 793, 202, - 74, 352, 10, 10, 763, 273, 913, 922, 334, 761, - 771, 774, 775, 777, 788, 791, 792, 794, 891, 799, - 800, 803, 805, 807, 808, 809, 813, 814, 816, 902, - 817, 818, 819, 821, 823, 825, 827, 828, 830, 832, - 908, 833, 835, 836, 837, 838, 839, 840, 841, 842, - 843, 916, 844, 845, 847, 849, 850, 851, 852, 853, - 854, 855, 917, 856, 857, 859, 860, 861, 862, 863, - 864, 866, 867, 919, 868, -533, -533, 89, -533, -533, - -533, 335, -533, 793, 1011, 359, -533, -533, -533, 152, - -533, 495, 869, 360, 871, 15, 872, -533, -533, -533, - -533, -533, 196, -533, -533, -533, -533, -533, -533, -533, - -533, 1012, -533, -533, -533, 955, 657, -533, 418, 418, - -533, -533, 1017, 1022, 1024, 1026, 1028, 1031, 1033, 1036, - 1048, 1050, 873, 1060, 1067, 1072, 1076, 1077, 1078, 1079, - 1080, 1081, 1082, 881, 1084, 1085, 1086, 1087, 1088, 1089, - 1090, 1091, 1092, 1093, 892, 1095, 1096, 1097, 1098, 1099, - 1100, 1101, 1102, 1103, 1104, 903, 1106, 1107, 1108, 1109, - 1110, 1111, 1112, 1113, 1114, 1115, 914, 1117, 1118, 1119, - 1120, 1121, 1122, 1123, 1124, 1125, 1126, 925, 1128, -533, - -533, 368, 612, -533, -533, 1131, -533, 1132, 1133, 1134, - 375, 1135, 418, 376, 931, 152, 935, 937, 938, 939, - 941, 942, 943, 944, 945, 946, 1139, 947, 948, 949, - 950, 951, 952, 953, 954, 956, 957, 1154, 958, 961, - 962, 963, 964, 965, 966, 967, 968, 969, 1158, 970, - 971, 972, 973, 974, 975, 976, 977, 978, 979, 1159, - 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, - 1189, 991, 992, 993, 994, 995, 996, 997, 998, 999, - 1000, 1200, 1002, -533, -533, 1001, 1003, 1004, 383, -533, - 276, 152, -533, -533, -533, -533, -533, -533, -533, -533, - -533, -533, -533, 1005, -533, -533, -533, -533, -533, -533, - -533, -533, -533, -533, 1006, -533, -533, -533, -533, -533, - -533, -533, -533, -533, -533, 1008, -533, -533, -533, -533, - -533, -533, -533, -533, -533, -533, 1009, -533, -533, -533, - -533, -533, -533, -533, -533, -533, -533, 1010, -533, -533, - -533, -533, -533, -533, -533, -533, -533, -533, 1013, -533, - 1212, -533, 1213, 612, 1214, 1215, 1216, -533, -533, -533, - -533, -533, -533, -533, -533, -533, 396, 1015, -533, 1014, - 1218, 547, 612, 1219, 1222, 1023, -46, 584, 1221, -533, - -533, 1025, -533, -533, 1187, 1190, -533, 1225, -533, 1182, - 23, -533, 1030, -533, -533, 1193, 1194, -533, 1234, -533, - 1034, 1035, 1236, 612, 1037, -533, 612, -533 + 65, 339, 109, 433, 82, 21, 82, 129, 519, 590, + 88, 240, 210, 214, 225, 75, 236, -9, 267, 97, + -533, -533, -533, -533, -533, -533, -533, -533, 83, -533, + -533, 282, -533, -533, -533, -533, -533, -533, 228, 228, + 228, 228, 87, 82, 244, 244, 244, 244, 244, 116, + 318, 82, -12, 341, 356, 361, -533, -533, -533, -533, + -533, -533, -533, 266, 380, 82, -533, -533, -533, -533, + -533, 372, -533, 163, 353, -533, 387, -533, 230, -533, + -533, 239, -533, 375, 67, 82, -533, -533, -533, -533, + -18, -533, 355, 219, -533, 416, -64, 226, 241, -533, + 26, -533, 415, -533, -533, 6, 390, -533, 392, 384, + 466, 82, 82, 82, 473, 423, 293, 426, 506, 82, + 82, 82, 513, 515, 528, 475, 546, 546, 444, 95, + 105, 132, -533, -533, -533, -533, -533, -533, -533, 83, + -533, -533, -533, -533, -533, -533, 447, -533, -533, 567, + -533, 578, -533, -533, 577, 585, -533, -533, -533, -533, + -533, 82, 403, 225, 546, 615, -533, -533, 617, -533, + -533, -533, -533, 6, -533, -533, -533, 444, 570, 559, + 562, -533, -13, -533, 293, -533, 82, 650, 39, -533, + -533, -533, -533, -533, 576, -533, 451, -11, -533, 444, + -533, -533, 582, 588, 474, -533, -533, 834, 529, 493, + 495, 369, 696, 697, 698, 699, -533, -533, 700, 500, + 188, 501, 503, 231, 231, -533, 13, 404, -62, -533, + -7, 541, -533, -533, -533, -533, -533, -533, -533, -533, + -533, -533, -533, -533, -533, 502, -533, -533, -533, -140, + -533, -533, 50, -533, 52, -533, -533, -533, 60, -533, + 113, -533, -533, -533, -533, -533, -533, -533, -533, -533, + -533, -533, -533, -533, -533, -533, -533, 707, 717, -533, + -533, -533, -533, -533, -533, -533, 644, 282, -533, -533, + 177, 723, 525, 527, -44, 444, 444, 663, -533, -9, + 59, 686, 540, -533, 66, 542, -533, 82, 444, 528, + -533, 172, 543, 544, 221, -533, -533, -533, -533, -533, + -533, -533, -533, -533, -533, -533, -533, 231, 545, 647, + 665, 444, 444, 111, 297, -533, -533, -533, -533, 834, + -533, 750, 553, 554, 555, 560, 764, 766, 450, 450, + -533, 565, -533, -533, -533, -533, 558, -61, 692, 444, + 772, 444, 444, -29, 572, 9, 231, 231, 231, 231, + 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, + 22, -533, 580, -533, 774, -533, 777, -533, 778, -533, + 773, 739, 488, 586, -533, 587, 787, -533, 41, -533, + -533, 10, 616, 592, -533, 77, 172, 444, -533, 83, + 759, 672, 598, 76, -533, -533, -533, -9, 800, -533, + -533, 802, 444, 599, -533, 172, -533, 85, 85, 444, + -533, 133, 665, 649, 603, 3, -24, 352, -533, 444, + 444, 736, 444, 811, 24, 444, 153, 171, 593, -533, + -533, 546, -533, -533, -533, 664, 618, 231, 404, 688, + -533, 460, 460, 196, 196, 637, 460, 460, 196, 196, + 450, 450, -533, -533, -533, -533, -533, -533, 611, -533, + 612, -533, -533, -533, 820, 821, -533, 825, -533, -533, + 823, -533, -9, 622, 621, -533, 84, -533, 272, 475, + 444, -533, -533, -533, 172, -533, -533, -533, -533, -533, + -533, -533, -533, -533, -533, -533, 636, -533, -533, -533, + -533, -533, -533, -533, -533, -533, -533, -533, -533, 662, + 669, 670, 673, 676, 677, 223, 687, 650, 848, 59, + 83, 690, -533, 180, 693, 886, 890, 894, 896, -533, + 902, 209, -533, 216, 235, -533, 704, -533, 759, 444, + -533, 444, 44, 16, 231, -72, 705, -533, -1, 49, + -533, 908, -533, 910, -533, -533, 835, 404, 460, 720, + 273, -533, 231, 920, 924, 877, 881, 738, 277, -533, + 936, 34, 10, 884, -533, -533, -533, -533, -533, -533, + 887, -533, 944, -533, -533, -533, -533, -533, -533, -533, + -533, 740, 895, -533, 953, 718, 795, 812, 829, 846, + 863, 832, 831, -533, -533, 212, -533, 833, 650, 278, + 760, -533, -533, 801, -533, 444, -533, -533, -533, -533, + -533, -533, 85, -533, -533, -533, 780, 172, 165, -533, + 444, 520, 781, 982, 580, 785, 783, 784, 786, 788, + 305, -533, -533, 647, 985, 986, 462, -533, 825, 320, + 84, 621, 10, 10, 790, 272, 940, 941, 309, 791, + 792, 793, 794, 796, 797, 798, 799, 803, 903, 804, + 805, 806, 807, 808, 809, 810, 813, 814, 815, 905, + 816, 817, 818, 819, 822, 824, 826, 827, 828, 830, + 915, 836, 837, 838, 839, 840, 841, 842, 843, 844, + 845, 916, 847, 849, 850, 851, 852, 853, 854, 855, + 856, 857, 917, 858, 859, 860, 861, 862, 864, 865, + 866, 867, 868, 926, 869, -533, -533, 18, -533, -533, + -533, 336, -533, 825, 1000, 364, -533, -533, -533, 172, + -533, 661, 870, 377, 871, 15, 872, -533, -533, -533, + -533, -533, 85, -533, -533, -533, -533, -533, -533, -533, + -533, -533, 1014, -533, -533, -533, 964, 650, -533, 444, + 444, -533, -533, 1023, 1025, 1027, 1031, 1033, 1034, 1035, + 1036, 1037, 1048, 873, 1050, 1065, 1076, 1077, 1078, 1079, + 1080, 1081, 1082, 1083, 882, 1085, 1086, 1087, 1088, 1089, + 1090, 1091, 1092, 1093, 1094, 893, 1096, 1097, 1098, 1099, + 1100, 1101, 1102, 1103, 1104, 1105, 904, 1107, 1108, 1109, + 1110, 1111, 1112, 1113, 1114, 1115, 1116, 918, 1117, 1118, + 1119, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 927, 1128, + -533, -533, 382, 644, -533, -533, 1132, -533, 1133, 1134, + 1135, 388, 1136, 444, 389, 932, 172, 938, 939, 942, + 943, 945, 946, 947, 948, 949, 950, 1139, 951, 952, + 954, 955, 956, 957, 958, 959, 960, 961, 1140, 962, + 963, 965, 966, 967, 968, 969, 970, 971, 972, 1143, + 973, 974, 975, 976, 977, 978, 979, 980, 981, 983, + 1152, 984, 987, 988, 989, 990, 991, 992, 993, 994, + 995, 1163, 996, 997, 998, 999, 1001, 1002, 1003, 1004, + 1005, 1006, 1181, 1007, -533, -533, 933, 1008, 1009, 422, + -533, 449, 172, -533, -533, -533, -533, -533, -533, -533, + -533, -533, -533, -533, 1010, -533, -533, -533, -533, -533, + -533, -533, -533, -533, -533, 1011, -533, -533, -533, -533, + -533, -533, -533, -533, -533, -533, 1013, -533, -533, -533, + -533, -533, -533, -533, -533, -533, -533, 1015, -533, -533, + -533, -533, -533, -533, -533, -533, -533, -533, 1016, -533, + -533, -533, -533, -533, -533, -533, -533, -533, -533, 1017, + -533, 1186, -533, 1187, 644, 1199, 1208, 1213, -533, -533, + -533, -533, -533, -533, -533, -533, -533, 431, 1018, -533, + 1019, 1217, 627, 644, 1219, 1223, 1024, 121, 642, 1222, + -533, -533, 1026, -533, -533, 1188, 1190, -533, 1227, -533, + 1183, 122, -533, 1032, -533, -533, 1193, 1195, -533, 1235, + -533, 1038, 1039, 1236, 644, 1040, -533, 644, -533 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1181,7 +1181,7 @@ static const yytype_int16 yydefact[] = 0, 221, 0, 216, 361, 359, 362, 360, 363, 364, 365, 200, 207, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 139, 142, 135, 142, 0, 0, - 0, 33, 38, 491, 320, 0, 469, 468, 466, 465, + 0, 33, 38, 492, 320, 0, 469, 468, 466, 465, 470, 172, 0, 170, 369, 403, 0, 399, 0, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 404, 393, 392, 0, 0, 0, 480, 0, 0, @@ -1195,53 +1195,53 @@ static const yytype_int16 yydefact[] = 0, 0, 0, 0, 0, 140, 137, 0, 136, 42, 41, 0, 144, 0, 0, 0, 464, 401, 396, 400, 387, 0, 0, 0, 0, 0, 0, 426, 428, 427, - 356, 358, 0, 405, 394, 265, 261, 487, 489, 488, - 485, 0, 302, 217, 229, 0, 0, 366, 0, 0, - 183, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 356, 358, 0, 405, 394, 265, 261, 487, 488, 490, + 489, 485, 0, 302, 217, 229, 0, 0, 366, 0, + 0, 183, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, - 143, 0, 481, 321, 446, 0, 353, 0, 0, 0, - 0, 303, 0, 0, 206, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 141, 143, 0, 481, 321, 446, 0, 353, 0, 0, + 0, 0, 303, 0, 0, 206, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 482, 490, 0, 0, 0, 0, 171, - 0, 230, 222, 66, 72, 73, 70, 71, 74, 75, - 76, 77, 78, 0, 69, 116, 117, 114, 115, 118, - 119, 120, 121, 122, 0, 113, 83, 84, 81, 82, - 85, 86, 87, 88, 89, 0, 80, 94, 95, 92, - 93, 96, 97, 98, 99, 100, 0, 91, 127, 128, - 125, 126, 129, 130, 131, 132, 133, 0, 124, 105, - 106, 103, 104, 107, 108, 109, 110, 111, 0, 102, - 0, 354, 0, 481, 0, 0, 0, 305, 304, 310, - 79, 123, 90, 101, 134, 112, 0, 343, 352, 0, - 311, 306, 481, 0, 0, 0, 481, 0, 0, 307, - 348, 0, 342, 344, 0, 0, 351, 0, 312, 308, - 481, 350, 0, 313, 309, 0, 0, 347, 0, 346, - 0, 0, 0, 481, 0, 349, 481, 345 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 482, 491, 0, 0, 0, 0, + 171, 0, 230, 222, 66, 72, 73, 70, 71, 74, + 75, 76, 77, 78, 0, 69, 116, 117, 114, 115, + 118, 119, 120, 121, 122, 0, 113, 83, 84, 81, + 82, 85, 86, 87, 88, 89, 0, 80, 94, 95, + 92, 93, 96, 97, 98, 99, 100, 0, 91, 127, + 128, 125, 126, 129, 130, 131, 132, 133, 0, 124, + 105, 106, 103, 104, 107, 108, 109, 110, 111, 0, + 102, 0, 354, 0, 481, 0, 0, 0, 305, 304, + 310, 79, 123, 90, 101, 134, 112, 0, 343, 352, + 0, 311, 306, 481, 0, 0, 0, 481, 0, 0, + 307, 348, 0, 342, 344, 0, 0, 351, 0, 312, + 308, 481, 350, 0, 313, 309, 0, 0, 347, 0, + 346, 0, 0, 0, 481, 0, 349, 481, 345 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -533, -533, -533, 1141, -533, 1180, -533, 707, -533, 686, - -533, 628, 629, -533, -526, 1184, 1185, 1061, -533, -533, - 1186, -533, 990, 1188, 1191, -54, 1233, -16, 1007, 1094, - -6, -533, -533, 752, -533, -533, -533, -533, -533, -533, - -191, -533, -533, -533, -533, 663, -32, 4, 590, -533, - -533, 1105, -533, -533, 1195, 1196, 1198, 1199, 1201, -533, - -175, -533, 898, -199, -193, -533, -476, -474, -471, -469, - -466, -453, 591, -533, -533, -533, -533, -533, -533, 930, - -533, -533, 874, 522, -222, -533, -533, -533, 610, -533, - -533, -533, -533, 615, 887, 886, -43, -533, -533, -533, - -533, 1055, -423, 639, -120, 398, 476, -533, -533, -532, + -533, -533, -533, 1141, -533, 1177, -533, 708, -533, 685, + -533, 623, 619, -533, -526, 1189, 1191, 1066, -533, -533, + 1192, -533, 1012, 1194, 1196, -54, 1232, -16, 1020, 1095, + -46, -533, -533, 751, -533, -533, -533, -533, -533, -533, + -190, -533, -533, -533, -533, 666, 23, 4, 583, -533, + -533, 1106, -533, -533, 1197, 1198, 1200, 1201, 1202, -533, + -175, -533, 897, -199, -193, -533, -482, -469, -466, -453, + -437, -433, 591, -533, -533, -533, -533, -533, -533, 929, + -533, -533, 874, 523, -222, -533, -533, -533, 620, -533, + -533, -533, -533, 624, 883, 885, -8, -533, -533, -533, + -533, 1054, -423, 631, -121, 476, 535, -533, -533, -532, -533, 521, 608, -533 }; @@ -1252,9 +1252,9 @@ static const yytype_int16 yydefgoto[] = 625, 626, 749, 416, 304, 22, 23, 188, 24, 63, 25, 197, 198, 26, 27, 28, 29, 30, 107, 174, 108, 179, 403, 404, 503, 297, 408, 177, 402, 499, - 200, 790, 677, 105, 493, 494, 495, 496, 603, 31, + 200, 791, 677, 105, 493, 494, 495, 496, 603, 31, 93, 94, 497, 600, 32, 33, 34, 35, 36, 37, - 228, 423, 229, 230, 231, 1045, 232, 233, 234, 235, + 228, 423, 229, 230, 231, 1046, 232, 233, 234, 235, 236, 237, 610, 611, 238, 239, 240, 241, 242, 334, 243, 244, 245, 246, 247, 766, 248, 249, 250, 251, 252, 253, 254, 255, 354, 355, 256, 257, 258, 259, @@ -1267,274 +1267,276 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 311, 98, 294, 627, 353, 553, 310, 203, 50, 139, - 52, 629, 333, 49, 106, 329, 401, 91, 350, 351, - 350, 351, 604, 475, 605, 567, -476, 606, 357, 607, - 348, 349, 608, 1, 393, 2, 3, 4, 5, 6, - 7, 8, 9, 410, 289, 609, 161, 116, 299, 10, - 360, 11, 12, 13, 558, 125, 1, 456, 2, 3, - 4, 5, 6, 7, 8, 9, 102, 199, 103, 146, - 104, 459, 10, 649, 11, 12, 13, 601, 14, 51, - 262, 1054, 263, 264, 267, 758, 268, 269, 272, 160, - 273, 274, 305, 205, 206, 207, 405, 406, 490, 175, - 381, 158, 751, 393, 159, 382, 14, 126, 127, 425, - 361, 362, 361, 362, 491, 182, 183, 184, 1055, 358, - 361, 362, 359, 191, 192, 193, -479, 460, 43, 14, - 396, 602, 435, 436, 329, 49, 109, 457, 14, 431, - 397, 265, 361, 362, 85, 270, 359, 361, 362, 275, - 1065, 361, 362, 89, 361, 362, 204, 205, 206, 207, - 477, 332, 454, 455, 652, 286, 655, 293, 411, 90, - 412, 450, 306, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 470, 471, 472, 473, 474, 1066, 123, 96, - 302, 212, 213, 214, 15, 300, 559, 215, 380, 604, - 654, 605, 17, 650, 606, 95, 607, 309, 504, 608, - 173, 356, 16, 92, 492, 226, 352, 15, 352, 476, - 429, 225, 609, 216, 217, 218, 361, 362, 208, 209, - 17, 383, 781, 128, 782, 16, 384, 210, 99, 211, - 562, 563, 621, 565, 266, 409, 569, 543, 271, 148, - 149, 670, 276, 17, 554, 212, 213, 214, 501, 502, - 873, 215, 361, 362, 578, 420, 545, 546, 421, 361, - 362, 150, 151, 204, 205, 206, 207, 547, 548, 549, - 38, 39, 40, 580, 123, 165, 100, 216, 217, 218, - 106, 226, 41, 42, 385, 622, 109, 623, 624, 386, - 747, 405, 166, 167, 168, 387, 361, 362, 612, 219, - 388, 424, 621, 117, 434, 124, 277, 393, 1025, 365, - 278, 279, 1026, 1027, 389, 280, 281, 1028, 1029, 390, - 944, 576, 102, 220, 103, 221, 104, 222, -480, -480, - 361, 362, 53, 54, 538, 208, 209, 539, 55, 870, - 223, 224, 225, 129, 210, 226, 211, 227, 430, 332, - 647, 555, 648, 540, 359, 622, 570, 623, 624, 571, - 130, 651, 212, 213, 214, 342, 131, 343, 215, 344, - 345, 550, -480, -480, 375, 376, 377, 378, 379, 663, - 438, 145, 439, 147, 440, 44, 45, 46, 204, 205, - 206, 207, 660, 152, 216, 217, 218, 47, 48, 153, - 593, -237, 594, 595, 596, 597, 556, 598, 599, 485, - 486, 204, 205, 206, 207, 560, 219, 561, 777, 440, - 778, 779, 764, 679, 680, 681, 682, 683, 591, 162, - 684, 685, 579, 119, 120, 121, 122, 686, 687, 688, - 220, 759, 221, 220, 222, 221, 154, 222, 572, 634, - 755, 573, 359, 689, 86, 87, 88, 223, 224, 225, - 208, 209, 226, 641, 227, 14, 642, 643, 164, 210, - 642, 211, 56, 57, 58, 59, 60, 61, 163, 644, - 62, 1038, 359, 208, 209, 574, 575, 212, 213, 214, - 350, 864, 210, 215, 211, 169, 204, 205, 206, 207, - 1050, 155, 156, 157, 1056, 111, 112, 113, 114, 170, - 212, 213, 214, 172, 662, 176, 215, 359, 1067, 216, - 217, 218, 667, 752, 774, 668, 421, 359, 178, 791, - 860, 1075, 792, 421, 1077, 180, 204, 205, 206, 207, - 186, 219, 216, 217, 218, 690, 691, 692, 693, 694, - 181, 659, 695, 696, 863, 866, 187, 359, 867, 697, - 698, 699, 185, 943, 219, 220, 668, 221, 327, 222, - 949, 952, 189, 642, 421, 700, 190, 210, 1023, 211, - 875, 1024, 223, 224, 225, 1048, 1049, 226, 220, 227, - 221, 1042, 222, 194, 1043, 212, 213, 214, 199, 762, - 195, 215, 769, 874, 196, 223, 224, 225, 327, 328, - 226, 201, 227, 377, 378, 379, 282, 210, 283, 211, - 1057, 1058, 284, 64, 65, 285, 66, 216, 217, 218, - 784, 785, 287, 290, 291, 212, 213, 214, 67, 68, - 295, 215, 296, 298, 701, 702, 703, 704, 705, 219, - 303, 706, 707, 307, 314, 308, 312, 313, 708, 709, - 710, 330, 331, 951, 335, 336, 337, 216, 217, 218, - 433, 338, 339, 220, 711, 221, 341, 222, 346, 347, - 391, 392, 393, 380, 398, 407, 399, 400, 417, 219, - 223, 224, 225, 418, 422, 226, 441, 227, 427, 428, - 1, 432, 2, 3, 4, 5, 6, 7, 442, 9, - 14, 443, 444, 220, 445, 221, 10, 222, 11, 12, - 13, 446, 447, 448, 449, 451, 453, 365, 458, 226, - 223, 224, 225, 478, 480, 226, 482, 227, 483, 487, - 484, 488, 489, 498, 366, 367, 368, 369, 363, 500, - 364, 536, 371, 537, 69, 70, 71, 72, 433, 73, - 74, 541, 542, 544, 75, 76, 77, 457, 557, 78, - 79, 80, 566, 14, 564, 577, 81, 82, 361, 581, - 585, 83, 433, 586, 365, 84, 587, 583, 584, 372, - 373, 374, 375, 376, 377, 378, 379, 590, 630, 592, - 760, -480, -480, 368, 369, 365, 636, 614, 615, -480, - 616, 637, 617, 618, 638, 365, 619, 639, 640, 653, - 656, 620, 366, 367, 368, 369, 370, 628, 657, 635, - 371, 633, 366, 367, 368, 369, 658, 582, 645, 365, - 371, 661, 575, 574, 665, 664, -480, 373, 374, 375, - 376, 377, 378, 379, 669, 672, 366, 367, 368, 369, - 673, 15, 666, 674, 371, 675, 745, 372, 373, 374, - 375, 376, 377, 378, 379, 676, 678, 372, 373, 374, - 375, 376, 377, 378, 379, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 17, 746, 747, - 757, 372, 373, 374, 375, 376, 377, 378, 379, 505, + 311, 98, 294, 627, 353, 553, 203, 310, 50, 139, + 52, 629, 333, 49, 106, 329, 604, 91, 350, 351, + 350, 351, 205, 206, 207, 475, -476, 567, 357, 605, + 348, 349, 606, 1, 401, 2, 3, 4, 5, 6, + 7, 8, 9, 289, 299, 607, 161, 116, 456, 10, + 360, 11, 12, 13, 102, 125, 103, 199, 104, 175, + 558, 608, 410, 381, 559, 609, 126, 127, 382, 146, + 490, 14, 1, 305, 2, 3, 4, 5, 6, 7, + 8, 9, 361, 362, 459, 49, 491, 601, 10, 160, + 11, 12, 13, 361, 362, 165, 405, 406, 262, 51, + 263, 264, 751, 102, 650, 103, 14, 104, 267, 425, + 268, 269, 166, 167, 168, 182, 183, 184, 85, 14, + 212, 213, 214, 191, 192, 193, 215, 293, 457, 649, + 361, 362, 435, 436, 329, 272, 652, 273, 274, 431, + 460, 602, 43, 358, 450, 14, 359, 361, 362, 501, + 502, -479, 216, 217, 218, 545, 546, 361, 362, 265, + 477, 109, 454, 455, 359, 286, 547, 548, 549, 270, + 361, 362, 306, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 411, 123, 412, + 302, 300, 128, 604, 15, 17, 275, 309, 361, 362, + 332, 393, 393, 361, 362, 380, 605, 654, 504, 606, + 173, 356, 16, 89, 492, 226, 352, 90, 352, 396, + 226, 476, 607, 225, 204, 205, 206, 207, 92, 397, + 17, 361, 362, 15, 204, 205, 206, 207, 608, 670, + 562, 563, 609, 565, 95, 409, 569, 543, 1055, 1066, + 758, 16, 96, 383, 554, 385, 158, 655, 384, 159, + 386, 874, 266, 387, 578, 361, 362, 99, 388, 17, + 550, 420, 271, 1, 421, 2, 3, 4, 5, 6, + 7, 538, 9, 580, 539, 1056, 1067, 621, 429, 10, + 106, 11, 12, 13, 53, 54, 208, 209, 621, 276, + 55, 405, 109, 393, 100, 210, 327, 211, 342, 612, + 343, 424, 344, 345, 434, 210, 389, 211, 117, 361, + 362, 390, 123, 212, 213, 214, 361, 362, 365, 215, + 576, 945, 124, 212, 213, 214, 148, 149, 555, 215, + 622, 359, 623, 624, 129, 747, 14, -480, -480, 871, + 782, 622, 783, 623, 624, 216, 217, 218, 570, 130, + 647, 571, 648, 540, 131, 216, 217, 218, 38, 39, + 40, 651, 204, 205, 206, 207, 572, 219, 147, 573, + 41, 42, 438, 145, 439, 634, 440, 219, 359, 663, + 152, -480, -480, 375, 376, 377, 378, 379, 86, 87, + 88, 220, 660, 221, 154, 222, 153, 204, 205, 206, + 207, 220, 162, 221, 641, 222, 556, 642, 223, 224, + 225, 643, 164, 226, 642, 227, 430, 163, 223, 224, + 225, 169, 764, 226, 15, 227, 172, 560, 591, 561, + 644, 440, 579, 359, 208, 209, 170, 204, 205, 206, + 207, 759, 220, 210, 221, 211, 222, 176, 332, 180, + 755, 178, 44, 45, 46, 777, 778, 779, 780, 181, + 17, 212, 213, 214, 47, 48, 185, 215, 662, 208, + 209, 359, 667, 752, 14, 668, 421, 186, 210, 277, + 211, 1026, 1039, 278, 279, 1027, 1028, 187, 280, 281, + 1029, 1030, 189, 216, 217, 218, 212, 213, 214, 190, + 774, 1051, 215, 359, 792, 1057, 194, 793, 195, 208, + 209, 119, 120, 121, 122, 219, 150, 151, 210, 1068, + 211, 196, 204, 205, 206, 207, 485, 486, 216, 217, + 218, 861, 1076, 199, 421, 1078, 212, 213, 214, 220, + 201, 221, 215, 222, 56, 57, 58, 59, 60, 61, + 219, 659, 62, 155, 156, 157, 223, 224, 225, 864, + 282, 226, 359, 227, 111, 112, 113, 114, 216, 217, + 218, 283, 867, 284, 220, 868, 221, 944, 222, 285, + 668, 876, 365, 950, 953, 433, 642, 421, 574, 575, + 219, 223, 224, 225, 327, 328, 226, 287, 227, -480, + -480, 368, 369, 210, 875, 211, 363, -480, 364, 64, + 65, 290, 66, 291, 220, 295, 221, 1024, 222, 296, + 1025, 212, 213, 214, 67, 68, 1043, 215, 298, 1044, + 307, 223, 224, 225, 762, 308, 226, 769, 227, 377, + 378, 379, 365, 303, -480, 373, 374, 375, 376, 377, + 378, 379, 312, 216, 217, 218, 350, 865, 313, 366, + 367, 368, 369, 365, 952, 1049, 1050, 371, 314, 593, + -237, 594, 595, 596, 597, 219, 598, 599, 1058, 1059, + 366, 367, 368, 369, 370, 785, 786, 330, 371, 331, + 335, 336, 337, 338, 341, 346, 339, 347, 380, 220, + 391, 221, 433, 222, 372, 373, 374, 375, 376, 377, + 378, 379, 433, 392, 393, 760, 223, 224, 225, 398, + 399, 226, 400, 227, 407, 372, 373, 374, 375, 376, + 377, 378, 379, 417, 418, 14, 422, 427, 428, 432, + 69, 70, 71, 72, 441, 73, 74, 442, 443, 444, + 75, 76, 77, 449, 445, 78, 79, 80, 446, 365, + 447, 451, 81, 82, 448, 453, 458, 83, 483, 365, + 478, 84, 226, 480, 482, 484, 366, 367, 368, 369, + 487, 582, 488, 489, 371, 498, 366, 367, 368, 369, + 500, 536, 537, 541, 371, 542, 457, 544, 557, 679, + 680, 681, 682, 683, 564, 566, 684, 685, 361, 581, + 583, 584, 577, 686, 687, 688, 585, 586, 587, 590, + 592, 372, 373, 374, 375, 376, 377, 378, 379, 689, + 614, 372, 373, 374, 375, 376, 377, 378, 379, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, - 516, 517, 518, 519, 520, 521, 753, 522, 523, 524, - 525, 526, 527, 761, 763, 528, 754, 770, 529, 530, - 765, 772, 531, 532, 533, 534, 712, 713, 714, 715, - 716, 771, 773, 717, 718, 775, 776, 786, 788, 793, - 719, 720, 721, 723, 724, 725, 726, 727, 789, 794, - 728, 729, 795, 796, 802, 797, 722, 730, 731, 732, - 734, 735, 736, 737, 738, 813, 798, 739, 740, 799, - 800, 824, 801, 733, 741, 742, 743, 803, 804, 835, - 846, 805, 857, 806, 862, 807, 808, 809, 871, 872, - 744, 810, 811, 876, 812, 814, 815, 816, 877, 817, - 878, 818, 879, 819, 880, 820, 821, 881, 822, 882, - 823, 825, 883, 826, 827, 828, 829, 830, 831, 832, - 833, 834, 836, 837, 884, 838, 885, 839, 840, 841, - 842, 843, 844, 845, 847, 848, 887, 849, 850, 851, - 852, 853, 854, 888, 855, 856, 858, 865, 889, 868, - 869, 886, 890, 891, 892, 893, 894, 895, 896, 897, + 516, 517, 518, 519, 520, 521, 615, 522, 523, 524, + 525, 526, 527, 616, 617, 528, 630, 618, 529, 530, + 619, 620, 531, 532, 533, 534, 690, 691, 692, 693, + 694, 628, 636, 695, 696, 633, 637, 635, 638, 639, + 697, 698, 699, 701, 702, 703, 704, 705, 640, 645, + 706, 707, 656, 653, 657, 658, 700, 708, 709, 710, + 712, 713, 714, 715, 716, 661, 575, 717, 718, 574, + 664, 665, 666, 711, 719, 720, 721, 723, 724, 725, + 726, 727, 669, 672, 728, 729, 673, 674, 675, 676, + 722, 730, 731, 732, 734, 735, 736, 737, 738, 678, + 746, 739, 740, 745, 753, 754, 747, 733, 741, 742, + 743, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 761, 744, 757, 763, 765, 770, 771, + 772, 775, 776, 773, 787, 789, 803, 790, 814, 794, + 795, 796, 797, 863, 798, 799, 800, 801, 825, 836, + 847, 802, 804, 805, 806, 807, 808, 809, 810, 858, + 872, 811, 812, 813, 815, 816, 817, 818, 873, 877, + 819, 878, 820, 879, 821, 822, 823, 880, 824, 881, + 882, 883, 884, 885, 826, 827, 828, 829, 830, 831, + 832, 833, 834, 835, 886, 837, 888, 838, 839, 840, + 841, 842, 843, 844, 845, 846, 848, 849, 850, 851, + 852, 889, 853, 854, 855, 856, 857, 859, 866, 869, + 870, 887, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, - 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, - 938, 939, 940, 941, 942, 945, 946, 947, 948, 359, - 953, 950, 954, 955, 956, 963, 957, 958, 959, 960, - 961, 962, 964, 965, 966, 967, 968, 969, 970, 971, - 974, 972, 973, 975, 985, 996, 976, 977, 978, 979, - 980, 981, 982, 983, 984, 986, 987, 988, 989, 990, - 991, 992, 993, 994, 995, 997, 998, 999, 1000, 1001, - 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, - 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1021, 1020, - 1030, 1031, 1022, 1032, 1033, 1034, 1036, 1037, 1035, 1046, - 1039, 1040, 1041, 1044, 1047, 1051, 1052, 1059, 1053, 1061, - 1060, 1063, 1062, 1064, 1068, 1069, 1070, 1071, 1072, 1074, - 1073, 171, 1076, 133, 646, 301, 632, 134, 135, 136, - 97, 137, 613, 748, 138, 671, 750, 452, 140, 141, - 783, 142, 143, 437, 144, 767, 787, 292, 288, 859, - 768, 479, 481, 340, 861, 0, 780, 0, 0, 0, - 0, 756, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 395, 0, 0, 0, 0, 426, + 928, 929, 930, 932, 933, 934, 931, 935, 936, 937, + 938, 939, 940, 941, 943, 942, 946, 947, 948, 949, + 359, 1021, 951, 954, 955, 964, 975, 956, 957, 986, + 958, 959, 960, 961, 962, 963, 965, 966, 997, 967, + 968, 969, 970, 971, 972, 973, 974, 976, 977, 1008, + 978, 979, 980, 981, 982, 983, 984, 985, 987, 988, + 989, 990, 991, 992, 993, 994, 995, 1019, 996, 998, + 1037, 1038, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, + 1007, 1009, 1010, 1011, 1012, 1040, 1013, 1014, 1015, 1016, + 1017, 1018, 1020, 1022, 1041, 1031, 1032, 1023, 1033, 1042, + 1034, 1035, 1036, 1048, 1047, 1052, 1045, 1053, 1060, 1054, + 1062, 1061, 1063, 1064, 1065, 1070, 1069, 1071, 1072, 1075, + 133, 171, 1073, 646, 1074, 1077, 750, 632, 748, 97, + 301, 613, 134, 784, 135, 136, 452, 137, 671, 138, + 140, 141, 437, 142, 143, 144, 788, 479, 292, 288, + 860, 481, 340, 756, 862, 767, 781, 0, 0, 768, + 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, 568 + 0, 0, 0, 0, 0, 0, 0, 395, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 568, 0, + 0, 426 }; static const yytype_int16 yycheck[] = { - 199, 17, 177, 535, 226, 428, 197, 127, 4, 63, - 6, 537, 211, 3, 8, 208, 78, 13, 5, 6, - 5, 6, 498, 3, 498, 3, 0, 498, 227, 498, - 223, 224, 498, 7, 80, 9, 10, 11, 12, 13, - 14, 15, 16, 3, 164, 498, 64, 43, 57, 23, - 57, 25, 26, 27, 57, 51, 7, 77, 9, 10, - 11, 12, 13, 14, 15, 16, 20, 68, 22, 65, - 24, 75, 23, 85, 25, 26, 27, 3, 80, 78, - 3, 127, 5, 6, 3, 85, 5, 6, 3, 85, - 5, 6, 34, 4, 5, 6, 295, 296, 29, 105, - 203, 189, 628, 80, 192, 208, 80, 78, 79, 308, - 154, 155, 154, 155, 45, 111, 112, 113, 164, 205, - 154, 155, 208, 119, 120, 121, 64, 131, 33, 80, - 42, 57, 331, 332, 327, 3, 74, 157, 80, 314, - 52, 64, 154, 155, 30, 64, 208, 154, 155, 64, - 127, 154, 155, 3, 154, 155, 3, 4, 5, 6, - 382, 89, 361, 362, 208, 161, 208, 173, 128, 3, - 130, 205, 188, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 164, 206, 16, - 186, 102, 103, 104, 168, 204, 88, 108, 206, 675, - 208, 675, 204, 88, 675, 169, 675, 208, 407, 675, - 204, 227, 186, 3, 204, 202, 203, 168, 203, 199, - 67, 199, 675, 134, 135, 136, 154, 155, 75, 76, - 204, 203, 30, 204, 32, 186, 208, 84, 0, 86, - 439, 440, 75, 442, 167, 299, 445, 422, 167, 173, - 174, 205, 167, 204, 429, 102, 103, 104, 72, 73, - 786, 108, 154, 155, 457, 205, 70, 71, 208, 154, - 155, 173, 174, 3, 4, 5, 6, 81, 82, 83, - 29, 30, 31, 458, 206, 159, 207, 134, 135, 136, - 8, 202, 41, 42, 203, 128, 74, 130, 131, 208, - 133, 500, 176, 177, 178, 203, 154, 155, 499, 156, - 208, 307, 75, 74, 330, 14, 42, 80, 42, 132, - 46, 47, 46, 47, 203, 51, 52, 51, 52, 208, - 862, 451, 20, 180, 22, 182, 24, 184, 151, 152, - 154, 155, 165, 166, 205, 75, 76, 208, 171, 772, - 197, 198, 199, 3, 84, 202, 86, 204, 205, 89, - 559, 205, 561, 417, 208, 128, 205, 130, 131, 208, - 3, 564, 102, 103, 104, 120, 3, 122, 108, 124, - 125, 185, 195, 196, 197, 198, 199, 200, 201, 582, - 85, 3, 87, 6, 89, 29, 30, 31, 3, 4, - 5, 6, 577, 3, 134, 135, 136, 41, 42, 176, - 58, 59, 60, 61, 62, 63, 432, 65, 66, 48, - 49, 3, 4, 5, 6, 85, 156, 87, 3, 89, - 5, 6, 654, 91, 92, 93, 94, 95, 492, 57, - 98, 99, 458, 45, 46, 47, 48, 105, 106, 107, - 180, 650, 182, 180, 184, 182, 165, 184, 205, 205, - 635, 208, 208, 121, 158, 159, 160, 197, 198, 199, - 75, 76, 202, 205, 204, 80, 208, 205, 6, 84, - 208, 86, 35, 36, 37, 38, 39, 40, 208, 205, - 43, 1023, 208, 75, 76, 5, 6, 102, 103, 104, - 5, 6, 84, 108, 86, 205, 3, 4, 5, 6, - 1042, 188, 189, 190, 1046, 39, 40, 41, 42, 205, - 102, 103, 104, 21, 205, 67, 108, 208, 1060, 134, - 135, 136, 205, 205, 205, 208, 208, 208, 69, 205, - 205, 1073, 208, 208, 1076, 75, 3, 4, 5, 6, - 64, 156, 134, 135, 136, 91, 92, 93, 94, 95, - 3, 577, 98, 99, 205, 205, 204, 208, 208, 105, - 106, 107, 3, 205, 156, 180, 208, 182, 75, 184, - 205, 205, 76, 208, 208, 121, 3, 84, 205, 86, - 789, 208, 197, 198, 199, 48, 49, 202, 180, 204, - 182, 205, 184, 3, 208, 102, 103, 104, 68, 652, - 3, 108, 655, 788, 3, 197, 198, 199, 75, 76, - 202, 4, 204, 199, 200, 201, 3, 84, 3, 86, - 46, 47, 6, 29, 30, 4, 32, 134, 135, 136, - 672, 673, 204, 6, 6, 102, 103, 104, 44, 45, - 55, 108, 70, 76, 91, 92, 93, 94, 95, 156, - 3, 98, 99, 64, 204, 194, 80, 80, 105, 106, - 107, 204, 204, 872, 4, 4, 4, 134, 135, 136, - 75, 4, 6, 180, 121, 182, 204, 184, 204, 204, - 3, 6, 80, 206, 6, 71, 205, 205, 57, 156, - 197, 198, 199, 204, 204, 202, 4, 204, 204, 204, - 7, 204, 9, 10, 11, 12, 13, 14, 204, 16, - 80, 204, 204, 180, 204, 182, 23, 184, 25, 26, - 27, 4, 4, 209, 205, 79, 3, 132, 204, 202, - 197, 198, 199, 6, 6, 202, 6, 204, 5, 204, - 46, 205, 6, 179, 149, 150, 151, 152, 75, 208, - 77, 129, 157, 204, 160, 161, 162, 163, 75, 165, - 166, 3, 3, 208, 170, 171, 172, 157, 205, 175, - 176, 177, 4, 80, 78, 204, 182, 183, 154, 131, - 6, 187, 75, 6, 132, 191, 3, 209, 209, 194, - 195, 196, 197, 198, 199, 200, 201, 6, 28, 208, - 205, 149, 150, 151, 152, 132, 6, 204, 204, 157, - 204, 6, 204, 204, 4, 132, 204, 3, 6, 208, - 4, 204, 149, 150, 151, 152, 153, 204, 4, 204, - 157, 205, 149, 150, 151, 152, 80, 154, 205, 132, - 157, 205, 6, 5, 50, 53, 194, 195, 196, 197, - 198, 199, 200, 201, 6, 59, 149, 150, 151, 152, - 59, 168, 194, 3, 157, 208, 131, 194, 195, 196, - 197, 198, 199, 200, 201, 54, 6, 194, 195, 196, - 197, 198, 199, 200, 201, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 204, 129, 133, - 205, 194, 195, 196, 197, 198, 199, 200, 201, 90, + 199, 17, 177, 535, 226, 428, 127, 197, 4, 63, + 6, 537, 211, 3, 8, 208, 498, 13, 5, 6, + 5, 6, 4, 5, 6, 3, 0, 3, 227, 498, + 223, 224, 498, 7, 78, 9, 10, 11, 12, 13, + 14, 15, 16, 164, 57, 498, 64, 43, 77, 23, + 57, 25, 26, 27, 20, 51, 22, 68, 24, 105, + 57, 498, 3, 203, 88, 498, 78, 79, 208, 65, + 29, 80, 7, 34, 9, 10, 11, 12, 13, 14, + 15, 16, 154, 155, 75, 3, 45, 3, 23, 85, + 25, 26, 27, 154, 155, 159, 295, 296, 3, 78, + 5, 6, 628, 20, 88, 22, 80, 24, 3, 308, + 5, 6, 176, 177, 178, 111, 112, 113, 30, 80, + 102, 103, 104, 119, 120, 121, 108, 173, 157, 85, + 154, 155, 331, 332, 327, 3, 208, 5, 6, 314, + 131, 57, 33, 205, 205, 80, 208, 154, 155, 72, + 73, 64, 134, 135, 136, 70, 71, 154, 155, 64, + 382, 74, 361, 362, 208, 161, 81, 82, 83, 64, + 154, 155, 188, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 128, 206, 130, + 186, 204, 204, 675, 168, 204, 64, 208, 154, 155, + 89, 80, 80, 154, 155, 206, 675, 208, 407, 675, + 204, 227, 186, 3, 204, 202, 203, 3, 203, 42, + 202, 199, 675, 199, 3, 4, 5, 6, 3, 52, + 204, 154, 155, 168, 3, 4, 5, 6, 675, 205, + 439, 440, 675, 442, 169, 299, 445, 422, 127, 127, + 85, 186, 16, 203, 429, 203, 189, 208, 208, 192, + 208, 787, 167, 203, 457, 154, 155, 0, 208, 204, + 185, 205, 167, 7, 208, 9, 10, 11, 12, 13, + 14, 205, 16, 458, 208, 164, 164, 75, 67, 23, + 8, 25, 26, 27, 165, 166, 75, 76, 75, 167, + 171, 500, 74, 80, 207, 84, 75, 86, 120, 499, + 122, 307, 124, 125, 330, 84, 203, 86, 74, 154, + 155, 208, 206, 102, 103, 104, 154, 155, 132, 108, + 451, 863, 14, 102, 103, 104, 173, 174, 205, 108, + 128, 208, 130, 131, 3, 133, 80, 151, 152, 772, + 30, 128, 32, 130, 131, 134, 135, 136, 205, 3, + 559, 208, 561, 417, 3, 134, 135, 136, 29, 30, + 31, 564, 3, 4, 5, 6, 205, 156, 6, 208, + 41, 42, 85, 3, 87, 205, 89, 156, 208, 582, + 3, 195, 196, 197, 198, 199, 200, 201, 158, 159, + 160, 180, 577, 182, 165, 184, 176, 3, 4, 5, + 6, 180, 57, 182, 205, 184, 432, 208, 197, 198, + 199, 205, 6, 202, 208, 204, 205, 208, 197, 198, + 199, 205, 654, 202, 168, 204, 21, 85, 492, 87, + 205, 89, 458, 208, 75, 76, 205, 3, 4, 5, + 6, 650, 180, 84, 182, 86, 184, 67, 89, 75, + 635, 69, 29, 30, 31, 3, 4, 5, 6, 3, + 204, 102, 103, 104, 41, 42, 3, 108, 205, 75, + 76, 208, 205, 205, 80, 208, 208, 64, 84, 42, + 86, 42, 1024, 46, 47, 46, 47, 204, 51, 52, + 51, 52, 76, 134, 135, 136, 102, 103, 104, 3, + 205, 1043, 108, 208, 205, 1047, 3, 208, 3, 75, + 76, 45, 46, 47, 48, 156, 173, 174, 84, 1061, + 86, 3, 3, 4, 5, 6, 48, 49, 134, 135, + 136, 205, 1074, 68, 208, 1077, 102, 103, 104, 180, + 4, 182, 108, 184, 35, 36, 37, 38, 39, 40, + 156, 577, 43, 188, 189, 190, 197, 198, 199, 205, + 3, 202, 208, 204, 39, 40, 41, 42, 134, 135, + 136, 3, 205, 6, 180, 208, 182, 205, 184, 4, + 208, 790, 132, 205, 205, 75, 208, 208, 5, 6, + 156, 197, 198, 199, 75, 76, 202, 204, 204, 149, + 150, 151, 152, 84, 789, 86, 75, 157, 77, 29, + 30, 6, 32, 6, 180, 55, 182, 205, 184, 70, + 208, 102, 103, 104, 44, 45, 205, 108, 76, 208, + 64, 197, 198, 199, 652, 194, 202, 655, 204, 199, + 200, 201, 132, 3, 194, 195, 196, 197, 198, 199, + 200, 201, 80, 134, 135, 136, 5, 6, 80, 149, + 150, 151, 152, 132, 873, 48, 49, 157, 204, 58, + 59, 60, 61, 62, 63, 156, 65, 66, 46, 47, + 149, 150, 151, 152, 153, 672, 673, 204, 157, 204, + 4, 4, 4, 4, 204, 204, 6, 204, 206, 180, + 3, 182, 75, 184, 194, 195, 196, 197, 198, 199, + 200, 201, 75, 6, 80, 205, 197, 198, 199, 6, + 205, 202, 205, 204, 71, 194, 195, 196, 197, 198, + 199, 200, 201, 57, 204, 80, 204, 204, 204, 204, + 160, 161, 162, 163, 4, 165, 166, 204, 204, 204, + 170, 171, 172, 205, 204, 175, 176, 177, 4, 132, + 4, 79, 182, 183, 209, 3, 204, 187, 5, 132, + 6, 191, 202, 6, 6, 46, 149, 150, 151, 152, + 204, 154, 205, 6, 157, 179, 149, 150, 151, 152, + 208, 129, 204, 3, 157, 3, 157, 208, 205, 91, + 92, 93, 94, 95, 78, 4, 98, 99, 154, 131, + 209, 209, 204, 105, 106, 107, 6, 6, 3, 6, + 208, 194, 195, 196, 197, 198, 199, 200, 201, 121, + 204, 194, 195, 196, 197, 198, 199, 200, 201, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 204, 108, 109, 110, - 111, 112, 113, 202, 4, 116, 164, 205, 119, 120, - 202, 204, 123, 124, 125, 126, 91, 92, 93, 94, - 95, 205, 205, 98, 99, 6, 6, 204, 55, 208, - 105, 106, 107, 91, 92, 93, 94, 95, 56, 208, - 98, 99, 208, 208, 93, 208, 121, 105, 106, 107, - 91, 92, 93, 94, 95, 93, 208, 98, 99, 208, - 208, 93, 208, 121, 105, 106, 107, 208, 208, 93, - 93, 208, 93, 208, 3, 208, 208, 208, 6, 64, - 121, 208, 208, 6, 208, 208, 208, 208, 6, 208, - 6, 208, 6, 208, 6, 208, 208, 6, 208, 6, - 208, 208, 6, 208, 208, 208, 208, 208, 208, 208, + 111, 112, 113, 204, 204, 116, 28, 204, 119, 120, + 204, 204, 123, 124, 125, 126, 91, 92, 93, 94, + 95, 204, 6, 98, 99, 205, 6, 204, 4, 3, + 105, 106, 107, 91, 92, 93, 94, 95, 6, 205, + 98, 99, 4, 208, 4, 80, 121, 105, 106, 107, + 91, 92, 93, 94, 95, 205, 6, 98, 99, 5, + 53, 50, 194, 121, 105, 106, 107, 91, 92, 93, + 94, 95, 6, 59, 98, 99, 59, 3, 208, 54, + 121, 105, 106, 107, 91, 92, 93, 94, 95, 6, + 129, 98, 99, 131, 204, 164, 133, 121, 105, 106, + 107, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 202, 121, 205, 4, 202, 205, 205, + 204, 6, 6, 205, 204, 55, 93, 56, 93, 208, + 208, 208, 208, 3, 208, 208, 208, 208, 93, 93, + 93, 208, 208, 208, 208, 208, 208, 208, 208, 93, + 6, 208, 208, 208, 208, 208, 208, 208, 64, 6, + 208, 6, 208, 6, 208, 208, 208, 6, 208, 6, + 6, 6, 6, 6, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 6, 208, 6, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 6, 208, 208, 208, - 208, 208, 208, 6, 208, 208, 208, 208, 6, 208, - 208, 208, 6, 6, 6, 6, 6, 6, 6, 208, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 6, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 6, 6, 6, 6, 6, 6, 6, 6, 208, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 208, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 208, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 208, 6, 4, 4, 4, 4, 208, - 205, 6, 205, 205, 205, 6, 205, 205, 205, 205, - 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, - 6, 205, 205, 205, 6, 6, 205, 205, 205, 205, - 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 6, 6, 6, 6, 6, 6, 208, 6, 6, 6, + 6, 6, 6, 6, 6, 208, 4, 4, 4, 4, + 208, 208, 6, 205, 205, 6, 6, 205, 205, 6, + 205, 205, 205, 205, 205, 205, 205, 205, 6, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 6, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 6, 205, 205, + 4, 4, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 6, 205, 205, 205, 205, - 205, 205, 205, 205, 205, 205, 6, 205, 205, 208, - 205, 205, 208, 205, 205, 205, 4, 4, 205, 205, - 6, 6, 6, 208, 6, 6, 4, 6, 205, 42, - 205, 6, 42, 51, 204, 42, 42, 3, 204, 3, - 205, 100, 205, 63, 558, 184, 539, 63, 63, 63, - 17, 63, 500, 625, 63, 592, 627, 359, 63, 63, - 670, 63, 63, 333, 63, 655, 675, 173, 163, 747, - 655, 384, 386, 218, 753, -1, 668, -1, -1, -1, - -1, 642, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 287, -1, -1, -1, -1, 309, + 205, 205, 205, 205, 6, 205, 205, 208, 205, 6, + 205, 205, 205, 6, 205, 6, 208, 4, 6, 205, + 42, 205, 42, 6, 51, 42, 204, 42, 3, 3, + 63, 100, 204, 558, 205, 205, 627, 539, 625, 17, + 184, 500, 63, 670, 63, 63, 359, 63, 592, 63, + 63, 63, 333, 63, 63, 63, 675, 384, 173, 163, + 747, 386, 218, 642, 753, 655, 668, -1, -1, 655, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 444 + -1, -1, -1, -1, -1, -1, -1, 287, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 444, -1, + -1, 309 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of @@ -1618,37 +1620,37 @@ static const yytype_int16 yystos[] = 99, 105, 106, 107, 121, 131, 129, 133, 221, 222, 222, 224, 205, 204, 164, 270, 313, 205, 85, 273, 205, 202, 306, 4, 294, 202, 295, 298, 303, 306, - 205, 205, 204, 205, 205, 6, 6, 3, 5, 6, - 322, 30, 32, 258, 256, 256, 204, 282, 55, 56, - 251, 205, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 93, 208, 208, 208, 208, 208, 208, 208, + 205, 205, 204, 205, 205, 6, 6, 3, 4, 5, + 6, 322, 30, 32, 258, 256, 256, 204, 282, 55, + 56, 251, 205, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 93, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 93, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 93, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 93, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 93, 208, 293, - 205, 321, 3, 205, 6, 208, 205, 208, 208, 208, - 312, 6, 64, 224, 270, 273, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 208, 6, 6, 6, + 208, 208, 208, 208, 208, 208, 208, 93, 208, 208, + 208, 208, 208, 208, 208, 208, 208, 208, 93, 208, + 293, 205, 321, 3, 205, 6, 208, 205, 208, 208, + 208, 312, 6, 64, 224, 270, 273, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 208, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 208, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 208, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 208, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 208, 6, 205, 319, 4, 4, 4, 4, 205, - 6, 273, 205, 205, 205, 205, 205, 205, 205, 205, - 205, 205, 205, 6, 205, 205, 205, 205, 205, 205, + 6, 208, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 208, 6, 205, 319, 4, 4, 4, 4, + 205, 6, 273, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 6, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 6, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 6, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 6, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 6, 205, - 208, 205, 208, 205, 208, 42, 46, 47, 51, 52, - 205, 205, 205, 205, 205, 205, 4, 4, 319, 6, - 6, 6, 205, 208, 208, 275, 205, 6, 48, 49, - 319, 6, 4, 205, 127, 164, 319, 46, 47, 6, - 205, 42, 42, 6, 51, 127, 164, 319, 204, 42, - 42, 3, 204, 205, 3, 319, 205, 319 + 205, 205, 205, 205, 205, 205, 205, 205, 205, 6, + 205, 208, 205, 208, 205, 208, 42, 46, 47, 51, + 52, 205, 205, 205, 205, 205, 205, 4, 4, 319, + 6, 6, 6, 205, 208, 208, 275, 205, 6, 48, + 49, 319, 6, 4, 205, 127, 164, 319, 46, 47, + 6, 205, 42, 42, 6, 51, 127, 164, 319, 204, + 42, 42, 3, 204, 205, 3, 319, 205, 319 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ @@ -1703,7 +1705,7 @@ static const yytype_int16 yyr1[] = 311, 311, 311, 312, 312, 313, 313, 313, 313, 313, 313, 314, 315, 315, 316, 316, 317, 317, 318, 318, 319, 319, 320, 320, 321, 321, 322, 322, 322, 322, - 323, 323 + 322, 323, 323 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ @@ -1758,7 +1760,7 @@ static const yytype_int8 yyr2[] = 2, 2, 2, 1, 3, 2, 2, 1, 2, 2, 2, 1, 2, 0, 3, 0, 1, 0, 2, 0, 4, 0, 4, 0, 1, 3, 1, 3, 3, 3, - 6, 3 + 3, 6, 3 }; @@ -2326,7 +2328,7 @@ yydestruct (const char *yymsg, { free(((*yyvaluep).str_value)); } -#line 2330 "parser.cpp" +#line 2332 "parser.cpp" break; case YYSYMBOL_STRING: /* STRING */ @@ -2334,7 +2336,7 @@ yydestruct (const char *yymsg, { free(((*yyvaluep).str_value)); } -#line 2338 "parser.cpp" +#line 2340 "parser.cpp" break; case YYSYMBOL_statement_list: /* statement_list */ @@ -2348,7 +2350,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).stmt_array)); } } -#line 2352 "parser.cpp" +#line 2354 "parser.cpp" break; case YYSYMBOL_table_element_array: /* table_element_array */ @@ -2362,7 +2364,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).table_element_array_t)); } } -#line 2366 "parser.cpp" +#line 2368 "parser.cpp" break; case YYSYMBOL_column_constraints: /* column_constraints */ @@ -2373,7 +2375,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).column_constraints_t)); } } -#line 2377 "parser.cpp" +#line 2379 "parser.cpp" break; case YYSYMBOL_default_expr: /* default_expr */ @@ -2381,7 +2383,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 2385 "parser.cpp" +#line 2387 "parser.cpp" break; case YYSYMBOL_identifier_array: /* identifier_array */ @@ -2390,7 +2392,7 @@ yydestruct (const char *yymsg, fprintf(stderr, "destroy identifier array\n"); delete (((*yyvaluep).identifier_array_t)); } -#line 2394 "parser.cpp" +#line 2396 "parser.cpp" break; case YYSYMBOL_optional_identifier_array: /* optional_identifier_array */ @@ -2399,7 +2401,7 @@ yydestruct (const char *yymsg, fprintf(stderr, "destroy identifier array\n"); delete (((*yyvaluep).identifier_array_t)); } -#line 2403 "parser.cpp" +#line 2405 "parser.cpp" break; case YYSYMBOL_update_expr_array: /* update_expr_array */ @@ -2413,7 +2415,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).update_expr_array_t)); } } -#line 2417 "parser.cpp" +#line 2419 "parser.cpp" break; case YYSYMBOL_update_expr: /* update_expr */ @@ -2424,7 +2426,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).update_expr_t); } } -#line 2428 "parser.cpp" +#line 2430 "parser.cpp" break; case YYSYMBOL_select_statement: /* select_statement */ @@ -2434,7 +2436,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).select_stmt); } } -#line 2438 "parser.cpp" +#line 2440 "parser.cpp" break; case YYSYMBOL_select_with_paren: /* select_with_paren */ @@ -2444,7 +2446,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).select_stmt); } } -#line 2448 "parser.cpp" +#line 2450 "parser.cpp" break; case YYSYMBOL_select_without_paren: /* select_without_paren */ @@ -2454,7 +2456,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).select_stmt); } } -#line 2458 "parser.cpp" +#line 2460 "parser.cpp" break; case YYSYMBOL_select_clause_with_modifier: /* select_clause_with_modifier */ @@ -2464,7 +2466,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).select_stmt); } } -#line 2468 "parser.cpp" +#line 2470 "parser.cpp" break; case YYSYMBOL_select_clause_without_modifier_paren: /* select_clause_without_modifier_paren */ @@ -2474,7 +2476,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).select_stmt); } } -#line 2478 "parser.cpp" +#line 2480 "parser.cpp" break; case YYSYMBOL_select_clause_without_modifier: /* select_clause_without_modifier */ @@ -2484,7 +2486,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).select_stmt); } } -#line 2488 "parser.cpp" +#line 2490 "parser.cpp" break; case YYSYMBOL_order_by_clause: /* order_by_clause */ @@ -2498,7 +2500,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).order_by_expr_list_t)); } } -#line 2502 "parser.cpp" +#line 2504 "parser.cpp" break; case YYSYMBOL_order_by_expr_list: /* order_by_expr_list */ @@ -2512,7 +2514,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).order_by_expr_list_t)); } } -#line 2516 "parser.cpp" +#line 2518 "parser.cpp" break; case YYSYMBOL_order_by_expr: /* order_by_expr */ @@ -2522,7 +2524,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).order_by_expr_t)->expr_; delete ((*yyvaluep).order_by_expr_t); } -#line 2526 "parser.cpp" +#line 2528 "parser.cpp" break; case YYSYMBOL_limit_expr: /* limit_expr */ @@ -2530,7 +2532,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2534 "parser.cpp" +#line 2536 "parser.cpp" break; case YYSYMBOL_offset_expr: /* offset_expr */ @@ -2538,7 +2540,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2542 "parser.cpp" +#line 2544 "parser.cpp" break; case YYSYMBOL_from_clause: /* from_clause */ @@ -2547,7 +2549,7 @@ yydestruct (const char *yymsg, fprintf(stderr, "destroy table reference\n"); delete (((*yyvaluep).table_reference_t)); } -#line 2551 "parser.cpp" +#line 2553 "parser.cpp" break; case YYSYMBOL_search_clause: /* search_clause */ @@ -2555,7 +2557,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2559 "parser.cpp" +#line 2561 "parser.cpp" break; case YYSYMBOL_where_clause: /* where_clause */ @@ -2563,7 +2565,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2567 "parser.cpp" +#line 2569 "parser.cpp" break; case YYSYMBOL_having_clause: /* having_clause */ @@ -2571,7 +2573,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2575 "parser.cpp" +#line 2577 "parser.cpp" break; case YYSYMBOL_group_by_clause: /* group_by_clause */ @@ -2585,7 +2587,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).expr_array_t)); } } -#line 2589 "parser.cpp" +#line 2591 "parser.cpp" break; case YYSYMBOL_table_reference: /* table_reference */ @@ -2594,7 +2596,7 @@ yydestruct (const char *yymsg, fprintf(stderr, "destroy table reference\n"); delete (((*yyvaluep).table_reference_t)); } -#line 2598 "parser.cpp" +#line 2600 "parser.cpp" break; case YYSYMBOL_table_reference_unit: /* table_reference_unit */ @@ -2603,7 +2605,7 @@ yydestruct (const char *yymsg, fprintf(stderr, "destroy table reference\n"); delete (((*yyvaluep).table_reference_t)); } -#line 2607 "parser.cpp" +#line 2609 "parser.cpp" break; case YYSYMBOL_table_reference_name: /* table_reference_name */ @@ -2612,7 +2614,7 @@ yydestruct (const char *yymsg, fprintf(stderr, "destroy table reference\n"); delete (((*yyvaluep).table_reference_t)); } -#line 2616 "parser.cpp" +#line 2618 "parser.cpp" break; case YYSYMBOL_table_name: /* table_name */ @@ -2625,7 +2627,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).table_name_t)); } } -#line 2629 "parser.cpp" +#line 2631 "parser.cpp" break; case YYSYMBOL_table_alias: /* table_alias */ @@ -2634,7 +2636,7 @@ yydestruct (const char *yymsg, fprintf(stderr, "destroy table alias\n"); delete (((*yyvaluep).table_alias_t)); } -#line 2638 "parser.cpp" +#line 2640 "parser.cpp" break; case YYSYMBOL_with_clause: /* with_clause */ @@ -2648,7 +2650,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).with_expr_list_t)); } } -#line 2652 "parser.cpp" +#line 2654 "parser.cpp" break; case YYSYMBOL_with_expr_list: /* with_expr_list */ @@ -2662,7 +2664,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).with_expr_list_t)); } } -#line 2666 "parser.cpp" +#line 2668 "parser.cpp" break; case YYSYMBOL_with_expr: /* with_expr */ @@ -2672,7 +2674,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).with_expr_t)->select_; delete ((*yyvaluep).with_expr_t); } -#line 2676 "parser.cpp" +#line 2678 "parser.cpp" break; case YYSYMBOL_join_clause: /* join_clause */ @@ -2681,7 +2683,7 @@ yydestruct (const char *yymsg, fprintf(stderr, "destroy table reference\n"); delete (((*yyvaluep).table_reference_t)); } -#line 2685 "parser.cpp" +#line 2687 "parser.cpp" break; case YYSYMBOL_expr_array: /* expr_array */ @@ -2695,7 +2697,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).expr_array_t)); } } -#line 2699 "parser.cpp" +#line 2701 "parser.cpp" break; case YYSYMBOL_expr_array_list: /* expr_array_list */ @@ -2712,7 +2714,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).expr_array_list_t)); } } -#line 2716 "parser.cpp" +#line 2718 "parser.cpp" break; case YYSYMBOL_expr_alias: /* expr_alias */ @@ -2720,7 +2722,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2724 "parser.cpp" +#line 2726 "parser.cpp" break; case YYSYMBOL_expr: /* expr */ @@ -2728,7 +2730,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2732 "parser.cpp" +#line 2734 "parser.cpp" break; case YYSYMBOL_operand: /* operand */ @@ -2736,7 +2738,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2740 "parser.cpp" +#line 2742 "parser.cpp" break; case YYSYMBOL_extra_match_tensor_option: /* extra_match_tensor_option */ @@ -2744,7 +2746,7 @@ yydestruct (const char *yymsg, { free(((*yyvaluep).str_value)); } -#line 2748 "parser.cpp" +#line 2750 "parser.cpp" break; case YYSYMBOL_match_tensor_expr: /* match_tensor_expr */ @@ -2752,7 +2754,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2756 "parser.cpp" +#line 2758 "parser.cpp" break; case YYSYMBOL_match_vector_expr: /* match_vector_expr */ @@ -2760,7 +2762,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2764 "parser.cpp" +#line 2766 "parser.cpp" break; case YYSYMBOL_match_sparse_expr: /* match_sparse_expr */ @@ -2768,7 +2770,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2772 "parser.cpp" +#line 2774 "parser.cpp" break; case YYSYMBOL_match_text_expr: /* match_text_expr */ @@ -2776,7 +2778,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2780 "parser.cpp" +#line 2782 "parser.cpp" break; case YYSYMBOL_query_expr: /* query_expr */ @@ -2784,7 +2786,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2788 "parser.cpp" +#line 2790 "parser.cpp" break; case YYSYMBOL_fusion_expr: /* fusion_expr */ @@ -2792,7 +2794,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2796 "parser.cpp" +#line 2798 "parser.cpp" break; case YYSYMBOL_sub_search: /* sub_search */ @@ -2800,7 +2802,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2804 "parser.cpp" +#line 2806 "parser.cpp" break; case YYSYMBOL_sub_search_array: /* sub_search_array */ @@ -2814,7 +2816,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).expr_array_t)); } } -#line 2818 "parser.cpp" +#line 2820 "parser.cpp" break; case YYSYMBOL_function_expr: /* function_expr */ @@ -2822,7 +2824,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2826 "parser.cpp" +#line 2828 "parser.cpp" break; case YYSYMBOL_conjunction_expr: /* conjunction_expr */ @@ -2830,7 +2832,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2834 "parser.cpp" +#line 2836 "parser.cpp" break; case YYSYMBOL_between_expr: /* between_expr */ @@ -2838,7 +2840,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2842 "parser.cpp" +#line 2844 "parser.cpp" break; case YYSYMBOL_in_expr: /* in_expr */ @@ -2846,7 +2848,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2850 "parser.cpp" +#line 2852 "parser.cpp" break; case YYSYMBOL_case_expr: /* case_expr */ @@ -2854,7 +2856,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2858 "parser.cpp" +#line 2860 "parser.cpp" break; case YYSYMBOL_case_check_array: /* case_check_array */ @@ -2867,7 +2869,7 @@ yydestruct (const char *yymsg, } } } -#line 2871 "parser.cpp" +#line 2873 "parser.cpp" break; case YYSYMBOL_cast_expr: /* cast_expr */ @@ -2875,7 +2877,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2879 "parser.cpp" +#line 2881 "parser.cpp" break; case YYSYMBOL_subquery_expr: /* subquery_expr */ @@ -2883,7 +2885,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2887 "parser.cpp" +#line 2889 "parser.cpp" break; case YYSYMBOL_column_expr: /* column_expr */ @@ -2891,7 +2893,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2895 "parser.cpp" +#line 2897 "parser.cpp" break; case YYSYMBOL_constant_expr: /* constant_expr */ @@ -2899,7 +2901,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 2903 "parser.cpp" +#line 2905 "parser.cpp" break; case YYSYMBOL_common_array_expr: /* common_array_expr */ @@ -2907,7 +2909,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 2911 "parser.cpp" +#line 2913 "parser.cpp" break; case YYSYMBOL_common_sparse_array_expr: /* common_sparse_array_expr */ @@ -2915,7 +2917,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 2919 "parser.cpp" +#line 2921 "parser.cpp" break; case YYSYMBOL_subarray_array_expr: /* subarray_array_expr */ @@ -2923,7 +2925,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 2927 "parser.cpp" +#line 2929 "parser.cpp" break; case YYSYMBOL_unclosed_subarray_array_expr: /* unclosed_subarray_array_expr */ @@ -2931,7 +2933,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 2935 "parser.cpp" +#line 2937 "parser.cpp" break; case YYSYMBOL_sparse_array_expr: /* sparse_array_expr */ @@ -2939,7 +2941,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 2943 "parser.cpp" +#line 2945 "parser.cpp" break; case YYSYMBOL_long_sparse_array_expr: /* long_sparse_array_expr */ @@ -2947,7 +2949,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 2951 "parser.cpp" +#line 2953 "parser.cpp" break; case YYSYMBOL_unclosed_long_sparse_array_expr: /* unclosed_long_sparse_array_expr */ @@ -2955,7 +2957,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 2959 "parser.cpp" +#line 2961 "parser.cpp" break; case YYSYMBOL_double_sparse_array_expr: /* double_sparse_array_expr */ @@ -2963,7 +2965,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 2967 "parser.cpp" +#line 2969 "parser.cpp" break; case YYSYMBOL_unclosed_double_sparse_array_expr: /* unclosed_double_sparse_array_expr */ @@ -2971,7 +2973,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 2975 "parser.cpp" +#line 2977 "parser.cpp" break; case YYSYMBOL_empty_array_expr: /* empty_array_expr */ @@ -2979,7 +2981,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 2983 "parser.cpp" +#line 2985 "parser.cpp" break; case YYSYMBOL_int_sparse_ele: /* int_sparse_ele */ @@ -2987,7 +2989,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).int_sparse_ele_t)); } -#line 2991 "parser.cpp" +#line 2993 "parser.cpp" break; case YYSYMBOL_float_sparse_ele: /* float_sparse_ele */ @@ -2995,7 +2997,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).float_sparse_ele_t)); } -#line 2999 "parser.cpp" +#line 3001 "parser.cpp" break; case YYSYMBOL_array_expr: /* array_expr */ @@ -3003,7 +3005,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 3007 "parser.cpp" +#line 3009 "parser.cpp" break; case YYSYMBOL_long_array_expr: /* long_array_expr */ @@ -3011,7 +3013,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 3015 "parser.cpp" +#line 3017 "parser.cpp" break; case YYSYMBOL_unclosed_long_array_expr: /* unclosed_long_array_expr */ @@ -3019,7 +3021,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 3023 "parser.cpp" +#line 3025 "parser.cpp" break; case YYSYMBOL_double_array_expr: /* double_array_expr */ @@ -3027,7 +3029,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 3031 "parser.cpp" +#line 3033 "parser.cpp" break; case YYSYMBOL_unclosed_double_array_expr: /* unclosed_double_array_expr */ @@ -3035,7 +3037,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 3039 "parser.cpp" +#line 3041 "parser.cpp" break; case YYSYMBOL_interval_expr: /* interval_expr */ @@ -3043,7 +3045,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 3047 "parser.cpp" +#line 3049 "parser.cpp" break; case YYSYMBOL_file_path: /* file_path */ @@ -3051,7 +3053,7 @@ yydestruct (const char *yymsg, { free(((*yyvaluep).str_value)); } -#line 3055 "parser.cpp" +#line 3057 "parser.cpp" break; case YYSYMBOL_if_not_exists_info: /* if_not_exists_info */ @@ -3062,7 +3064,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).if_not_exists_info_t)); } } -#line 3066 "parser.cpp" +#line 3068 "parser.cpp" break; case YYSYMBOL_with_index_param_list: /* with_index_param_list */ @@ -3076,7 +3078,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).with_index_param_list_t)); } } -#line 3080 "parser.cpp" +#line 3082 "parser.cpp" break; case YYSYMBOL_optional_table_properties_list: /* optional_table_properties_list */ @@ -3090,7 +3092,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).with_index_param_list_t)); } } -#line 3094 "parser.cpp" +#line 3096 "parser.cpp" break; case YYSYMBOL_index_info: /* index_info */ @@ -3101,7 +3103,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).index_info_t)); } } -#line 3105 "parser.cpp" +#line 3107 "parser.cpp" break; default: @@ -3209,7 +3211,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.string_length = 0; } -#line 3213 "parser.cpp" +#line 3215 "parser.cpp" yylsp[0] = yylloc; goto yysetstate; @@ -3424,7 +3426,7 @@ YYLTYPE yylloc = yyloc_default; { result->statements_ptr_ = (yyvsp[-1].stmt_array); } -#line 3428 "parser.cpp" +#line 3430 "parser.cpp" break; case 3: /* statement_list: statement */ @@ -3435,7 +3437,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.stmt_array) = new std::vector(); (yyval.stmt_array)->push_back((yyvsp[0].base_stmt)); } -#line 3439 "parser.cpp" +#line 3441 "parser.cpp" break; case 4: /* statement_list: statement_list ';' statement */ @@ -3446,163 +3448,163 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-2].stmt_array)->push_back((yyvsp[0].base_stmt)); (yyval.stmt_array) = (yyvsp[-2].stmt_array); } -#line 3450 "parser.cpp" +#line 3452 "parser.cpp" break; case 5: /* statement: create_statement */ #line 511 "parser.y" { (yyval.base_stmt) = (yyvsp[0].create_stmt); } -#line 3456 "parser.cpp" +#line 3458 "parser.cpp" break; case 6: /* statement: drop_statement */ #line 512 "parser.y" { (yyval.base_stmt) = (yyvsp[0].drop_stmt); } -#line 3462 "parser.cpp" +#line 3464 "parser.cpp" break; case 7: /* statement: copy_statement */ #line 513 "parser.y" { (yyval.base_stmt) = (yyvsp[0].copy_stmt); } -#line 3468 "parser.cpp" +#line 3470 "parser.cpp" break; case 8: /* statement: show_statement */ #line 514 "parser.y" { (yyval.base_stmt) = (yyvsp[0].show_stmt); } -#line 3474 "parser.cpp" +#line 3476 "parser.cpp" break; case 9: /* statement: select_statement */ #line 515 "parser.y" { (yyval.base_stmt) = (yyvsp[0].select_stmt); } -#line 3480 "parser.cpp" +#line 3482 "parser.cpp" break; case 10: /* statement: delete_statement */ #line 516 "parser.y" { (yyval.base_stmt) = (yyvsp[0].delete_stmt); } -#line 3486 "parser.cpp" +#line 3488 "parser.cpp" break; case 11: /* statement: update_statement */ #line 517 "parser.y" { (yyval.base_stmt) = (yyvsp[0].update_stmt); } -#line 3492 "parser.cpp" +#line 3494 "parser.cpp" break; case 12: /* statement: insert_statement */ #line 518 "parser.y" { (yyval.base_stmt) = (yyvsp[0].insert_stmt); } -#line 3498 "parser.cpp" +#line 3500 "parser.cpp" break; case 13: /* statement: explain_statement */ #line 519 "parser.y" { (yyval.base_stmt) = (yyvsp[0].explain_stmt); } -#line 3504 "parser.cpp" +#line 3506 "parser.cpp" break; case 14: /* statement: flush_statement */ #line 520 "parser.y" { (yyval.base_stmt) = (yyvsp[0].flush_stmt); } -#line 3510 "parser.cpp" +#line 3512 "parser.cpp" break; case 15: /* statement: optimize_statement */ #line 521 "parser.y" { (yyval.base_stmt) = (yyvsp[0].optimize_stmt); } -#line 3516 "parser.cpp" +#line 3518 "parser.cpp" break; case 16: /* statement: command_statement */ #line 522 "parser.y" { (yyval.base_stmt) = (yyvsp[0].command_stmt); } -#line 3522 "parser.cpp" +#line 3524 "parser.cpp" break; case 17: /* statement: compact_statement */ #line 523 "parser.y" { (yyval.base_stmt) = (yyvsp[0].compact_stmt); } -#line 3528 "parser.cpp" +#line 3530 "parser.cpp" break; case 18: /* statement: admin_statement */ #line 524 "parser.y" { (yyval.base_stmt) = (yyvsp[0].admin_stmt); } -#line 3534 "parser.cpp" +#line 3536 "parser.cpp" break; case 19: /* explainable_statement: create_statement */ #line 526 "parser.y" { (yyval.base_stmt) = (yyvsp[0].create_stmt); } -#line 3540 "parser.cpp" +#line 3542 "parser.cpp" break; case 20: /* explainable_statement: drop_statement */ #line 527 "parser.y" { (yyval.base_stmt) = (yyvsp[0].drop_stmt); } -#line 3546 "parser.cpp" +#line 3548 "parser.cpp" break; case 21: /* explainable_statement: copy_statement */ #line 528 "parser.y" { (yyval.base_stmt) = (yyvsp[0].copy_stmt); } -#line 3552 "parser.cpp" +#line 3554 "parser.cpp" break; case 22: /* explainable_statement: show_statement */ #line 529 "parser.y" { (yyval.base_stmt) = (yyvsp[0].show_stmt); } -#line 3558 "parser.cpp" +#line 3560 "parser.cpp" break; case 23: /* explainable_statement: select_statement */ #line 530 "parser.y" { (yyval.base_stmt) = (yyvsp[0].select_stmt); } -#line 3564 "parser.cpp" +#line 3566 "parser.cpp" break; case 24: /* explainable_statement: delete_statement */ #line 531 "parser.y" { (yyval.base_stmt) = (yyvsp[0].delete_stmt); } -#line 3570 "parser.cpp" +#line 3572 "parser.cpp" break; case 25: /* explainable_statement: update_statement */ #line 532 "parser.y" { (yyval.base_stmt) = (yyvsp[0].update_stmt); } -#line 3576 "parser.cpp" +#line 3578 "parser.cpp" break; case 26: /* explainable_statement: insert_statement */ #line 533 "parser.y" { (yyval.base_stmt) = (yyvsp[0].insert_stmt); } -#line 3582 "parser.cpp" +#line 3584 "parser.cpp" break; case 27: /* explainable_statement: flush_statement */ #line 534 "parser.y" { (yyval.base_stmt) = (yyvsp[0].flush_stmt); } -#line 3588 "parser.cpp" +#line 3590 "parser.cpp" break; case 28: /* explainable_statement: optimize_statement */ #line 535 "parser.y" { (yyval.base_stmt) = (yyvsp[0].optimize_stmt); } -#line 3594 "parser.cpp" +#line 3596 "parser.cpp" break; case 29: /* explainable_statement: command_statement */ #line 536 "parser.y" { (yyval.base_stmt) = (yyvsp[0].command_stmt); } -#line 3600 "parser.cpp" +#line 3602 "parser.cpp" break; case 30: /* explainable_statement: compact_statement */ #line 537 "parser.y" { (yyval.base_stmt) = (yyvsp[0].compact_stmt); } -#line 3606 "parser.cpp" +#line 3608 "parser.cpp" break; case 31: /* create_statement: CREATE DATABASE if_not_exists IDENTIFIER */ @@ -3622,7 +3624,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 3626 "parser.cpp" +#line 3628 "parser.cpp" break; case 32: /* create_statement: CREATE COLLECTION if_not_exists table_name */ @@ -3640,7 +3642,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 3644 "parser.cpp" +#line 3646 "parser.cpp" break; case 33: /* create_statement: CREATE TABLE if_not_exists table_name '(' table_element_array ')' optional_table_properties_list */ @@ -3673,7 +3675,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 3677 "parser.cpp" +#line 3679 "parser.cpp" break; case 34: /* create_statement: CREATE TABLE if_not_exists table_name AS select_statement */ @@ -3693,7 +3695,7 @@ YYLTYPE yylloc = yyloc_default; create_table_info->select_ = (yyvsp[0].select_stmt); (yyval.create_stmt)->create_info_ = create_table_info; } -#line 3697 "parser.cpp" +#line 3699 "parser.cpp" break; case 35: /* create_statement: CREATE VIEW if_not_exists table_name optional_identifier_array AS select_statement */ @@ -3714,7 +3716,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 3718 "parser.cpp" +#line 3720 "parser.cpp" break; case 36: /* create_statement: CREATE INDEX if_not_exists_info ON table_name index_info */ @@ -3747,7 +3749,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt) = new infinity::CreateStatement(); (yyval.create_stmt)->create_info_ = create_index_info; } -#line 3751 "parser.cpp" +#line 3753 "parser.cpp" break; case 37: /* table_element_array: table_element */ @@ -3756,7 +3758,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 3760 "parser.cpp" +#line 3762 "parser.cpp" break; case 38: /* table_element_array: table_element_array ',' table_element */ @@ -3765,7 +3767,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 3769 "parser.cpp" +#line 3771 "parser.cpp" break; case 39: /* table_element: table_column */ @@ -3773,7 +3775,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.table_element_t) = (yyvsp[0].table_column_t); } -#line 3777 "parser.cpp" +#line 3779 "parser.cpp" break; case 40: /* table_element: table_constraint */ @@ -3781,7 +3783,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.table_element_t) = (yyvsp[0].table_constraint_t); } -#line 3785 "parser.cpp" +#line 3787 "parser.cpp" break; case 41: /* table_column: IDENTIFIER column_type with_index_param_list default_expr */ @@ -3837,7 +3839,7 @@ YYLTYPE yylloc = yyloc_default; } */ } -#line 3841 "parser.cpp" +#line 3843 "parser.cpp" break; case 42: /* table_column: IDENTIFIER column_type column_constraints default_expr */ @@ -3879,559 +3881,559 @@ YYLTYPE yylloc = yyloc_default; } */ } -#line 3883 "parser.cpp" +#line 3885 "parser.cpp" break; case 43: /* column_type: BOOLEAN */ #line 779 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kBoolean, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3889 "parser.cpp" +#line 3891 "parser.cpp" break; case 44: /* column_type: TINYINT */ #line 780 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTinyInt, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3895 "parser.cpp" +#line 3897 "parser.cpp" break; case 45: /* column_type: SMALLINT */ #line 781 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kSmallInt, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3901 "parser.cpp" +#line 3903 "parser.cpp" break; case 46: /* column_type: INTEGER */ #line 782 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kInteger, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3907 "parser.cpp" +#line 3909 "parser.cpp" break; case 47: /* column_type: INT */ #line 783 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kInteger, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3913 "parser.cpp" +#line 3915 "parser.cpp" break; case 48: /* column_type: BIGINT */ #line 784 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kBigInt, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3919 "parser.cpp" +#line 3921 "parser.cpp" break; case 49: /* column_type: HUGEINT */ #line 785 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kHugeInt, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3925 "parser.cpp" +#line 3927 "parser.cpp" break; case 50: /* column_type: FLOAT */ #line 786 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kFloat, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3931 "parser.cpp" +#line 3933 "parser.cpp" break; case 51: /* column_type: REAL */ #line 787 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kFloat, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3937 "parser.cpp" +#line 3939 "parser.cpp" break; case 52: /* column_type: DOUBLE */ #line 788 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kDouble, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3943 "parser.cpp" +#line 3945 "parser.cpp" break; case 53: /* column_type: FLOAT16 */ #line 789 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kFloat16, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3949 "parser.cpp" +#line 3951 "parser.cpp" break; case 54: /* column_type: BFLOAT16 */ #line 790 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kBFloat16, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3955 "parser.cpp" +#line 3957 "parser.cpp" break; case 55: /* column_type: DATE */ #line 791 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kDate, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3961 "parser.cpp" +#line 3963 "parser.cpp" break; case 56: /* column_type: TIME */ #line 792 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTime, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3967 "parser.cpp" +#line 3969 "parser.cpp" break; case 57: /* column_type: DATETIME */ #line 793 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kDateTime, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3973 "parser.cpp" +#line 3975 "parser.cpp" break; case 58: /* column_type: TIMESTAMP */ #line 794 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTimestamp, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3979 "parser.cpp" +#line 3981 "parser.cpp" break; case 59: /* column_type: UUID */ #line 795 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kUuid, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3985 "parser.cpp" +#line 3987 "parser.cpp" break; case 60: /* column_type: POINT */ #line 796 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kPoint, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3991 "parser.cpp" +#line 3993 "parser.cpp" break; case 61: /* column_type: LINE */ #line 797 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kLine, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 3997 "parser.cpp" +#line 3999 "parser.cpp" break; case 62: /* column_type: LSEG */ #line 798 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kLineSeg, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4003 "parser.cpp" +#line 4005 "parser.cpp" break; case 63: /* column_type: BOX */ #line 799 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kBox, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4009 "parser.cpp" +#line 4011 "parser.cpp" break; case 64: /* column_type: CIRCLE */ #line 802 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kCircle, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4015 "parser.cpp" +#line 4017 "parser.cpp" break; case 65: /* column_type: VARCHAR */ #line 804 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kVarchar, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4021 "parser.cpp" +#line 4023 "parser.cpp" break; case 66: /* column_type: DECIMAL '(' LONG_VALUE ',' LONG_VALUE ')' */ #line 805 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kDecimal, 0, (yyvsp[-3].long_value), (yyvsp[-1].long_value), infinity::EmbeddingDataType::kElemInvalid}; } -#line 4027 "parser.cpp" +#line 4029 "parser.cpp" break; case 67: /* column_type: DECIMAL '(' LONG_VALUE ')' */ #line 806 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kDecimal, 0, (yyvsp[-1].long_value), 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4033 "parser.cpp" +#line 4035 "parser.cpp" break; case 68: /* column_type: DECIMAL */ #line 807 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kDecimal, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4039 "parser.cpp" +#line 4041 "parser.cpp" break; case 69: /* column_type: EMBEDDING '(' BIT ',' LONG_VALUE ')' */ #line 810 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemBit}; } -#line 4045 "parser.cpp" +#line 4047 "parser.cpp" break; case 70: /* column_type: EMBEDDING '(' TINYINT ',' LONG_VALUE ')' */ #line 811 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt8}; } -#line 4051 "parser.cpp" +#line 4053 "parser.cpp" break; case 71: /* column_type: EMBEDDING '(' SMALLINT ',' LONG_VALUE ')' */ #line 812 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt16}; } -#line 4057 "parser.cpp" +#line 4059 "parser.cpp" break; case 72: /* column_type: EMBEDDING '(' INTEGER ',' LONG_VALUE ')' */ #line 813 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt32}; } -#line 4063 "parser.cpp" +#line 4065 "parser.cpp" break; case 73: /* column_type: EMBEDDING '(' INT ',' LONG_VALUE ')' */ #line 814 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt32}; } -#line 4069 "parser.cpp" +#line 4071 "parser.cpp" break; case 74: /* column_type: EMBEDDING '(' BIGINT ',' LONG_VALUE ')' */ #line 815 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt64}; } -#line 4075 "parser.cpp" +#line 4077 "parser.cpp" break; case 75: /* column_type: EMBEDDING '(' FLOAT ',' LONG_VALUE ')' */ #line 816 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemFloat}; } -#line 4081 "parser.cpp" +#line 4083 "parser.cpp" break; case 76: /* column_type: EMBEDDING '(' DOUBLE ',' LONG_VALUE ')' */ #line 817 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemDouble}; } -#line 4087 "parser.cpp" +#line 4089 "parser.cpp" break; case 77: /* column_type: EMBEDDING '(' FLOAT16 ',' LONG_VALUE ')' */ #line 818 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemFloat16}; } -#line 4093 "parser.cpp" +#line 4095 "parser.cpp" break; case 78: /* column_type: EMBEDDING '(' BFLOAT16 ',' LONG_VALUE ')' */ #line 819 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemBFloat16}; } -#line 4099 "parser.cpp" +#line 4101 "parser.cpp" break; case 79: /* column_type: EMBEDDING '(' UNSIGNED TINYINT ',' LONG_VALUE ')' */ #line 820 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemUInt8}; } -#line 4105 "parser.cpp" +#line 4107 "parser.cpp" break; case 80: /* column_type: MULTIVECTOR '(' BIT ',' LONG_VALUE ')' */ #line 821 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kMultiVector, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemBit}; } -#line 4111 "parser.cpp" +#line 4113 "parser.cpp" break; case 81: /* column_type: MULTIVECTOR '(' TINYINT ',' LONG_VALUE ')' */ #line 822 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kMultiVector, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt8}; } -#line 4117 "parser.cpp" +#line 4119 "parser.cpp" break; case 82: /* column_type: MULTIVECTOR '(' SMALLINT ',' LONG_VALUE ')' */ #line 823 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kMultiVector, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt16}; } -#line 4123 "parser.cpp" +#line 4125 "parser.cpp" break; case 83: /* column_type: MULTIVECTOR '(' INTEGER ',' LONG_VALUE ')' */ #line 824 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kMultiVector, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt32}; } -#line 4129 "parser.cpp" +#line 4131 "parser.cpp" break; case 84: /* column_type: MULTIVECTOR '(' INT ',' LONG_VALUE ')' */ #line 825 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kMultiVector, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt32}; } -#line 4135 "parser.cpp" +#line 4137 "parser.cpp" break; case 85: /* column_type: MULTIVECTOR '(' BIGINT ',' LONG_VALUE ')' */ #line 826 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kMultiVector, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt64}; } -#line 4141 "parser.cpp" +#line 4143 "parser.cpp" break; case 86: /* column_type: MULTIVECTOR '(' FLOAT ',' LONG_VALUE ')' */ #line 827 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kMultiVector, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemFloat}; } -#line 4147 "parser.cpp" +#line 4149 "parser.cpp" break; case 87: /* column_type: MULTIVECTOR '(' DOUBLE ',' LONG_VALUE ')' */ #line 828 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kMultiVector, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemDouble}; } -#line 4153 "parser.cpp" +#line 4155 "parser.cpp" break; case 88: /* column_type: MULTIVECTOR '(' FLOAT16 ',' LONG_VALUE ')' */ #line 829 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kMultiVector, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemFloat16}; } -#line 4159 "parser.cpp" +#line 4161 "parser.cpp" break; case 89: /* column_type: MULTIVECTOR '(' BFLOAT16 ',' LONG_VALUE ')' */ #line 830 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kMultiVector, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemBFloat16}; } -#line 4165 "parser.cpp" +#line 4167 "parser.cpp" break; case 90: /* column_type: MULTIVECTOR '(' UNSIGNED TINYINT ',' LONG_VALUE ')' */ #line 831 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kMultiVector, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemUInt8}; } -#line 4171 "parser.cpp" +#line 4173 "parser.cpp" break; case 91: /* column_type: TENSOR '(' BIT ',' LONG_VALUE ')' */ #line 832 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemBit}; } -#line 4177 "parser.cpp" +#line 4179 "parser.cpp" break; case 92: /* column_type: TENSOR '(' TINYINT ',' LONG_VALUE ')' */ #line 833 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt8}; } -#line 4183 "parser.cpp" +#line 4185 "parser.cpp" break; case 93: /* column_type: TENSOR '(' SMALLINT ',' LONG_VALUE ')' */ #line 834 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt16}; } -#line 4189 "parser.cpp" +#line 4191 "parser.cpp" break; case 94: /* column_type: TENSOR '(' INTEGER ',' LONG_VALUE ')' */ #line 835 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt32}; } -#line 4195 "parser.cpp" +#line 4197 "parser.cpp" break; case 95: /* column_type: TENSOR '(' INT ',' LONG_VALUE ')' */ #line 836 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt32}; } -#line 4201 "parser.cpp" +#line 4203 "parser.cpp" break; case 96: /* column_type: TENSOR '(' BIGINT ',' LONG_VALUE ')' */ #line 837 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt64}; } -#line 4207 "parser.cpp" +#line 4209 "parser.cpp" break; case 97: /* column_type: TENSOR '(' FLOAT ',' LONG_VALUE ')' */ #line 838 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemFloat}; } -#line 4213 "parser.cpp" +#line 4215 "parser.cpp" break; case 98: /* column_type: TENSOR '(' DOUBLE ',' LONG_VALUE ')' */ #line 839 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemDouble}; } -#line 4219 "parser.cpp" +#line 4221 "parser.cpp" break; case 99: /* column_type: TENSOR '(' FLOAT16 ',' LONG_VALUE ')' */ #line 840 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemFloat16}; } -#line 4225 "parser.cpp" +#line 4227 "parser.cpp" break; case 100: /* column_type: TENSOR '(' BFLOAT16 ',' LONG_VALUE ')' */ #line 841 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemBFloat16}; } -#line 4231 "parser.cpp" +#line 4233 "parser.cpp" break; case 101: /* column_type: TENSOR '(' UNSIGNED TINYINT ',' LONG_VALUE ')' */ #line 842 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemUInt8}; } -#line 4237 "parser.cpp" +#line 4239 "parser.cpp" break; case 102: /* column_type: TENSORARRAY '(' BIT ',' LONG_VALUE ')' */ #line 843 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensorArray, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemBit}; } -#line 4243 "parser.cpp" +#line 4245 "parser.cpp" break; case 103: /* column_type: TENSORARRAY '(' TINYINT ',' LONG_VALUE ')' */ #line 844 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensorArray, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt8}; } -#line 4249 "parser.cpp" +#line 4251 "parser.cpp" break; case 104: /* column_type: TENSORARRAY '(' SMALLINT ',' LONG_VALUE ')' */ #line 845 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensorArray, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt16}; } -#line 4255 "parser.cpp" +#line 4257 "parser.cpp" break; case 105: /* column_type: TENSORARRAY '(' INTEGER ',' LONG_VALUE ')' */ #line 846 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensorArray, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt32}; } -#line 4261 "parser.cpp" +#line 4263 "parser.cpp" break; case 106: /* column_type: TENSORARRAY '(' INT ',' LONG_VALUE ')' */ #line 847 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensorArray, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt32}; } -#line 4267 "parser.cpp" +#line 4269 "parser.cpp" break; case 107: /* column_type: TENSORARRAY '(' BIGINT ',' LONG_VALUE ')' */ #line 848 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensorArray, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt64}; } -#line 4273 "parser.cpp" +#line 4275 "parser.cpp" break; case 108: /* column_type: TENSORARRAY '(' FLOAT ',' LONG_VALUE ')' */ #line 849 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensorArray, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemFloat}; } -#line 4279 "parser.cpp" +#line 4281 "parser.cpp" break; case 109: /* column_type: TENSORARRAY '(' DOUBLE ',' LONG_VALUE ')' */ #line 850 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensorArray, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemDouble}; } -#line 4285 "parser.cpp" +#line 4287 "parser.cpp" break; case 110: /* column_type: TENSORARRAY '(' FLOAT16 ',' LONG_VALUE ')' */ #line 851 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensorArray, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemFloat16}; } -#line 4291 "parser.cpp" +#line 4293 "parser.cpp" break; case 111: /* column_type: TENSORARRAY '(' BFLOAT16 ',' LONG_VALUE ')' */ #line 852 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensorArray, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemBFloat16}; } -#line 4297 "parser.cpp" +#line 4299 "parser.cpp" break; case 112: /* column_type: TENSORARRAY '(' UNSIGNED TINYINT ',' LONG_VALUE ')' */ #line 853 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensorArray, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemUInt8}; } -#line 4303 "parser.cpp" +#line 4305 "parser.cpp" break; case 113: /* column_type: VECTOR '(' BIT ',' LONG_VALUE ')' */ #line 854 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemBit}; } -#line 4309 "parser.cpp" +#line 4311 "parser.cpp" break; case 114: /* column_type: VECTOR '(' TINYINT ',' LONG_VALUE ')' */ #line 855 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt8}; } -#line 4315 "parser.cpp" +#line 4317 "parser.cpp" break; case 115: /* column_type: VECTOR '(' SMALLINT ',' LONG_VALUE ')' */ #line 856 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt16}; } -#line 4321 "parser.cpp" +#line 4323 "parser.cpp" break; case 116: /* column_type: VECTOR '(' INTEGER ',' LONG_VALUE ')' */ #line 857 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt32}; } -#line 4327 "parser.cpp" +#line 4329 "parser.cpp" break; case 117: /* column_type: VECTOR '(' INT ',' LONG_VALUE ')' */ #line 858 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt32}; } -#line 4333 "parser.cpp" +#line 4335 "parser.cpp" break; case 118: /* column_type: VECTOR '(' BIGINT ',' LONG_VALUE ')' */ #line 859 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt64}; } -#line 4339 "parser.cpp" +#line 4341 "parser.cpp" break; case 119: /* column_type: VECTOR '(' FLOAT ',' LONG_VALUE ')' */ #line 860 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemFloat}; } -#line 4345 "parser.cpp" +#line 4347 "parser.cpp" break; case 120: /* column_type: VECTOR '(' DOUBLE ',' LONG_VALUE ')' */ #line 861 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemDouble}; } -#line 4351 "parser.cpp" +#line 4353 "parser.cpp" break; case 121: /* column_type: VECTOR '(' FLOAT16 ',' LONG_VALUE ')' */ #line 862 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemFloat16}; } -#line 4357 "parser.cpp" +#line 4359 "parser.cpp" break; case 122: /* column_type: VECTOR '(' BFLOAT16 ',' LONG_VALUE ')' */ #line 863 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemBFloat16}; } -#line 4363 "parser.cpp" +#line 4365 "parser.cpp" break; case 123: /* column_type: VECTOR '(' UNSIGNED TINYINT ',' LONG_VALUE ')' */ #line 864 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemUInt8}; } -#line 4369 "parser.cpp" +#line 4371 "parser.cpp" break; case 124: /* column_type: SPARSE '(' BIT ',' LONG_VALUE ')' */ #line 865 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kSparse, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemBit}; } -#line 4375 "parser.cpp" +#line 4377 "parser.cpp" break; case 125: /* column_type: SPARSE '(' TINYINT ',' LONG_VALUE ')' */ #line 866 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kSparse, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt8}; } -#line 4381 "parser.cpp" +#line 4383 "parser.cpp" break; case 126: /* column_type: SPARSE '(' SMALLINT ',' LONG_VALUE ')' */ #line 867 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kSparse, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt16}; } -#line 4387 "parser.cpp" +#line 4389 "parser.cpp" break; case 127: /* column_type: SPARSE '(' INTEGER ',' LONG_VALUE ')' */ #line 868 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kSparse, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt32}; } -#line 4393 "parser.cpp" +#line 4395 "parser.cpp" break; case 128: /* column_type: SPARSE '(' INT ',' LONG_VALUE ')' */ #line 869 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kSparse, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt32}; } -#line 4399 "parser.cpp" +#line 4401 "parser.cpp" break; case 129: /* column_type: SPARSE '(' BIGINT ',' LONG_VALUE ')' */ #line 870 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kSparse, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt64}; } -#line 4405 "parser.cpp" +#line 4407 "parser.cpp" break; case 130: /* column_type: SPARSE '(' FLOAT ',' LONG_VALUE ')' */ #line 871 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kSparse, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemFloat}; } -#line 4411 "parser.cpp" +#line 4413 "parser.cpp" break; case 131: /* column_type: SPARSE '(' DOUBLE ',' LONG_VALUE ')' */ #line 872 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kSparse, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemDouble}; } -#line 4417 "parser.cpp" +#line 4419 "parser.cpp" break; case 132: /* column_type: SPARSE '(' FLOAT16 ',' LONG_VALUE ')' */ #line 873 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kSparse, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemFloat16}; } -#line 4423 "parser.cpp" +#line 4425 "parser.cpp" break; case 133: /* column_type: SPARSE '(' BFLOAT16 ',' LONG_VALUE ')' */ #line 874 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kSparse, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemBFloat16}; } -#line 4429 "parser.cpp" +#line 4431 "parser.cpp" break; case 134: /* column_type: SPARSE '(' UNSIGNED TINYINT ',' LONG_VALUE ')' */ #line 875 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kSparse, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemUInt8}; } -#line 4435 "parser.cpp" +#line 4437 "parser.cpp" break; case 135: /* column_constraints: column_constraint */ @@ -4440,7 +4442,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.column_constraints_t) = new std::set(); (yyval.column_constraints_t)->insert((yyvsp[0].column_constraint_t)); } -#line 4444 "parser.cpp" +#line 4446 "parser.cpp" break; case 136: /* column_constraints: column_constraints column_constraint */ @@ -4454,7 +4456,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 4458 "parser.cpp" +#line 4460 "parser.cpp" break; case 137: /* column_constraint: PRIMARY KEY */ @@ -4462,7 +4464,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.column_constraint_t) = infinity::ConstraintType::kPrimaryKey; } -#line 4466 "parser.cpp" +#line 4468 "parser.cpp" break; case 138: /* column_constraint: UNIQUE */ @@ -4470,7 +4472,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.column_constraint_t) = infinity::ConstraintType::kUnique; } -#line 4474 "parser.cpp" +#line 4476 "parser.cpp" break; case 139: /* column_constraint: NULLABLE */ @@ -4478,7 +4480,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.column_constraint_t) = infinity::ConstraintType::kNull; } -#line 4482 "parser.cpp" +#line 4484 "parser.cpp" break; case 140: /* column_constraint: NOT NULLABLE */ @@ -4486,7 +4488,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.column_constraint_t) = infinity::ConstraintType::kNotNull; } -#line 4490 "parser.cpp" +#line 4492 "parser.cpp" break; case 141: /* default_expr: DEFAULT constant_expr */ @@ -4494,7 +4496,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 4498 "parser.cpp" +#line 4500 "parser.cpp" break; case 142: /* default_expr: %empty */ @@ -4502,7 +4504,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.const_expr_t) = nullptr; } -#line 4506 "parser.cpp" +#line 4508 "parser.cpp" break; case 143: /* table_constraint: PRIMARY KEY '(' identifier_array ')' */ @@ -4512,7 +4514,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 4516 "parser.cpp" +#line 4518 "parser.cpp" break; case 144: /* table_constraint: UNIQUE '(' identifier_array ')' */ @@ -4522,7 +4524,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 4526 "parser.cpp" +#line 4528 "parser.cpp" break; case 145: /* identifier_array: IDENTIFIER */ @@ -4533,7 +4535,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.identifier_array_t)->emplace_back((yyvsp[0].str_value)); free((yyvsp[0].str_value)); } -#line 4537 "parser.cpp" +#line 4539 "parser.cpp" break; case 146: /* identifier_array: identifier_array ',' IDENTIFIER */ @@ -4544,7 +4546,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[0].str_value)); (yyval.identifier_array_t) = (yyvsp[-2].identifier_array_t); } -#line 4548 "parser.cpp" +#line 4550 "parser.cpp" break; case 147: /* delete_statement: DELETE FROM table_name where_clause */ @@ -4561,7 +4563,7 @@ YYLTYPE yylloc = yyloc_default; delete (yyvsp[-1].table_name_t); (yyval.delete_stmt)->where_expr_ = (yyvsp[0].expr_t); } -#line 4565 "parser.cpp" +#line 4567 "parser.cpp" break; case 148: /* insert_statement: INSERT INTO table_name optional_identifier_array VALUES expr_array_list */ @@ -4600,7 +4602,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 4604 "parser.cpp" +#line 4606 "parser.cpp" break; case 149: /* insert_statement: INSERT INTO table_name optional_identifier_array select_without_paren */ @@ -4617,7 +4619,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns_ = (yyvsp[-1].identifier_array_t); (yyval.insert_stmt)->select_ = (yyvsp[0].select_stmt); } -#line 4621 "parser.cpp" +#line 4623 "parser.cpp" break; case 150: /* optional_identifier_array: '(' identifier_array ')' */ @@ -4625,7 +4627,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.identifier_array_t) = (yyvsp[-1].identifier_array_t); } -#line 4629 "parser.cpp" +#line 4631 "parser.cpp" break; case 151: /* optional_identifier_array: %empty */ @@ -4633,7 +4635,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.identifier_array_t) = nullptr; } -#line 4637 "parser.cpp" +#line 4639 "parser.cpp" break; case 152: /* explain_statement: EXPLAIN explain_type explainable_statement */ @@ -4643,7 +4645,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.explain_stmt)->type_ = (yyvsp[-1].explain_type_t); (yyval.explain_stmt)->statement_ = (yyvsp[0].base_stmt); } -#line 4647 "parser.cpp" +#line 4649 "parser.cpp" break; case 153: /* explain_type: ANALYZE */ @@ -4651,7 +4653,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.explain_type_t) = infinity::ExplainType::kAnalyze; } -#line 4655 "parser.cpp" +#line 4657 "parser.cpp" break; case 154: /* explain_type: AST */ @@ -4659,7 +4661,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.explain_type_t) = infinity::ExplainType::kAst; } -#line 4663 "parser.cpp" +#line 4665 "parser.cpp" break; case 155: /* explain_type: RAW */ @@ -4667,7 +4669,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.explain_type_t) = infinity::ExplainType::kUnOpt; } -#line 4671 "parser.cpp" +#line 4673 "parser.cpp" break; case 156: /* explain_type: LOGICAL */ @@ -4675,7 +4677,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.explain_type_t) = infinity::ExplainType::kOpt; } -#line 4679 "parser.cpp" +#line 4681 "parser.cpp" break; case 157: /* explain_type: PHYSICAL */ @@ -4683,7 +4685,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.explain_type_t) = infinity::ExplainType::kPhysical; } -#line 4687 "parser.cpp" +#line 4689 "parser.cpp" break; case 158: /* explain_type: PIPELINE */ @@ -4691,7 +4693,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.explain_type_t) = infinity::ExplainType::kPipeline; } -#line 4695 "parser.cpp" +#line 4697 "parser.cpp" break; case 159: /* explain_type: FRAGMENT */ @@ -4699,7 +4701,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.explain_type_t) = infinity::ExplainType::kFragment; } -#line 4703 "parser.cpp" +#line 4705 "parser.cpp" break; case 160: /* explain_type: %empty */ @@ -4707,7 +4709,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.explain_type_t) = infinity::ExplainType::kPhysical; } -#line 4711 "parser.cpp" +#line 4713 "parser.cpp" break; case 161: /* update_statement: UPDATE table_name SET update_expr_array where_clause */ @@ -4724,7 +4726,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 4728 "parser.cpp" +#line 4730 "parser.cpp" break; case 162: /* update_expr_array: update_expr */ @@ -4733,7 +4735,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 4737 "parser.cpp" +#line 4739 "parser.cpp" break; case 163: /* update_expr_array: update_expr_array ',' update_expr */ @@ -4742,7 +4744,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 4746 "parser.cpp" +#line 4748 "parser.cpp" break; case 164: /* update_expr: IDENTIFIER '=' expr */ @@ -4754,7 +4756,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-2].str_value)); (yyval.update_expr_t)->value = (yyvsp[0].expr_t); } -#line 4758 "parser.cpp" +#line 4760 "parser.cpp" break; case 165: /* drop_statement: DROP DATABASE if_exists IDENTIFIER */ @@ -4770,7 +4772,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 4774 "parser.cpp" +#line 4776 "parser.cpp" break; case 166: /* drop_statement: DROP COLLECTION if_exists table_name */ @@ -4788,7 +4790,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 4792 "parser.cpp" +#line 4794 "parser.cpp" break; case 167: /* drop_statement: DROP TABLE if_exists table_name */ @@ -4806,7 +4808,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 4810 "parser.cpp" +#line 4812 "parser.cpp" break; case 168: /* drop_statement: DROP VIEW if_exists table_name */ @@ -4824,7 +4826,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 4828 "parser.cpp" +#line 4830 "parser.cpp" break; case 169: /* drop_statement: DROP INDEX if_exists IDENTIFIER ON table_name */ @@ -4847,7 +4849,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[0].table_name_t)->table_name_ptr_); delete (yyvsp[0].table_name_t); } -#line 4851 "parser.cpp" +#line 4853 "parser.cpp" break; case 170: /* copy_statement: COPY table_name TO file_path WITH '(' copy_option_list ')' */ @@ -4905,7 +4907,7 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[-1].copy_option_array); } -#line 4909 "parser.cpp" +#line 4911 "parser.cpp" break; case 171: /* copy_statement: COPY table_name '(' expr_array ')' TO file_path WITH '(' copy_option_list ')' */ @@ -4965,7 +4967,7 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[-1].copy_option_array); } -#line 4969 "parser.cpp" +#line 4971 "parser.cpp" break; case 172: /* copy_statement: COPY table_name FROM file_path WITH '(' copy_option_list ')' */ @@ -5017,7 +5019,7 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[-1].copy_option_array); } -#line 5021 "parser.cpp" +#line 5023 "parser.cpp" break; case 173: /* select_statement: select_without_paren */ @@ -5025,7 +5027,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.select_stmt) = (yyvsp[0].select_stmt); } -#line 5029 "parser.cpp" +#line 5031 "parser.cpp" break; case 174: /* select_statement: select_with_paren */ @@ -5033,7 +5035,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.select_stmt) = (yyvsp[0].select_stmt); } -#line 5037 "parser.cpp" +#line 5039 "parser.cpp" break; case 175: /* select_statement: select_statement set_operator select_clause_without_modifier_paren */ @@ -5047,7 +5049,7 @@ YYLTYPE yylloc = yyloc_default; node->nested_select_ = (yyvsp[0].select_stmt); (yyval.select_stmt) = (yyvsp[-2].select_stmt); } -#line 5051 "parser.cpp" +#line 5053 "parser.cpp" break; case 176: /* select_statement: select_statement set_operator select_clause_without_modifier */ @@ -5061,7 +5063,7 @@ YYLTYPE yylloc = yyloc_default; node->nested_select_ = (yyvsp[0].select_stmt); (yyval.select_stmt) = (yyvsp[-2].select_stmt); } -#line 5065 "parser.cpp" +#line 5067 "parser.cpp" break; case 177: /* select_with_paren: '(' select_without_paren ')' */ @@ -5069,7 +5071,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 5073 "parser.cpp" +#line 5075 "parser.cpp" break; case 178: /* select_with_paren: '(' select_with_paren ')' */ @@ -5077,7 +5079,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 5081 "parser.cpp" +#line 5083 "parser.cpp" break; case 179: /* select_without_paren: with_clause select_clause_with_modifier */ @@ -5086,7 +5088,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 5090 "parser.cpp" +#line 5092 "parser.cpp" break; case 180: /* select_clause_with_modifier: select_clause_without_modifier order_by_clause limit_expr offset_expr */ @@ -5112,7 +5114,7 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-3].select_stmt)->offset_expr_ = (yyvsp[0].expr_t); (yyval.select_stmt) = (yyvsp[-3].select_stmt); } -#line 5116 "parser.cpp" +#line 5118 "parser.cpp" break; case 181: /* select_clause_without_modifier_paren: '(' select_clause_without_modifier ')' */ @@ -5120,7 +5122,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 5124 "parser.cpp" +#line 5126 "parser.cpp" break; case 182: /* select_clause_without_modifier_paren: '(' select_clause_without_modifier_paren ')' */ @@ -5128,7 +5130,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 5132 "parser.cpp" +#line 5134 "parser.cpp" break; case 183: /* select_clause_without_modifier: SELECT distinct expr_array from_clause search_clause where_clause group_by_clause having_clause */ @@ -5148,7 +5150,7 @@ YYLTYPE yylloc = yyloc_default; YYERROR; } } -#line 5152 "parser.cpp" +#line 5154 "parser.cpp" break; case 184: /* order_by_clause: ORDER BY order_by_expr_list */ @@ -5156,7 +5158,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.order_by_expr_list_t) = (yyvsp[0].order_by_expr_list_t); } -#line 5160 "parser.cpp" +#line 5162 "parser.cpp" break; case 185: /* order_by_clause: %empty */ @@ -5164,7 +5166,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.order_by_expr_list_t) = nullptr; } -#line 5168 "parser.cpp" +#line 5170 "parser.cpp" break; case 186: /* order_by_expr_list: order_by_expr */ @@ -5173,7 +5175,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 5177 "parser.cpp" +#line 5179 "parser.cpp" break; case 187: /* order_by_expr_list: order_by_expr_list ',' order_by_expr */ @@ -5182,7 +5184,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 5186 "parser.cpp" +#line 5188 "parser.cpp" break; case 188: /* order_by_expr: expr order_by_type */ @@ -5192,7 +5194,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 5196 "parser.cpp" +#line 5198 "parser.cpp" break; case 189: /* order_by_type: ASC */ @@ -5200,7 +5202,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.order_by_type_t) = infinity::kAsc; } -#line 5204 "parser.cpp" +#line 5206 "parser.cpp" break; case 190: /* order_by_type: DESC */ @@ -5208,7 +5210,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.order_by_type_t) = infinity::kDesc; } -#line 5212 "parser.cpp" +#line 5214 "parser.cpp" break; case 191: /* order_by_type: %empty */ @@ -5216,7 +5218,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.order_by_type_t) = infinity::kAsc; } -#line 5220 "parser.cpp" +#line 5222 "parser.cpp" break; case 192: /* limit_expr: LIMIT expr */ @@ -5224,13 +5226,13 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 5228 "parser.cpp" +#line 5230 "parser.cpp" break; case 193: /* limit_expr: %empty */ #line 1458 "parser.y" { (yyval.expr_t) = nullptr; } -#line 5234 "parser.cpp" +#line 5236 "parser.cpp" break; case 194: /* offset_expr: OFFSET expr */ @@ -5238,13 +5240,13 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 5242 "parser.cpp" +#line 5244 "parser.cpp" break; case 195: /* offset_expr: %empty */ #line 1464 "parser.y" { (yyval.expr_t) = nullptr; } -#line 5248 "parser.cpp" +#line 5250 "parser.cpp" break; case 196: /* distinct: DISTINCT */ @@ -5252,7 +5254,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.bool_value) = true; } -#line 5256 "parser.cpp" +#line 5258 "parser.cpp" break; case 197: /* distinct: %empty */ @@ -5260,7 +5262,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.bool_value) = false; } -#line 5264 "parser.cpp" +#line 5266 "parser.cpp" break; case 198: /* from_clause: FROM table_reference */ @@ -5268,7 +5270,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.table_reference_t) = (yyvsp[0].table_reference_t); } -#line 5272 "parser.cpp" +#line 5274 "parser.cpp" break; case 199: /* from_clause: %empty */ @@ -5276,7 +5278,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.table_reference_t) = nullptr; } -#line 5280 "parser.cpp" +#line 5282 "parser.cpp" break; case 200: /* search_clause: SEARCH sub_search_array */ @@ -5286,7 +5288,7 @@ YYLTYPE yylloc = yyloc_default; search_expr->SetExprs((yyvsp[0].expr_array_t)); (yyval.expr_t) = search_expr; } -#line 5290 "parser.cpp" +#line 5292 "parser.cpp" break; case 201: /* search_clause: %empty */ @@ -5294,7 +5296,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_t) = nullptr; } -#line 5298 "parser.cpp" +#line 5300 "parser.cpp" break; case 202: /* where_clause: WHERE expr */ @@ -5302,7 +5304,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 5306 "parser.cpp" +#line 5308 "parser.cpp" break; case 203: /* where_clause: %empty */ @@ -5310,7 +5312,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_t) = nullptr; } -#line 5314 "parser.cpp" +#line 5316 "parser.cpp" break; case 204: /* having_clause: HAVING expr */ @@ -5318,7 +5320,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 5322 "parser.cpp" +#line 5324 "parser.cpp" break; case 205: /* having_clause: %empty */ @@ -5326,7 +5328,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_t) = nullptr; } -#line 5330 "parser.cpp" +#line 5332 "parser.cpp" break; case 206: /* group_by_clause: GROUP BY expr_array */ @@ -5334,7 +5336,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_array_t) = (yyvsp[0].expr_array_t); } -#line 5338 "parser.cpp" +#line 5340 "parser.cpp" break; case 207: /* group_by_clause: %empty */ @@ -5342,7 +5344,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_array_t) = nullptr; } -#line 5346 "parser.cpp" +#line 5348 "parser.cpp" break; case 208: /* set_operator: UNION */ @@ -5350,7 +5352,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.set_operator_t) = infinity::SetOperatorType::kUnion; } -#line 5354 "parser.cpp" +#line 5356 "parser.cpp" break; case 209: /* set_operator: UNION ALL */ @@ -5358,7 +5360,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.set_operator_t) = infinity::SetOperatorType::kUnionAll; } -#line 5362 "parser.cpp" +#line 5364 "parser.cpp" break; case 210: /* set_operator: INTERSECT */ @@ -5366,7 +5368,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.set_operator_t) = infinity::SetOperatorType::kIntersect; } -#line 5370 "parser.cpp" +#line 5372 "parser.cpp" break; case 211: /* set_operator: EXCEPT */ @@ -5374,7 +5376,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.set_operator_t) = infinity::SetOperatorType::kExcept; } -#line 5378 "parser.cpp" +#line 5380 "parser.cpp" break; case 212: /* table_reference: table_reference_unit */ @@ -5382,7 +5384,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.table_reference_t) = (yyvsp[0].table_reference_t); } -#line 5386 "parser.cpp" +#line 5388 "parser.cpp" break; case 213: /* table_reference: table_reference ',' table_reference_unit */ @@ -5400,7 +5402,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.table_reference_t) = cross_product_ref; } -#line 5404 "parser.cpp" +#line 5406 "parser.cpp" break; case 216: /* table_reference_name: table_name table_alias */ @@ -5418,7 +5420,7 @@ YYLTYPE yylloc = yyloc_default; table_ref->alias_ = (yyvsp[0].table_alias_t); (yyval.table_reference_t) = table_ref; } -#line 5422 "parser.cpp" +#line 5424 "parser.cpp" break; case 217: /* table_reference_name: '(' select_statement ')' table_alias */ @@ -5429,7 +5431,7 @@ YYLTYPE yylloc = yyloc_default; subquery_reference->alias_ = (yyvsp[0].table_alias_t); (yyval.table_reference_t) = subquery_reference; } -#line 5433 "parser.cpp" +#line 5435 "parser.cpp" break; case 218: /* table_name: IDENTIFIER */ @@ -5439,7 +5441,7 @@ YYLTYPE yylloc = yyloc_default; ParserHelper::ToLower((yyvsp[0].str_value)); (yyval.table_name_t)->table_name_ptr_ = (yyvsp[0].str_value); } -#line 5443 "parser.cpp" +#line 5445 "parser.cpp" break; case 219: /* table_name: IDENTIFIER '.' IDENTIFIER */ @@ -5451,7 +5453,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 5455 "parser.cpp" +#line 5457 "parser.cpp" break; case 220: /* table_alias: AS IDENTIFIER */ @@ -5461,7 +5463,7 @@ YYLTYPE yylloc = yyloc_default; ParserHelper::ToLower((yyvsp[0].str_value)); (yyval.table_alias_t)->alias_ = (yyvsp[0].str_value); } -#line 5465 "parser.cpp" +#line 5467 "parser.cpp" break; case 221: /* table_alias: IDENTIFIER */ @@ -5471,7 +5473,7 @@ YYLTYPE yylloc = yyloc_default; ParserHelper::ToLower((yyvsp[0].str_value)); (yyval.table_alias_t)->alias_ = (yyvsp[0].str_value); } -#line 5475 "parser.cpp" +#line 5477 "parser.cpp" break; case 222: /* table_alias: AS IDENTIFIER '(' identifier_array ')' */ @@ -5482,7 +5484,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 5486 "parser.cpp" +#line 5488 "parser.cpp" break; case 223: /* table_alias: %empty */ @@ -5490,7 +5492,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.table_alias_t) = nullptr; } -#line 5494 "parser.cpp" +#line 5496 "parser.cpp" break; case 224: /* with_clause: WITH with_expr_list */ @@ -5498,7 +5500,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.with_expr_list_t) = (yyvsp[0].with_expr_list_t); } -#line 5502 "parser.cpp" +#line 5504 "parser.cpp" break; case 225: /* with_clause: %empty */ @@ -5506,7 +5508,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.with_expr_list_t) = nullptr; } -#line 5510 "parser.cpp" +#line 5512 "parser.cpp" break; case 226: /* with_expr_list: with_expr */ @@ -5515,7 +5517,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 5519 "parser.cpp" +#line 5521 "parser.cpp" break; case 227: /* with_expr_list: with_expr_list ',' with_expr */ @@ -5524,7 +5526,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 5528 "parser.cpp" +#line 5530 "parser.cpp" break; case 228: /* with_expr: IDENTIFIER AS '(' select_clause_with_modifier ')' */ @@ -5536,7 +5538,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-4].str_value)); (yyval.with_expr_t)->select_ = (yyvsp[-1].select_stmt); } -#line 5540 "parser.cpp" +#line 5542 "parser.cpp" break; case 229: /* join_clause: table_reference_unit NATURAL JOIN table_reference_name */ @@ -5548,7 +5550,7 @@ YYLTYPE yylloc = yyloc_default; join_reference->join_type_ = infinity::JoinType::kNatural; (yyval.table_reference_t) = join_reference; } -#line 5552 "parser.cpp" +#line 5554 "parser.cpp" break; case 230: /* join_clause: table_reference_unit join_type JOIN table_reference_name ON expr */ @@ -5561,7 +5563,7 @@ YYLTYPE yylloc = yyloc_default; join_reference->condition_ = (yyvsp[0].expr_t); (yyval.table_reference_t) = join_reference; } -#line 5565 "parser.cpp" +#line 5567 "parser.cpp" break; case 231: /* join_type: INNER */ @@ -5569,7 +5571,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.join_type_t) = infinity::JoinType::kInner; } -#line 5573 "parser.cpp" +#line 5575 "parser.cpp" break; case 232: /* join_type: LEFT */ @@ -5577,7 +5579,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.join_type_t) = infinity::JoinType::kLeft; } -#line 5581 "parser.cpp" +#line 5583 "parser.cpp" break; case 233: /* join_type: RIGHT */ @@ -5585,7 +5587,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.join_type_t) = infinity::JoinType::kRight; } -#line 5589 "parser.cpp" +#line 5591 "parser.cpp" break; case 234: /* join_type: OUTER */ @@ -5593,7 +5595,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.join_type_t) = infinity::JoinType::kFull; } -#line 5597 "parser.cpp" +#line 5599 "parser.cpp" break; case 235: /* join_type: FULL */ @@ -5601,7 +5603,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.join_type_t) = infinity::JoinType::kFull; } -#line 5605 "parser.cpp" +#line 5607 "parser.cpp" break; case 236: /* join_type: CROSS */ @@ -5609,14 +5611,14 @@ YYLTYPE yylloc = yyloc_default; { (yyval.join_type_t) = infinity::JoinType::kCross; } -#line 5613 "parser.cpp" +#line 5615 "parser.cpp" break; case 237: /* join_type: %empty */ #line 1673 "parser.y" { } -#line 5620 "parser.cpp" +#line 5622 "parser.cpp" break; case 238: /* show_statement: SHOW DATABASES */ @@ -5625,7 +5627,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kDatabases; } -#line 5629 "parser.cpp" +#line 5631 "parser.cpp" break; case 239: /* show_statement: SHOW TABLES */ @@ -5634,7 +5636,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kTables; } -#line 5638 "parser.cpp" +#line 5640 "parser.cpp" break; case 240: /* show_statement: SHOW VIEWS */ @@ -5643,7 +5645,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kViews; } -#line 5647 "parser.cpp" +#line 5649 "parser.cpp" break; case 241: /* show_statement: SHOW CONFIGS */ @@ -5652,7 +5654,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kConfigs; } -#line 5656 "parser.cpp" +#line 5658 "parser.cpp" break; case 242: /* show_statement: SHOW CONFIG IDENTIFIER */ @@ -5664,7 +5666,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->var_name_ = std::string((yyvsp[0].str_value)); free((yyvsp[0].str_value)); } -#line 5668 "parser.cpp" +#line 5670 "parser.cpp" break; case 243: /* show_statement: SHOW PROFILES */ @@ -5673,7 +5675,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kProfiles; } -#line 5677 "parser.cpp" +#line 5679 "parser.cpp" break; case 244: /* show_statement: SHOW BUFFER */ @@ -5682,7 +5684,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kBuffer; } -#line 5686 "parser.cpp" +#line 5688 "parser.cpp" break; case 245: /* show_statement: SHOW MEMINDEX */ @@ -5691,7 +5693,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kMemIndex; } -#line 5695 "parser.cpp" +#line 5697 "parser.cpp" break; case 246: /* show_statement: SHOW QUERIES */ @@ -5700,7 +5702,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kQueries; } -#line 5704 "parser.cpp" +#line 5706 "parser.cpp" break; case 247: /* show_statement: SHOW QUERY SESSION LONG_VALUE */ @@ -5710,7 +5712,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kQuery; (yyval.show_stmt)->session_id_ = (yyvsp[0].long_value); } -#line 5714 "parser.cpp" +#line 5716 "parser.cpp" break; case 248: /* show_statement: SHOW TRANSACTIONS */ @@ -5719,7 +5721,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kTransactions; } -#line 5723 "parser.cpp" +#line 5725 "parser.cpp" break; case 249: /* show_statement: SHOW TRANSACTION LONG_VALUE */ @@ -5729,7 +5731,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kTransaction; (yyval.show_stmt)->txn_id_ = (yyvsp[0].long_value); } -#line 5733 "parser.cpp" +#line 5735 "parser.cpp" break; case 250: /* show_statement: SHOW SESSION VARIABLES */ @@ -5738,7 +5740,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kSessionVariables; } -#line 5742 "parser.cpp" +#line 5744 "parser.cpp" break; case 251: /* show_statement: SHOW GLOBAL VARIABLES */ @@ -5747,7 +5749,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kGlobalVariables; } -#line 5751 "parser.cpp" +#line 5753 "parser.cpp" break; case 252: /* show_statement: SHOW SESSION VARIABLE IDENTIFIER */ @@ -5758,7 +5760,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->var_name_ = std::string((yyvsp[0].str_value)); free((yyvsp[0].str_value)); } -#line 5762 "parser.cpp" +#line 5764 "parser.cpp" break; case 253: /* show_statement: SHOW GLOBAL VARIABLE IDENTIFIER */ @@ -5769,7 +5771,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->var_name_ = std::string((yyvsp[0].str_value)); free((yyvsp[0].str_value)); } -#line 5773 "parser.cpp" +#line 5775 "parser.cpp" break; case 254: /* show_statement: SHOW DATABASE IDENTIFIER */ @@ -5780,7 +5782,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->schema_name_ = (yyvsp[0].str_value); free((yyvsp[0].str_value)); } -#line 5784 "parser.cpp" +#line 5786 "parser.cpp" break; case 255: /* show_statement: SHOW TABLE table_name */ @@ -5796,7 +5798,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[0].table_name_t)->table_name_ptr_); delete (yyvsp[0].table_name_t); } -#line 5800 "parser.cpp" +#line 5802 "parser.cpp" break; case 256: /* show_statement: SHOW TABLE table_name COLUMNS */ @@ -5812,7 +5814,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].table_name_t)->table_name_ptr_); delete (yyvsp[-1].table_name_t); } -#line 5816 "parser.cpp" +#line 5818 "parser.cpp" break; case 257: /* show_statement: SHOW TABLE table_name SEGMENTS */ @@ -5828,7 +5830,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].table_name_t)->table_name_ptr_); delete (yyvsp[-1].table_name_t); } -#line 5832 "parser.cpp" +#line 5834 "parser.cpp" break; case 258: /* show_statement: SHOW TABLE table_name SEGMENT LONG_VALUE */ @@ -5845,7 +5847,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->segment_id_ = (yyvsp[0].long_value); delete (yyvsp[-2].table_name_t); } -#line 5849 "parser.cpp" +#line 5851 "parser.cpp" break; case 259: /* show_statement: SHOW TABLE table_name SEGMENT LONG_VALUE BLOCKS */ @@ -5862,7 +5864,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->segment_id_ = (yyvsp[-1].long_value); delete (yyvsp[-3].table_name_t); } -#line 5866 "parser.cpp" +#line 5868 "parser.cpp" break; case 260: /* show_statement: SHOW TABLE table_name SEGMENT LONG_VALUE BLOCK LONG_VALUE */ @@ -5880,7 +5882,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->block_id_ = (yyvsp[0].long_value); delete (yyvsp[-4].table_name_t); } -#line 5884 "parser.cpp" +#line 5886 "parser.cpp" break; case 261: /* show_statement: SHOW TABLE table_name SEGMENT LONG_VALUE BLOCK LONG_VALUE COLUMN LONG_VALUE */ @@ -5899,7 +5901,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->column_id_ = (yyvsp[0].long_value); delete (yyvsp[-6].table_name_t); } -#line 5903 "parser.cpp" +#line 5905 "parser.cpp" break; case 262: /* show_statement: SHOW TABLE table_name INDEXES */ @@ -5915,7 +5917,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].table_name_t)->table_name_ptr_); delete (yyvsp[-1].table_name_t); } -#line 5919 "parser.cpp" +#line 5921 "parser.cpp" break; case 263: /* show_statement: SHOW TABLE table_name INDEX IDENTIFIER */ @@ -5934,7 +5936,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->index_name_ = (yyvsp[0].str_value); free((yyvsp[0].str_value)); } -#line 5938 "parser.cpp" +#line 5940 "parser.cpp" break; case 264: /* show_statement: SHOW TABLE table_name INDEX IDENTIFIER SEGMENT LONG_VALUE */ @@ -5955,7 +5957,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->segment_id_ = (yyvsp[0].long_value); } -#line 5959 "parser.cpp" +#line 5961 "parser.cpp" break; case 265: /* show_statement: SHOW TABLE table_name INDEX IDENTIFIER SEGMENT LONG_VALUE CHUNK LONG_VALUE */ @@ -5977,7 +5979,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->segment_id_ = (yyvsp[-2].long_value); (yyval.show_stmt)->chunk_id_ = (yyvsp[0].long_value); } -#line 5981 "parser.cpp" +#line 5983 "parser.cpp" break; case 266: /* show_statement: SHOW LOGS */ @@ -5986,7 +5988,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kLogs; } -#line 5990 "parser.cpp" +#line 5992 "parser.cpp" break; case 267: /* show_statement: SHOW DELTA LOGS */ @@ -5995,7 +5997,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kDeltaLogs; } -#line 5999 "parser.cpp" +#line 6001 "parser.cpp" break; case 268: /* show_statement: SHOW CATALOGS */ @@ -6004,7 +6006,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kCatalogs; } -#line 6008 "parser.cpp" +#line 6010 "parser.cpp" break; case 269: /* show_statement: SHOW PERSISTENCE FILES */ @@ -6013,7 +6015,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kPersistenceFiles; } -#line 6017 "parser.cpp" +#line 6019 "parser.cpp" break; case 270: /* show_statement: SHOW PERSISTENCE OBJECTS */ @@ -6022,7 +6024,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kPersistenceObjects; } -#line 6026 "parser.cpp" +#line 6028 "parser.cpp" break; case 271: /* show_statement: SHOW PERSISTENCE OBJECT STRING */ @@ -6033,7 +6035,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->file_name_ = (yyvsp[0].str_value); free((yyvsp[0].str_value)); } -#line 6037 "parser.cpp" +#line 6039 "parser.cpp" break; case 272: /* show_statement: SHOW MEMORY */ @@ -6042,7 +6044,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kMemory; } -#line 6046 "parser.cpp" +#line 6048 "parser.cpp" break; case 273: /* show_statement: SHOW MEMORY OBJECTS */ @@ -6051,7 +6053,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kMemoryObjects; } -#line 6055 "parser.cpp" +#line 6057 "parser.cpp" break; case 274: /* show_statement: SHOW MEMORY ALLOCATION */ @@ -6060,7 +6062,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kMemoryAllocation; } -#line 6064 "parser.cpp" +#line 6066 "parser.cpp" break; case 275: /* flush_statement: FLUSH DATA */ @@ -6069,7 +6071,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.flush_stmt) = new infinity::FlushStatement(); (yyval.flush_stmt)->type_ = infinity::FlushType::kData; } -#line 6073 "parser.cpp" +#line 6075 "parser.cpp" break; case 276: /* flush_statement: FLUSH LOG */ @@ -6078,7 +6080,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.flush_stmt) = new infinity::FlushStatement(); (yyval.flush_stmt)->type_ = infinity::FlushType::kLog; } -#line 6082 "parser.cpp" +#line 6084 "parser.cpp" break; case 277: /* flush_statement: FLUSH BUFFER */ @@ -6087,7 +6089,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.flush_stmt) = new infinity::FlushStatement(); (yyval.flush_stmt)->type_ = infinity::FlushType::kBuffer; } -#line 6091 "parser.cpp" +#line 6093 "parser.cpp" break; case 278: /* optimize_statement: OPTIMIZE table_name */ @@ -6102,7 +6104,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[0].table_name_t)->table_name_ptr_); delete (yyvsp[0].table_name_t); } -#line 6106 "parser.cpp" +#line 6108 "parser.cpp" break; case 279: /* optimize_statement: OPTIMIZE IDENTIFIER ON table_name with_index_param_list */ @@ -6126,7 +6128,7 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[0].with_index_param_list_t); } -#line 6130 "parser.cpp" +#line 6132 "parser.cpp" break; case 280: /* command_statement: USE IDENTIFIER */ @@ -6137,7 +6139,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.command_stmt)->command_info_ = std::make_shared((yyvsp[0].str_value)); free((yyvsp[0].str_value)); } -#line 6141 "parser.cpp" +#line 6143 "parser.cpp" break; case 281: /* command_statement: EXPORT PROFILE LONG_VALUE file_path */ @@ -6147,7 +6149,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.command_stmt)->command_info_ = std::make_shared((yyvsp[0].str_value), infinity::ExportType::kProfileRecord, (yyvsp[-1].long_value)); free((yyvsp[0].str_value)); } -#line 6151 "parser.cpp" +#line 6153 "parser.cpp" break; case 282: /* command_statement: SET SESSION IDENTIFIER ON */ @@ -6158,7 +6160,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.command_stmt)->command_info_ = std::make_shared(infinity::SetScope::kSession, infinity::SetVarType::kBool, (yyvsp[-1].str_value), true); free((yyvsp[-1].str_value)); } -#line 6162 "parser.cpp" +#line 6164 "parser.cpp" break; case 283: /* command_statement: SET SESSION IDENTIFIER OFF */ @@ -6169,7 +6171,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.command_stmt)->command_info_ = std::make_shared(infinity::SetScope::kSession, infinity::SetVarType::kBool, (yyvsp[-1].str_value), false); free((yyvsp[-1].str_value)); } -#line 6173 "parser.cpp" +#line 6175 "parser.cpp" break; case 284: /* command_statement: SET SESSION IDENTIFIER IDENTIFIER */ @@ -6182,7 +6184,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].str_value)); free((yyvsp[0].str_value)); } -#line 6186 "parser.cpp" +#line 6188 "parser.cpp" break; case 285: /* command_statement: SET SESSION IDENTIFIER LONG_VALUE */ @@ -6193,7 +6195,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.command_stmt)->command_info_ = std::make_shared(infinity::SetScope::kSession, infinity::SetVarType::kInteger, (yyvsp[-1].str_value), (yyvsp[0].long_value)); free((yyvsp[-1].str_value)); } -#line 6197 "parser.cpp" +#line 6199 "parser.cpp" break; case 286: /* command_statement: SET SESSION IDENTIFIER DOUBLE_VALUE */ @@ -6204,7 +6206,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.command_stmt)->command_info_ = std::make_shared(infinity::SetScope::kSession, infinity::SetVarType::kDouble, (yyvsp[-1].str_value), (yyvsp[0].double_value)); free((yyvsp[-1].str_value)); } -#line 6208 "parser.cpp" +#line 6210 "parser.cpp" break; case 287: /* command_statement: SET GLOBAL IDENTIFIER ON */ @@ -6215,7 +6217,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.command_stmt)->command_info_ = std::make_shared(infinity::SetScope::kGlobal, infinity::SetVarType::kBool, (yyvsp[-1].str_value), true); free((yyvsp[-1].str_value)); } -#line 6219 "parser.cpp" +#line 6221 "parser.cpp" break; case 288: /* command_statement: SET GLOBAL IDENTIFIER OFF */ @@ -6226,7 +6228,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.command_stmt)->command_info_ = std::make_shared(infinity::SetScope::kGlobal, infinity::SetVarType::kBool, (yyvsp[-1].str_value), false); free((yyvsp[-1].str_value)); } -#line 6230 "parser.cpp" +#line 6232 "parser.cpp" break; case 289: /* command_statement: SET GLOBAL IDENTIFIER IDENTIFIER */ @@ -6239,7 +6241,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].str_value)); free((yyvsp[0].str_value)); } -#line 6243 "parser.cpp" +#line 6245 "parser.cpp" break; case 290: /* command_statement: SET GLOBAL IDENTIFIER LONG_VALUE */ @@ -6250,7 +6252,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.command_stmt)->command_info_ = std::make_shared(infinity::SetScope::kGlobal, infinity::SetVarType::kInteger, (yyvsp[-1].str_value), (yyvsp[0].long_value)); free((yyvsp[-1].str_value)); } -#line 6254 "parser.cpp" +#line 6256 "parser.cpp" break; case 291: /* command_statement: SET GLOBAL IDENTIFIER DOUBLE_VALUE */ @@ -6261,7 +6263,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.command_stmt)->command_info_ = std::make_shared(infinity::SetScope::kGlobal, infinity::SetVarType::kDouble, (yyvsp[-1].str_value), (yyvsp[0].double_value)); free((yyvsp[-1].str_value)); } -#line 6265 "parser.cpp" +#line 6267 "parser.cpp" break; case 292: /* command_statement: SET CONFIG IDENTIFIER ON */ @@ -6272,7 +6274,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.command_stmt)->command_info_ = std::make_shared(infinity::SetScope::kConfig, infinity::SetVarType::kBool, (yyvsp[-1].str_value), true); free((yyvsp[-1].str_value)); } -#line 6276 "parser.cpp" +#line 6278 "parser.cpp" break; case 293: /* command_statement: SET CONFIG IDENTIFIER OFF */ @@ -6283,7 +6285,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.command_stmt)->command_info_ = std::make_shared(infinity::SetScope::kConfig, infinity::SetVarType::kBool, (yyvsp[-1].str_value), false); free((yyvsp[-1].str_value)); } -#line 6287 "parser.cpp" +#line 6289 "parser.cpp" break; case 294: /* command_statement: SET CONFIG IDENTIFIER IDENTIFIER */ @@ -6296,7 +6298,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].str_value)); free((yyvsp[0].str_value)); } -#line 6300 "parser.cpp" +#line 6302 "parser.cpp" break; case 295: /* command_statement: SET CONFIG IDENTIFIER LONG_VALUE */ @@ -6307,7 +6309,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.command_stmt)->command_info_ = std::make_shared(infinity::SetScope::kConfig, infinity::SetVarType::kInteger, (yyvsp[-1].str_value), (yyvsp[0].long_value)); free((yyvsp[-1].str_value)); } -#line 6311 "parser.cpp" +#line 6313 "parser.cpp" break; case 296: /* command_statement: SET CONFIG IDENTIFIER DOUBLE_VALUE */ @@ -6318,7 +6320,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.command_stmt)->command_info_ = std::make_shared(infinity::SetScope::kConfig, infinity::SetVarType::kDouble, (yyvsp[-1].str_value), (yyvsp[0].double_value)); free((yyvsp[-1].str_value)); } -#line 6322 "parser.cpp" +#line 6324 "parser.cpp" break; case 297: /* compact_statement: COMPACT TABLE table_name */ @@ -6335,7 +6337,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.compact_stmt) = new infinity::ManualCompactStatement(std::move(schema_name), std::move(table_name)); delete (yyvsp[0].table_name_t); } -#line 6339 "parser.cpp" +#line 6341 "parser.cpp" break; case 298: /* admin_statement: ADMIN SHOW CATALOGS */ @@ -6344,7 +6346,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kListCatalogs; } -#line 6348 "parser.cpp" +#line 6350 "parser.cpp" break; case 299: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE */ @@ -6354,7 +6356,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kShowCatalog; (yyval.admin_stmt)->catalog_file_index_ = (yyvsp[0].long_value); } -#line 6358 "parser.cpp" +#line 6360 "parser.cpp" break; case 300: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASES */ @@ -6365,7 +6367,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt)->catalog_file_start_index_ = (yyvsp[-2].long_value); (yyval.admin_stmt)->catalog_file_end_index_ = (yyvsp[-1].long_value); } -#line 6369 "parser.cpp" +#line 6371 "parser.cpp" break; case 301: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE */ @@ -6377,7 +6379,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt)->catalog_file_end_index_ = (yyvsp[-2].long_value); (yyval.admin_stmt)->database_meta_index_ = (yyvsp[0].long_value); } -#line 6381 "parser.cpp" +#line 6383 "parser.cpp" break; case 302: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLES */ @@ -6390,7 +6392,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt)->database_meta_index_ = (yyvsp[-2].long_value); (yyval.admin_stmt)->database_entry_index_ = (yyvsp[-1].long_value); } -#line 6394 "parser.cpp" +#line 6396 "parser.cpp" break; case 303: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLE LONG_VALUE */ @@ -6404,7 +6406,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt)->database_entry_index_ = (yyvsp[-2].long_value); (yyval.admin_stmt)->table_meta_index_ = (yyvsp[0].long_value); } -#line 6408 "parser.cpp" +#line 6410 "parser.cpp" break; case 304: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLE LONG_VALUE LONG_VALUE COLUMNS */ @@ -6419,7 +6421,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt)->table_meta_index_ = (yyvsp[-2].long_value); (yyval.admin_stmt)->table_entry_index_ = (yyvsp[-1].long_value); } -#line 6423 "parser.cpp" +#line 6425 "parser.cpp" break; case 305: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLE LONG_VALUE LONG_VALUE SEGMENTS */ @@ -6434,7 +6436,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt)->table_meta_index_ = (yyvsp[-2].long_value); (yyval.admin_stmt)->table_entry_index_ = (yyvsp[-1].long_value); } -#line 6438 "parser.cpp" +#line 6440 "parser.cpp" break; case 306: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLE LONG_VALUE LONG_VALUE SEGMENT LONG_VALUE */ @@ -6450,7 +6452,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt)->table_entry_index_ = (yyvsp[-2].long_value); (yyval.admin_stmt)->segment_index_ = (yyvsp[0].long_value); } -#line 6454 "parser.cpp" +#line 6456 "parser.cpp" break; case 307: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLE LONG_VALUE LONG_VALUE SEGMENT LONG_VALUE BLOCKS */ @@ -6466,7 +6468,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt)->table_entry_index_ = (yyvsp[-3].long_value); (yyval.admin_stmt)->segment_index_ = (yyvsp[-1].long_value); } -#line 6470 "parser.cpp" +#line 6472 "parser.cpp" break; case 308: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLE LONG_VALUE LONG_VALUE SEGMENT LONG_VALUE BLOCK LONG_VALUE */ @@ -6483,7 +6485,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt)->segment_index_ = (yyvsp[-2].long_value); (yyval.admin_stmt)->block_index_ = (yyvsp[0].long_value); } -#line 6487 "parser.cpp" +#line 6489 "parser.cpp" break; case 309: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLE LONG_VALUE LONG_VALUE SEGMENT LONG_VALUE BLOCK LONG_VALUE COLUMNS */ @@ -6500,7 +6502,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt)->segment_index_ = (yyvsp[-3].long_value); (yyval.admin_stmt)->block_index_ = (yyvsp[-1].long_value); } -#line 6504 "parser.cpp" +#line 6506 "parser.cpp" break; case 310: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLE LONG_VALUE LONG_VALUE INDEXES */ @@ -6515,7 +6517,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt)->table_meta_index_ = (yyvsp[-2].long_value); (yyval.admin_stmt)->table_entry_index_ = (yyvsp[-1].long_value); } -#line 6519 "parser.cpp" +#line 6521 "parser.cpp" break; case 311: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLE LONG_VALUE LONG_VALUE INDEX LONG_VALUE */ @@ -6531,7 +6533,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt)->table_entry_index_ = (yyvsp[-2].long_value); (yyval.admin_stmt)->index_meta_index_ = (yyvsp[0].long_value); } -#line 6535 "parser.cpp" +#line 6537 "parser.cpp" break; case 312: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLE LONG_VALUE LONG_VALUE INDEX LONG_VALUE LONG_VALUE SEGMENTS */ @@ -6548,7 +6550,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt)->index_meta_index_ = (yyvsp[-2].long_value); (yyval.admin_stmt)->index_entry_index_ = (yyvsp[-1].long_value); } -#line 6552 "parser.cpp" +#line 6554 "parser.cpp" break; case 313: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLE LONG_VALUE LONG_VALUE INDEX LONG_VALUE LONG_VALUE SEGMENT LONG_VALUE */ @@ -6566,7 +6568,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt)->index_entry_index_ = (yyvsp[-2].long_value); (yyval.admin_stmt)->segment_index_ = (yyvsp[0].long_value); } -#line 6570 "parser.cpp" +#line 6572 "parser.cpp" break; case 314: /* admin_statement: ADMIN SHOW LOGS */ @@ -6575,7 +6577,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kListLogFiles; } -#line 6579 "parser.cpp" +#line 6581 "parser.cpp" break; case 315: /* admin_statement: ADMIN SHOW LOG LONG_VALUE */ @@ -6585,7 +6587,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kShowLogFile; (yyval.admin_stmt)->log_file_index_ = (yyvsp[0].long_value); } -#line 6589 "parser.cpp" +#line 6591 "parser.cpp" break; case 316: /* admin_statement: ADMIN SHOW LOG LONG_VALUE INDEXES */ @@ -6595,7 +6597,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kListLogIndexes; (yyval.admin_stmt)->log_file_index_ = (yyvsp[-1].long_value); } -#line 6599 "parser.cpp" +#line 6601 "parser.cpp" break; case 317: /* admin_statement: ADMIN SHOW LOG LONG_VALUE INDEX LONG_VALUE */ @@ -6606,7 +6608,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt)->log_file_index_ = (yyvsp[-2].long_value); (yyval.admin_stmt)->log_index_in_file_ = (yyvsp[0].long_value); } -#line 6610 "parser.cpp" +#line 6612 "parser.cpp" break; case 318: /* expr_array: expr_alias */ @@ -6615,7 +6617,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.expr_array_t) = new std::vector(); (yyval.expr_array_t)->emplace_back((yyvsp[0].expr_t)); } -#line 6619 "parser.cpp" +#line 6621 "parser.cpp" break; case 319: /* expr_array: expr_array ',' expr_alias */ @@ -6624,7 +6626,7 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-2].expr_array_t)->emplace_back((yyvsp[0].expr_t)); (yyval.expr_array_t) = (yyvsp[-2].expr_array_t); } -#line 6628 "parser.cpp" +#line 6630 "parser.cpp" break; case 320: /* expr_array_list: '(' expr_array ')' */ @@ -6633,7 +6635,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.expr_array_list_t) = new std::vector*>(); (yyval.expr_array_list_t)->push_back((yyvsp[-1].expr_array_t)); } -#line 6637 "parser.cpp" +#line 6639 "parser.cpp" break; case 321: /* expr_array_list: expr_array_list ',' '(' expr_array ')' */ @@ -6653,7 +6655,7 @@ 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 6657 "parser.cpp" +#line 6659 "parser.cpp" break; case 322: /* expr_alias: expr AS IDENTIFIER */ @@ -6664,7 +6666,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.expr_t)->alias_ = (yyvsp[0].str_value); free((yyvsp[0].str_value)); } -#line 6668 "parser.cpp" +#line 6670 "parser.cpp" break; case 323: /* expr_alias: expr */ @@ -6672,7 +6674,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 6676 "parser.cpp" +#line 6678 "parser.cpp" break; case 329: /* operand: '(' expr ')' */ @@ -6680,7 +6682,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_t) = (yyvsp[-1].expr_t); } -#line 6684 "parser.cpp" +#line 6686 "parser.cpp" break; case 330: /* operand: '(' select_without_paren ')' */ @@ -6691,7 +6693,7 @@ YYLTYPE yylloc = yyloc_default; subquery_expr->select_ = (yyvsp[-1].select_stmt); (yyval.expr_t) = subquery_expr; } -#line 6695 "parser.cpp" +#line 6697 "parser.cpp" break; case 331: /* operand: constant_expr */ @@ -6699,7 +6701,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_t) = (yyvsp[0].const_expr_t); } -#line 6703 "parser.cpp" +#line 6705 "parser.cpp" break; case 342: /* extra_match_tensor_option: ',' STRING */ @@ -6707,7 +6709,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.str_value) = (yyvsp[0].str_value); } -#line 6711 "parser.cpp" +#line 6713 "parser.cpp" break; case 343: /* extra_match_tensor_option: %empty */ @@ -6715,7 +6717,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.str_value) = nullptr; } -#line 6719 "parser.cpp" +#line 6721 "parser.cpp" break; case 344: /* match_tensor_expr: MATCH TENSOR '(' column_expr ',' common_array_expr ',' STRING ',' STRING extra_match_tensor_option ')' */ @@ -6736,7 +6738,7 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr_t) = match_tensor_expr.release(); } -#line 6740 "parser.cpp" +#line 6742 "parser.cpp" break; case 345: /* match_vector_expr: MATCH VECTOR '(' expr ',' array_expr ',' STRING ',' STRING ',' LONG_VALUE ')' USING INDEX '(' IDENTIFIER ')' with_index_param_list */ @@ -6785,7 +6787,7 @@ YYLTYPE yylloc = yyloc_default; Return1: ; } -#line 6789 "parser.cpp" +#line 6791 "parser.cpp" break; case 346: /* match_vector_expr: MATCH VECTOR '(' expr ',' array_expr ',' STRING ',' STRING ',' LONG_VALUE ')' IGNORE INDEX */ @@ -6827,7 +6829,7 @@ YYLTYPE yylloc = yyloc_default; Return2: ; } -#line 6831 "parser.cpp" +#line 6833 "parser.cpp" break; case 347: /* match_vector_expr: MATCH VECTOR '(' expr ',' array_expr ',' STRING ',' STRING ',' LONG_VALUE ')' with_index_param_list */ @@ -6873,7 +6875,7 @@ YYLTYPE yylloc = yyloc_default; Return3: ; } -#line 6877 "parser.cpp" +#line 6879 "parser.cpp" break; case 348: /* match_vector_expr: MATCH VECTOR '(' expr ',' array_expr ',' STRING ',' STRING ')' with_index_param_list */ @@ -6920,7 +6922,7 @@ YYLTYPE yylloc = yyloc_default; Return4: ; } -#line 6924 "parser.cpp" +#line 6926 "parser.cpp" break; case 349: /* match_sparse_expr: MATCH SPARSE '(' expr ',' common_sparse_array_expr ',' STRING ',' LONG_VALUE ')' USING INDEX '(' IDENTIFIER ')' with_index_param_list */ @@ -6945,7 +6947,7 @@ YYLTYPE yylloc = yyloc_default; match_sparse_expr->index_name_ = (yyvsp[-2].str_value); free((yyvsp[-2].str_value)); } -#line 6949 "parser.cpp" +#line 6951 "parser.cpp" break; case 350: /* match_sparse_expr: MATCH SPARSE '(' expr ',' common_sparse_array_expr ',' STRING ',' LONG_VALUE ')' IGNORE INDEX */ @@ -6969,7 +6971,7 @@ YYLTYPE yylloc = yyloc_default; match_sparse_expr->ignore_index_ = true; } -#line 6973 "parser.cpp" +#line 6975 "parser.cpp" break; case 351: /* match_sparse_expr: MATCH SPARSE '(' expr ',' common_sparse_array_expr ',' STRING ',' LONG_VALUE ')' with_index_param_list */ @@ -6991,7 +6993,7 @@ YYLTYPE yylloc = yyloc_default; // topn and options match_sparse_expr->SetOptParams((yyvsp[-2].long_value), (yyvsp[0].with_index_param_list_t)); } -#line 6995 "parser.cpp" +#line 6997 "parser.cpp" break; case 352: /* match_sparse_expr: MATCH SPARSE '(' expr ',' common_sparse_array_expr ',' STRING ')' with_index_param_list */ @@ -7013,7 +7015,7 @@ YYLTYPE yylloc = yyloc_default; // topn and options match_sparse_expr->SetOptParams(infinity::DEFAULT_MATCH_SPARSE_TOP_N, (yyvsp[0].with_index_param_list_t)); } -#line 7017 "parser.cpp" +#line 7019 "parser.cpp" break; case 353: /* match_text_expr: MATCH TEXT '(' STRING ',' STRING ')' */ @@ -7026,7 +7028,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].str_value)); (yyval.expr_t) = match_text_expr; } -#line 7030 "parser.cpp" +#line 7032 "parser.cpp" break; case 354: /* match_text_expr: MATCH TEXT '(' STRING ',' STRING ',' STRING ')' */ @@ -7041,7 +7043,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].str_value)); (yyval.expr_t) = match_text_expr; } -#line 7045 "parser.cpp" +#line 7047 "parser.cpp" break; case 355: /* query_expr: QUERY '(' STRING ')' */ @@ -7052,7 +7054,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].str_value)); (yyval.expr_t) = match_text_expr; } -#line 7056 "parser.cpp" +#line 7058 "parser.cpp" break; case 356: /* query_expr: QUERY '(' STRING ',' STRING ')' */ @@ -7065,7 +7067,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].str_value)); (yyval.expr_t) = match_text_expr; } -#line 7069 "parser.cpp" +#line 7071 "parser.cpp" break; case 357: /* fusion_expr: FUSION '(' STRING ')' */ @@ -7076,7 +7078,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].str_value)); (yyval.expr_t) = fusion_expr; } -#line 7080 "parser.cpp" +#line 7082 "parser.cpp" break; case 358: /* fusion_expr: FUSION '(' STRING ',' STRING ')' */ @@ -7092,7 +7094,7 @@ YYLTYPE yylloc = yyloc_default; fusion_expr->JobAfterParser(); (yyval.expr_t) = fusion_expr.release(); } -#line 7096 "parser.cpp" +#line 7098 "parser.cpp" break; case 359: /* sub_search: match_vector_expr */ @@ -7100,7 +7102,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 7104 "parser.cpp" +#line 7106 "parser.cpp" break; case 360: /* sub_search: match_text_expr */ @@ -7108,7 +7110,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 7112 "parser.cpp" +#line 7114 "parser.cpp" break; case 361: /* sub_search: match_tensor_expr */ @@ -7116,7 +7118,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 7120 "parser.cpp" +#line 7122 "parser.cpp" break; case 362: /* sub_search: match_sparse_expr */ @@ -7124,7 +7126,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 7128 "parser.cpp" +#line 7130 "parser.cpp" break; case 363: /* sub_search: query_expr */ @@ -7132,7 +7134,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 7136 "parser.cpp" +#line 7138 "parser.cpp" break; case 364: /* sub_search: fusion_expr */ @@ -7140,7 +7142,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 7144 "parser.cpp" +#line 7146 "parser.cpp" break; case 365: /* sub_search_array: sub_search */ @@ -7149,7 +7151,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.expr_array_t) = new std::vector(); (yyval.expr_array_t)->emplace_back((yyvsp[0].expr_t)); } -#line 7153 "parser.cpp" +#line 7155 "parser.cpp" break; case 366: /* sub_search_array: sub_search_array ',' sub_search */ @@ -7158,7 +7160,7 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-2].expr_array_t)->emplace_back((yyvsp[0].expr_t)); (yyval.expr_array_t) = (yyvsp[-2].expr_array_t); } -#line 7162 "parser.cpp" +#line 7164 "parser.cpp" break; case 367: /* function_expr: IDENTIFIER '(' ')' */ @@ -7171,7 +7173,7 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_ = nullptr; (yyval.expr_t) = func_expr; } -#line 7175 "parser.cpp" +#line 7177 "parser.cpp" break; case 368: /* function_expr: IDENTIFIER '(' expr_array ')' */ @@ -7184,7 +7186,7 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_ = (yyvsp[-1].expr_array_t); (yyval.expr_t) = func_expr; } -#line 7188 "parser.cpp" +#line 7190 "parser.cpp" break; case 369: /* function_expr: IDENTIFIER '(' DISTINCT expr_array ')' */ @@ -7198,7 +7200,7 @@ YYLTYPE yylloc = yyloc_default; func_expr->distinct_ = true; (yyval.expr_t) = func_expr; } -#line 7202 "parser.cpp" +#line 7204 "parser.cpp" break; case 370: /* function_expr: operand IS NOT NULLABLE */ @@ -7210,7 +7212,7 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[-3].expr_t)); (yyval.expr_t) = func_expr; } -#line 7214 "parser.cpp" +#line 7216 "parser.cpp" break; case 371: /* function_expr: operand IS NULLABLE */ @@ -7222,7 +7224,7 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[-2].expr_t)); (yyval.expr_t) = func_expr; } -#line 7226 "parser.cpp" +#line 7228 "parser.cpp" break; case 372: /* function_expr: NOT operand */ @@ -7234,7 +7236,7 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7238 "parser.cpp" +#line 7240 "parser.cpp" break; case 373: /* function_expr: '-' operand */ @@ -7246,7 +7248,7 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7250 "parser.cpp" +#line 7252 "parser.cpp" break; case 374: /* function_expr: '+' operand */ @@ -7258,7 +7260,7 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7262 "parser.cpp" +#line 7264 "parser.cpp" break; case 375: /* function_expr: operand '-' operand */ @@ -7271,7 +7273,7 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7275 "parser.cpp" +#line 7277 "parser.cpp" break; case 376: /* function_expr: operand '+' operand */ @@ -7284,7 +7286,7 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7288 "parser.cpp" +#line 7290 "parser.cpp" break; case 377: /* function_expr: operand '*' operand */ @@ -7297,7 +7299,7 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7301 "parser.cpp" +#line 7303 "parser.cpp" break; case 378: /* function_expr: operand '/' operand */ @@ -7310,7 +7312,7 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7314 "parser.cpp" +#line 7316 "parser.cpp" break; case 379: /* function_expr: operand '%' operand */ @@ -7323,7 +7325,7 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7327 "parser.cpp" +#line 7329 "parser.cpp" break; case 380: /* function_expr: operand '=' operand */ @@ -7336,7 +7338,7 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7340 "parser.cpp" +#line 7342 "parser.cpp" break; case 381: /* function_expr: operand EQUAL operand */ @@ -7349,7 +7351,7 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7353 "parser.cpp" +#line 7355 "parser.cpp" break; case 382: /* function_expr: operand NOT_EQ operand */ @@ -7362,7 +7364,7 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7366 "parser.cpp" +#line 7368 "parser.cpp" break; case 383: /* function_expr: operand '<' operand */ @@ -7375,7 +7377,7 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7379 "parser.cpp" +#line 7381 "parser.cpp" break; case 384: /* function_expr: operand '>' operand */ @@ -7388,7 +7390,7 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7392 "parser.cpp" +#line 7394 "parser.cpp" break; case 385: /* function_expr: operand LESS_EQ operand */ @@ -7401,7 +7403,7 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7405 "parser.cpp" +#line 7407 "parser.cpp" break; case 386: /* function_expr: operand GREATER_EQ operand */ @@ -7414,7 +7416,7 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7418 "parser.cpp" +#line 7420 "parser.cpp" break; case 387: /* function_expr: EXTRACT '(' STRING FROM operand ')' */ @@ -7449,7 +7451,7 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[-1].expr_t)); (yyval.expr_t) = func_expr; } -#line 7453 "parser.cpp" +#line 7455 "parser.cpp" break; case 388: /* function_expr: operand LIKE operand */ @@ -7462,7 +7464,7 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7466 "parser.cpp" +#line 7468 "parser.cpp" break; case 389: /* function_expr: operand NOT LIKE operand */ @@ -7475,7 +7477,7 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7479 "parser.cpp" +#line 7481 "parser.cpp" break; case 390: /* conjunction_expr: expr AND expr */ @@ -7488,7 +7490,7 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7492 "parser.cpp" +#line 7494 "parser.cpp" break; case 391: /* conjunction_expr: expr OR expr */ @@ -7501,7 +7503,7 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7505 "parser.cpp" +#line 7507 "parser.cpp" break; case 392: /* between_expr: operand BETWEEN operand AND operand */ @@ -7513,7 +7515,7 @@ YYLTYPE yylloc = yyloc_default; between_expr->upper_bound_ = (yyvsp[0].expr_t); (yyval.expr_t) = between_expr; } -#line 7517 "parser.cpp" +#line 7519 "parser.cpp" break; case 393: /* in_expr: operand IN '(' expr_array ')' */ @@ -7524,7 +7526,7 @@ YYLTYPE yylloc = yyloc_default; in_expr->arguments_ = (yyvsp[-1].expr_array_t); (yyval.expr_t) = in_expr; } -#line 7528 "parser.cpp" +#line 7530 "parser.cpp" break; case 394: /* in_expr: operand NOT IN '(' expr_array ')' */ @@ -7535,7 +7537,7 @@ YYLTYPE yylloc = yyloc_default; in_expr->arguments_ = (yyvsp[-1].expr_array_t); (yyval.expr_t) = in_expr; } -#line 7539 "parser.cpp" +#line 7541 "parser.cpp" break; case 395: /* case_expr: CASE expr case_check_array END */ @@ -7546,7 +7548,7 @@ YYLTYPE yylloc = yyloc_default; case_expr->case_check_array_ = (yyvsp[-1].case_check_array_t); (yyval.expr_t) = case_expr; } -#line 7550 "parser.cpp" +#line 7552 "parser.cpp" break; case 396: /* case_expr: CASE expr case_check_array ELSE expr END */ @@ -7558,7 +7560,7 @@ YYLTYPE yylloc = yyloc_default; case_expr->else_expr_ = (yyvsp[-1].expr_t); (yyval.expr_t) = case_expr; } -#line 7562 "parser.cpp" +#line 7564 "parser.cpp" break; case 397: /* case_expr: CASE case_check_array END */ @@ -7568,7 +7570,7 @@ YYLTYPE yylloc = yyloc_default; case_expr->case_check_array_ = (yyvsp[-1].case_check_array_t); (yyval.expr_t) = case_expr; } -#line 7572 "parser.cpp" +#line 7574 "parser.cpp" break; case 398: /* case_expr: CASE case_check_array ELSE expr END */ @@ -7579,7 +7581,7 @@ YYLTYPE yylloc = yyloc_default; case_expr->else_expr_ = (yyvsp[-1].expr_t); (yyval.expr_t) = case_expr; } -#line 7583 "parser.cpp" +#line 7585 "parser.cpp" break; case 399: /* case_check_array: WHEN expr THEN expr */ @@ -7591,7 +7593,7 @@ YYLTYPE yylloc = yyloc_default; when_then_ptr->then_ = (yyvsp[0].expr_t); (yyval.case_check_array_t)->emplace_back(when_then_ptr); } -#line 7595 "parser.cpp" +#line 7597 "parser.cpp" break; case 400: /* case_check_array: case_check_array WHEN expr THEN expr */ @@ -7603,7 +7605,7 @@ 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 7607 "parser.cpp" +#line 7609 "parser.cpp" break; case 401: /* cast_expr: CAST '(' expr AS column_type ')' */ @@ -7634,7 +7636,7 @@ YYLTYPE yylloc = yyloc_default; cast_expr->expr_ = (yyvsp[-3].expr_t); (yyval.expr_t) = cast_expr; } -#line 7638 "parser.cpp" +#line 7640 "parser.cpp" break; case 402: /* subquery_expr: EXISTS '(' select_without_paren ')' */ @@ -7645,7 +7647,7 @@ YYLTYPE yylloc = yyloc_default; subquery_expr->select_ = (yyvsp[-1].select_stmt); (yyval.expr_t) = subquery_expr; } -#line 7649 "parser.cpp" +#line 7651 "parser.cpp" break; case 403: /* subquery_expr: NOT EXISTS '(' select_without_paren ')' */ @@ -7656,7 +7658,7 @@ YYLTYPE yylloc = yyloc_default; subquery_expr->select_ = (yyvsp[-1].select_stmt); (yyval.expr_t) = subquery_expr; } -#line 7660 "parser.cpp" +#line 7662 "parser.cpp" break; case 404: /* subquery_expr: operand IN '(' select_without_paren ')' */ @@ -7668,7 +7670,7 @@ YYLTYPE yylloc = yyloc_default; subquery_expr->select_ = (yyvsp[-1].select_stmt); (yyval.expr_t) = subquery_expr; } -#line 7672 "parser.cpp" +#line 7674 "parser.cpp" break; case 405: /* subquery_expr: operand NOT IN '(' select_without_paren ')' */ @@ -7680,7 +7682,7 @@ YYLTYPE yylloc = yyloc_default; subquery_expr->select_ = (yyvsp[-1].select_stmt); (yyval.expr_t) = subquery_expr; } -#line 7684 "parser.cpp" +#line 7686 "parser.cpp" break; case 406: /* column_expr: IDENTIFIER */ @@ -7692,7 +7694,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[0].str_value)); (yyval.expr_t) = column_expr; } -#line 7696 "parser.cpp" +#line 7698 "parser.cpp" break; case 407: /* column_expr: column_expr '.' IDENTIFIER */ @@ -7704,7 +7706,7 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[0].str_value)); (yyval.expr_t) = column_expr; } -#line 7708 "parser.cpp" +#line 7710 "parser.cpp" break; case 408: /* column_expr: '*' */ @@ -7714,7 +7716,7 @@ YYLTYPE yylloc = yyloc_default; column_expr->star_ = true; (yyval.expr_t) = column_expr; } -#line 7718 "parser.cpp" +#line 7720 "parser.cpp" break; case 409: /* column_expr: column_expr '.' '*' */ @@ -7728,7 +7730,7 @@ YYLTYPE yylloc = yyloc_default; column_expr->star_ = true; (yyval.expr_t) = column_expr; } -#line 7732 "parser.cpp" +#line 7734 "parser.cpp" break; case 410: /* constant_expr: STRING */ @@ -7738,7 +7740,7 @@ YYLTYPE yylloc = yyloc_default; const_expr->str_value_ = (yyvsp[0].str_value); (yyval.const_expr_t) = const_expr; } -#line 7742 "parser.cpp" +#line 7744 "parser.cpp" break; case 411: /* constant_expr: TRUE */ @@ -7748,7 +7750,7 @@ YYLTYPE yylloc = yyloc_default; const_expr->bool_value_ = true; (yyval.const_expr_t) = const_expr; } -#line 7752 "parser.cpp" +#line 7754 "parser.cpp" break; case 412: /* constant_expr: FALSE */ @@ -7758,7 +7760,7 @@ YYLTYPE yylloc = yyloc_default; const_expr->bool_value_ = false; (yyval.const_expr_t) = const_expr; } -#line 7762 "parser.cpp" +#line 7764 "parser.cpp" break; case 413: /* constant_expr: DOUBLE_VALUE */ @@ -7768,7 +7770,7 @@ YYLTYPE yylloc = yyloc_default; const_expr->double_value_ = (yyvsp[0].double_value); (yyval.const_expr_t) = const_expr; } -#line 7772 "parser.cpp" +#line 7774 "parser.cpp" break; case 414: /* constant_expr: LONG_VALUE */ @@ -7778,7 +7780,7 @@ YYLTYPE yylloc = yyloc_default; const_expr->integer_value_ = (yyvsp[0].long_value); (yyval.const_expr_t) = const_expr; } -#line 7782 "parser.cpp" +#line 7784 "parser.cpp" break; case 415: /* constant_expr: DATE STRING */ @@ -7788,7 +7790,7 @@ YYLTYPE yylloc = yyloc_default; const_expr->date_value_ = (yyvsp[0].str_value); (yyval.const_expr_t) = const_expr; } -#line 7792 "parser.cpp" +#line 7794 "parser.cpp" break; case 416: /* constant_expr: TIME STRING */ @@ -7798,7 +7800,7 @@ YYLTYPE yylloc = yyloc_default; const_expr->date_value_ = (yyvsp[0].str_value); (yyval.const_expr_t) = const_expr; } -#line 7802 "parser.cpp" +#line 7804 "parser.cpp" break; case 417: /* constant_expr: DATETIME STRING */ @@ -7808,7 +7810,7 @@ YYLTYPE yylloc = yyloc_default; const_expr->date_value_ = (yyvsp[0].str_value); (yyval.const_expr_t) = const_expr; } -#line 7812 "parser.cpp" +#line 7814 "parser.cpp" break; case 418: /* constant_expr: TIMESTAMP STRING */ @@ -7818,7 +7820,7 @@ YYLTYPE yylloc = yyloc_default; const_expr->date_value_ = (yyvsp[0].str_value); (yyval.const_expr_t) = const_expr; } -#line 7822 "parser.cpp" +#line 7824 "parser.cpp" break; case 419: /* constant_expr: INTERVAL interval_expr */ @@ -7826,7 +7828,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 7830 "parser.cpp" +#line 7832 "parser.cpp" break; case 420: /* constant_expr: interval_expr */ @@ -7834,7 +7836,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 7838 "parser.cpp" +#line 7840 "parser.cpp" break; case 421: /* constant_expr: common_array_expr */ @@ -7842,7 +7844,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 7846 "parser.cpp" +#line 7848 "parser.cpp" break; case 422: /* common_array_expr: array_expr */ @@ -7850,7 +7852,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 7854 "parser.cpp" +#line 7856 "parser.cpp" break; case 423: /* common_array_expr: subarray_array_expr */ @@ -7858,7 +7860,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 7862 "parser.cpp" +#line 7864 "parser.cpp" break; case 424: /* common_array_expr: sparse_array_expr */ @@ -7866,7 +7868,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 7870 "parser.cpp" +#line 7872 "parser.cpp" break; case 425: /* common_array_expr: empty_array_expr */ @@ -7874,7 +7876,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 7878 "parser.cpp" +#line 7880 "parser.cpp" break; case 426: /* common_sparse_array_expr: sparse_array_expr */ @@ -7882,7 +7884,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 7886 "parser.cpp" +#line 7888 "parser.cpp" break; case 427: /* common_sparse_array_expr: array_expr */ @@ -7890,7 +7892,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 7894 "parser.cpp" +#line 7896 "parser.cpp" break; case 428: /* common_sparse_array_expr: empty_array_expr */ @@ -7898,7 +7900,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 7902 "parser.cpp" +#line 7904 "parser.cpp" break; case 429: /* subarray_array_expr: unclosed_subarray_array_expr ']' */ @@ -7906,7 +7908,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.const_expr_t) = (yyvsp[-1].const_expr_t); } -#line 7910 "parser.cpp" +#line 7912 "parser.cpp" break; case 430: /* unclosed_subarray_array_expr: '[' common_array_expr */ @@ -7916,7 +7918,7 @@ YYLTYPE yylloc = yyloc_default; const_expr->sub_array_array_.emplace_back((yyvsp[0].const_expr_t)); (yyval.const_expr_t) = const_expr; } -#line 7920 "parser.cpp" +#line 7922 "parser.cpp" break; case 431: /* unclosed_subarray_array_expr: unclosed_subarray_array_expr ',' common_array_expr */ @@ -7925,7 +7927,7 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-2].const_expr_t)->sub_array_array_.emplace_back((yyvsp[0].const_expr_t)); (yyval.const_expr_t) = (yyvsp[-2].const_expr_t); } -#line 7929 "parser.cpp" +#line 7931 "parser.cpp" break; case 432: /* sparse_array_expr: long_sparse_array_expr */ @@ -7933,7 +7935,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 7937 "parser.cpp" +#line 7939 "parser.cpp" break; case 433: /* sparse_array_expr: double_sparse_array_expr */ @@ -7941,7 +7943,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 7945 "parser.cpp" +#line 7947 "parser.cpp" break; case 434: /* long_sparse_array_expr: unclosed_long_sparse_array_expr ']' */ @@ -7949,7 +7951,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.const_expr_t) = (yyvsp[-1].const_expr_t); } -#line 7953 "parser.cpp" +#line 7955 "parser.cpp" break; case 435: /* unclosed_long_sparse_array_expr: '[' int_sparse_ele */ @@ -7961,7 +7963,7 @@ YYLTYPE yylloc = yyloc_default; delete (yyvsp[0].int_sparse_ele_t); (yyval.const_expr_t) = const_expr; } -#line 7965 "parser.cpp" +#line 7967 "parser.cpp" break; case 436: /* unclosed_long_sparse_array_expr: unclosed_long_sparse_array_expr ',' int_sparse_ele */ @@ -7972,7 +7974,7 @@ YYLTYPE yylloc = yyloc_default; delete (yyvsp[0].int_sparse_ele_t); (yyval.const_expr_t) = (yyvsp[-2].const_expr_t); } -#line 7976 "parser.cpp" +#line 7978 "parser.cpp" break; case 437: /* double_sparse_array_expr: unclosed_double_sparse_array_expr ']' */ @@ -7980,7 +7982,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.const_expr_t) = (yyvsp[-1].const_expr_t); } -#line 7984 "parser.cpp" +#line 7986 "parser.cpp" break; case 438: /* unclosed_double_sparse_array_expr: '[' float_sparse_ele */ @@ -7992,7 +7994,7 @@ YYLTYPE yylloc = yyloc_default; delete (yyvsp[0].float_sparse_ele_t); (yyval.const_expr_t) = const_expr; } -#line 7996 "parser.cpp" +#line 7998 "parser.cpp" break; case 439: /* unclosed_double_sparse_array_expr: unclosed_double_sparse_array_expr ',' float_sparse_ele */ @@ -8003,7 +8005,7 @@ YYLTYPE yylloc = yyloc_default; delete (yyvsp[0].float_sparse_ele_t); (yyval.const_expr_t) = (yyvsp[-2].const_expr_t); } -#line 8007 "parser.cpp" +#line 8009 "parser.cpp" break; case 440: /* empty_array_expr: '[' ']' */ @@ -8011,7 +8013,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.const_expr_t) = new infinity::ConstantExpr(infinity::LiteralType::kEmptyArray); } -#line 8015 "parser.cpp" +#line 8017 "parser.cpp" break; case 441: /* int_sparse_ele: LONG_VALUE ':' LONG_VALUE */ @@ -8019,7 +8021,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.int_sparse_ele_t) = new std::pair{(yyvsp[-2].long_value), (yyvsp[0].long_value)}; } -#line 8023 "parser.cpp" +#line 8025 "parser.cpp" break; case 442: /* float_sparse_ele: LONG_VALUE ':' DOUBLE_VALUE */ @@ -8027,7 +8029,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.float_sparse_ele_t) = new std::pair{(yyvsp[-2].long_value), (yyvsp[0].double_value)}; } -#line 8031 "parser.cpp" +#line 8033 "parser.cpp" break; case 443: /* array_expr: long_array_expr */ @@ -8035,7 +8037,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 8039 "parser.cpp" +#line 8041 "parser.cpp" break; case 444: /* array_expr: double_array_expr */ @@ -8043,7 +8045,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 8047 "parser.cpp" +#line 8049 "parser.cpp" break; case 445: /* long_array_expr: unclosed_long_array_expr ']' */ @@ -8051,7 +8053,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.const_expr_t) = (yyvsp[-1].const_expr_t); } -#line 8055 "parser.cpp" +#line 8057 "parser.cpp" break; case 446: /* unclosed_long_array_expr: '[' LONG_VALUE */ @@ -8061,7 +8063,7 @@ YYLTYPE yylloc = yyloc_default; const_expr->long_array_.emplace_back((yyvsp[0].long_value)); (yyval.const_expr_t) = const_expr; } -#line 8065 "parser.cpp" +#line 8067 "parser.cpp" break; case 447: /* unclosed_long_array_expr: unclosed_long_array_expr ',' LONG_VALUE */ @@ -8070,7 +8072,7 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-2].const_expr_t)->long_array_.emplace_back((yyvsp[0].long_value)); (yyval.const_expr_t) = (yyvsp[-2].const_expr_t); } -#line 8074 "parser.cpp" +#line 8076 "parser.cpp" break; case 448: /* double_array_expr: unclosed_double_array_expr ']' */ @@ -8078,7 +8080,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.const_expr_t) = (yyvsp[-1].const_expr_t); } -#line 8082 "parser.cpp" +#line 8084 "parser.cpp" break; case 449: /* unclosed_double_array_expr: '[' DOUBLE_VALUE */ @@ -8088,7 +8090,7 @@ YYLTYPE yylloc = yyloc_default; const_expr->double_array_.emplace_back((yyvsp[0].double_value)); (yyval.const_expr_t) = const_expr; } -#line 8092 "parser.cpp" +#line 8094 "parser.cpp" break; case 450: /* unclosed_double_array_expr: unclosed_double_array_expr ',' DOUBLE_VALUE */ @@ -8097,7 +8099,7 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-2].const_expr_t)->double_array_.emplace_back((yyvsp[0].double_value)); (yyval.const_expr_t) = (yyvsp[-2].const_expr_t); } -#line 8101 "parser.cpp" +#line 8103 "parser.cpp" break; case 451: /* interval_expr: LONG_VALUE SECONDS */ @@ -8108,7 +8110,7 @@ YYLTYPE yylloc = yyloc_default; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 8112 "parser.cpp" +#line 8114 "parser.cpp" break; case 452: /* interval_expr: LONG_VALUE SECOND */ @@ -8119,7 +8121,7 @@ YYLTYPE yylloc = yyloc_default; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 8123 "parser.cpp" +#line 8125 "parser.cpp" break; case 453: /* interval_expr: LONG_VALUE MINUTES */ @@ -8130,7 +8132,7 @@ YYLTYPE yylloc = yyloc_default; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 8134 "parser.cpp" +#line 8136 "parser.cpp" break; case 454: /* interval_expr: LONG_VALUE MINUTE */ @@ -8141,7 +8143,7 @@ YYLTYPE yylloc = yyloc_default; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 8145 "parser.cpp" +#line 8147 "parser.cpp" break; case 455: /* interval_expr: LONG_VALUE HOURS */ @@ -8152,7 +8154,7 @@ YYLTYPE yylloc = yyloc_default; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 8156 "parser.cpp" +#line 8158 "parser.cpp" break; case 456: /* interval_expr: LONG_VALUE HOUR */ @@ -8163,7 +8165,7 @@ YYLTYPE yylloc = yyloc_default; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 8167 "parser.cpp" +#line 8169 "parser.cpp" break; case 457: /* interval_expr: LONG_VALUE DAYS */ @@ -8174,7 +8176,7 @@ YYLTYPE yylloc = yyloc_default; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 8178 "parser.cpp" +#line 8180 "parser.cpp" break; case 458: /* interval_expr: LONG_VALUE DAY */ @@ -8185,7 +8187,7 @@ YYLTYPE yylloc = yyloc_default; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 8189 "parser.cpp" +#line 8191 "parser.cpp" break; case 459: /* interval_expr: LONG_VALUE MONTHS */ @@ -8196,7 +8198,7 @@ YYLTYPE yylloc = yyloc_default; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 8200 "parser.cpp" +#line 8202 "parser.cpp" break; case 460: /* interval_expr: LONG_VALUE MONTH */ @@ -8207,7 +8209,7 @@ YYLTYPE yylloc = yyloc_default; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 8211 "parser.cpp" +#line 8213 "parser.cpp" break; case 461: /* interval_expr: LONG_VALUE YEARS */ @@ -8218,7 +8220,7 @@ YYLTYPE yylloc = yyloc_default; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 8222 "parser.cpp" +#line 8224 "parser.cpp" break; case 462: /* interval_expr: LONG_VALUE YEAR */ @@ -8229,7 +8231,7 @@ YYLTYPE yylloc = yyloc_default; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 8233 "parser.cpp" +#line 8235 "parser.cpp" break; case 463: /* copy_option_list: copy_option */ @@ -8238,7 +8240,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.copy_option_array) = new std::vector(); (yyval.copy_option_array)->push_back((yyvsp[0].copy_option_t)); } -#line 8242 "parser.cpp" +#line 8244 "parser.cpp" break; case 464: /* copy_option_list: copy_option_list ',' copy_option */ @@ -8247,7 +8249,7 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-2].copy_option_array)->push_back((yyvsp[0].copy_option_t)); (yyval.copy_option_array) = (yyvsp[-2].copy_option_array); } -#line 8251 "parser.cpp" +#line 8253 "parser.cpp" break; case 465: /* copy_option: FORMAT IDENTIFIER */ @@ -8282,7 +8284,7 @@ YYLTYPE yylloc = yyloc_default; YYERROR; } } -#line 8286 "parser.cpp" +#line 8288 "parser.cpp" break; case 466: /* copy_option: DELIMITER STRING */ @@ -8297,7 +8299,7 @@ YYLTYPE yylloc = yyloc_default; } free((yyvsp[0].str_value)); } -#line 8301 "parser.cpp" +#line 8303 "parser.cpp" break; case 467: /* copy_option: HEADER */ @@ -8307,7 +8309,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.copy_option_t)->option_type_ = infinity::CopyOptionType::kHeader; (yyval.copy_option_t)->header_ = true; } -#line 8311 "parser.cpp" +#line 8313 "parser.cpp" break; case 468: /* copy_option: OFFSET LONG_VALUE */ @@ -8317,7 +8319,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.copy_option_t)->option_type_ = infinity::CopyOptionType::kOffset; (yyval.copy_option_t)->offset_ = (yyvsp[0].long_value); } -#line 8321 "parser.cpp" +#line 8323 "parser.cpp" break; case 469: /* copy_option: LIMIT LONG_VALUE */ @@ -8327,7 +8329,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.copy_option_t)->option_type_ = infinity::CopyOptionType::kLimit; (yyval.copy_option_t)->limit_ = (yyvsp[0].long_value); } -#line 8331 "parser.cpp" +#line 8333 "parser.cpp" break; case 470: /* copy_option: ROWLIMIT LONG_VALUE */ @@ -8337,7 +8339,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.copy_option_t)->option_type_ = infinity::CopyOptionType::kRowLimit; (yyval.copy_option_t)->row_limit_ = (yyvsp[0].long_value); } -#line 8341 "parser.cpp" +#line 8343 "parser.cpp" break; case 471: /* file_path: STRING */ @@ -8345,31 +8347,31 @@ YYLTYPE yylloc = yyloc_default; { (yyval.str_value) = (yyvsp[0].str_value); } -#line 8349 "parser.cpp" +#line 8351 "parser.cpp" break; case 472: /* if_exists: IF EXISTS */ #line 3421 "parser.y" { (yyval.bool_value) = true; } -#line 8355 "parser.cpp" +#line 8357 "parser.cpp" break; case 473: /* if_exists: %empty */ #line 3422 "parser.y" { (yyval.bool_value) = false; } -#line 8361 "parser.cpp" +#line 8363 "parser.cpp" break; case 474: /* if_not_exists: IF NOT EXISTS */ #line 3424 "parser.y" { (yyval.bool_value) = true; } -#line 8367 "parser.cpp" +#line 8369 "parser.cpp" break; case 475: /* if_not_exists: %empty */ #line 3425 "parser.y" { (yyval.bool_value) = false; } -#line 8373 "parser.cpp" +#line 8375 "parser.cpp" break; case 478: /* if_not_exists_info: if_not_exists IDENTIFIER */ @@ -8382,7 +8384,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.if_not_exists_info_t)->info_ = (yyvsp[0].str_value); free((yyvsp[0].str_value)); } -#line 8386 "parser.cpp" +#line 8388 "parser.cpp" break; case 479: /* if_not_exists_info: %empty */ @@ -8390,7 +8392,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.if_not_exists_info_t) = new infinity::IfNotExistsInfo(); } -#line 8394 "parser.cpp" +#line 8396 "parser.cpp" break; case 480: /* with_index_param_list: WITH '(' index_param_list ')' */ @@ -8398,7 +8400,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.with_index_param_list_t) = (yyvsp[-1].index_param_list_t); } -#line 8402 "parser.cpp" +#line 8404 "parser.cpp" break; case 481: /* with_index_param_list: %empty */ @@ -8406,7 +8408,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.with_index_param_list_t) = new std::vector(); } -#line 8410 "parser.cpp" +#line 8412 "parser.cpp" break; case 482: /* optional_table_properties_list: PROPERTIES '(' index_param_list ')' */ @@ -8414,7 +8416,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.with_index_param_list_t) = (yyvsp[-1].index_param_list_t); } -#line 8418 "parser.cpp" +#line 8420 "parser.cpp" break; case 483: /* optional_table_properties_list: %empty */ @@ -8422,7 +8424,7 @@ YYLTYPE yylloc = yyloc_default; { (yyval.with_index_param_list_t) = nullptr; } -#line 8426 "parser.cpp" +#line 8428 "parser.cpp" break; case 484: /* index_param_list: index_param */ @@ -8431,7 +8433,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.index_param_list_t) = new std::vector(); (yyval.index_param_list_t)->push_back((yyvsp[0].index_param_t)); } -#line 8435 "parser.cpp" +#line 8437 "parser.cpp" break; case 485: /* index_param_list: index_param_list ',' index_param */ @@ -8440,7 +8442,7 @@ YYLTYPE yylloc = yyloc_default; (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 8444 "parser.cpp" +#line 8446 "parser.cpp" break; case 486: /* index_param: IDENTIFIER */ @@ -8451,7 +8453,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.index_param_t)->param_name_ = (yyvsp[0].str_value); free((yyvsp[0].str_value)); } -#line 8455 "parser.cpp" +#line 8457 "parser.cpp" break; case 487: /* index_param: IDENTIFIER '=' IDENTIFIER */ @@ -8466,11 +8468,26 @@ YYLTYPE yylloc = yyloc_default; (yyval.index_param_t)->param_value_ = (yyvsp[0].str_value); free((yyvsp[0].str_value)); } -#line 8470 "parser.cpp" +#line 8472 "parser.cpp" break; - case 488: /* index_param: IDENTIFIER '=' LONG_VALUE */ + case 488: /* index_param: IDENTIFIER '=' STRING */ #line 3491 "parser.y" + { + ParserHelper::ToLower((yyvsp[-2].str_value)); + ParserHelper::ToLower((yyvsp[0].str_value)); + (yyval.index_param_t) = new infinity::InitParameter(); + (yyval.index_param_t)->param_name_ = (yyvsp[-2].str_value); + free((yyvsp[-2].str_value)); + + (yyval.index_param_t)->param_value_ = (yyvsp[0].str_value); + free((yyvsp[0].str_value)); +} +#line 8487 "parser.cpp" + break; + + case 489: /* index_param: IDENTIFIER '=' LONG_VALUE */ +#line 3501 "parser.y" { ParserHelper::ToLower((yyvsp[-2].str_value)); (yyval.index_param_t) = new infinity::InitParameter(); @@ -8479,11 +8496,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.index_param_t)->param_value_ = std::to_string((yyvsp[0].long_value)); } -#line 8483 "parser.cpp" +#line 8500 "parser.cpp" break; - case 489: /* index_param: IDENTIFIER '=' DOUBLE_VALUE */ -#line 3499 "parser.y" + case 490: /* index_param: IDENTIFIER '=' DOUBLE_VALUE */ +#line 3509 "parser.y" { ParserHelper::ToLower((yyvsp[-2].str_value)); (yyval.index_param_t) = new infinity::InitParameter(); @@ -8492,11 +8509,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.index_param_t)->param_value_ = std::to_string((yyvsp[0].double_value)); } -#line 8496 "parser.cpp" +#line 8513 "parser.cpp" break; - case 490: /* index_info: '(' IDENTIFIER ')' USING IDENTIFIER with_index_param_list */ -#line 3510 "parser.y" + case 491: /* index_info: '(' IDENTIFIER ')' USING IDENTIFIER with_index_param_list */ +#line 3520 "parser.y" { ParserHelper::ToLower((yyvsp[-1].str_value)); infinity::IndexType index_type = infinity::IndexType::kInvalid; @@ -8528,22 +8545,22 @@ YYLTYPE yylloc = yyloc_default; (yyval.index_info_t)->index_param_list_ = (yyvsp[0].with_index_param_list_t); free((yyvsp[-4].str_value)); } -#line 8532 "parser.cpp" +#line 8549 "parser.cpp" break; - case 491: /* index_info: '(' IDENTIFIER ')' */ -#line 3541 "parser.y" + case 492: /* index_info: '(' IDENTIFIER ')' */ +#line 3551 "parser.y" { (yyval.index_info_t) = new infinity::IndexInfo(); (yyval.index_info_t)->index_type_ = infinity::IndexType::kSecondary; (yyval.index_info_t)->column_name_ = (yyvsp[-1].str_value); free((yyvsp[-1].str_value)); } -#line 8543 "parser.cpp" +#line 8560 "parser.cpp" break; -#line 8547 "parser.cpp" +#line 8564 "parser.cpp" default: break; } @@ -8772,7 +8789,7 @@ YYLTYPE yylloc = yyloc_default; return yyresult; } -#line 3548 "parser.y" +#line 3558 "parser.y" void diff --git a/src/parser/parser.y b/src/parser/parser.y index 96f0923fbf..cfba610de2 100644 --- a/src/parser/parser.y +++ b/src/parser/parser.y @@ -3488,6 +3488,16 @@ index_param : IDENTIFIER { $$->param_value_ = $3; free($3); } +| IDENTIFIER '=' STRING { + ParserHelper::ToLower($1); + ParserHelper::ToLower($3); + $$ = new infinity::InitParameter(); + $$->param_name_ = $1; + free($1); + + $$->param_value_ = $3; + free($3); +} | IDENTIFIER '=' LONG_VALUE { ParserHelper::ToLower($1); $$ = new infinity::InitParameter(); diff --git a/src/storage/buffer/file_worker/var_file_worker.cpp b/src/storage/buffer/file_worker/var_file_worker.cpp index bf50d0421e..533bdbccb2 100644 --- a/src/storage/buffer/file_worker/var_file_worker.cpp +++ b/src/storage/buffer/file_worker/var_file_worker.cpp @@ -89,7 +89,7 @@ void VarFileWorker::ReadFromFileImpl(SizeT file_size) { String error_message = "Data is not allocated."; UnrecoverableError(error_message); } - if (file_size != buffer_size_) { + if (file_size < buffer_size_) { String error_message = fmt::format("File size {} is smaller than buffer size {}.", file_size, buffer_size_); UnrecoverableError(error_message); } diff --git a/src/unit_test/common/analyzer/user_defined_analyzer.cpp b/src/unit_test/common/analyzer/user_defined_analyzer.cpp new file mode 100644 index 0000000000..aa249b9b7f --- /dev/null +++ b/src/unit_test/common/analyzer/user_defined_analyzer.cpp @@ -0,0 +1,85 @@ +// Copyright(C) 2023 InfiniFlow, Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "unit_test/base_test.h" + +import stl; +import user_defined_analyzer; +import compilation_config; +import status; + +using namespace infinity; + +class UserDefinedAnalyzerTest : public BaseTest {}; + +TEST_F(UserDefinedAnalyzerTest, test1) { + UserDefinedAnalyzer analyzer(std::string(test_data_path()) + "/scripts/uda1.py"); + Status s1 = analyzer.Init(); + EXPECT_TRUE(s1.ok()); + auto [term_vector, status] = analyzer.Analyze("text1 text2 text3"); + EXPECT_TRUE(status.ok()); + EXPECT_STREQ(term_vector[0].c_str(), "text1"); + EXPECT_STREQ(term_vector[1].c_str(), "text2"); + EXPECT_STREQ(term_vector[2].c_str(), "text3"); + analyzer.UnInit(); +} + +TEST_F(UserDefinedAnalyzerTest, test2) { + SizeT thread_count = 1; + std::vector threads; + threads.reserve(thread_count); + for (SizeT i = 0; i < thread_count; ++i) { + threads.push_back(std::thread([&] { + UserDefinedAnalyzer analyzer(std::string(test_data_path()) + "/scripts/uda1.py"); + Status s1 = analyzer.Init(); + EXPECT_TRUE(s1.ok()); + auto [term_vector, status] = analyzer.Analyze("text1 text2 text3"); + EXPECT_TRUE(status.ok()); + EXPECT_STREQ(term_vector[0].c_str(), "text1"); + EXPECT_STREQ(term_vector[1].c_str(), "text2"); + EXPECT_STREQ(term_vector[2].c_str(), "text3"); + analyzer.UnInit(); + })); + } + + for (SizeT i = 0; i < thread_count; ++i) { + threads[i].join(); + } +} + +TEST_F(UserDefinedAnalyzerTest, test3) { + UserDefinedAnalyzer analyzer(std::string(test_data_path()) + "/scripts/uda2.py"); + Status s1 = analyzer.Init(); + EXPECT_FALSE(s1.ok()); + EXPECT_EQ(s1.code(), ErrorCode::kFailToRunPython); + analyzer.UnInit(); +} + +TEST_F(UserDefinedAnalyzerTest, test4) { + UserDefinedAnalyzer analyzer(std::string(test_data_path()) + "/scripts/uda3.py"); + Status s1 = analyzer.Init(); + EXPECT_FALSE(s1.ok()); + EXPECT_EQ(s1.code(), ErrorCode::kFailToRunPython); + analyzer.UnInit(); +} + +TEST_F(UserDefinedAnalyzerTest, test5) { + UserDefinedAnalyzer analyzer(std::string(test_data_path()) + "/scripts/uda4.py"); + Status s1 = analyzer.Init(); + EXPECT_TRUE(s1.ok()); + + auto [term_vector, status] = analyzer.Analyze("text1 text2 text3"); + EXPECT_EQ(status.code(), ErrorCode::kFailToRunPython); + analyzer.UnInit(); +} diff --git a/src/unit_test/common/analyzer/user_defined_term_weight.cpp b/src/unit_test/common/analyzer/user_defined_term_weight.cpp new file mode 100644 index 0000000000..b85982e867 --- /dev/null +++ b/src/unit_test/common/analyzer/user_defined_term_weight.cpp @@ -0,0 +1,97 @@ +// Copyright(C) 2023 InfiniFlow, Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "unit_test/base_test.h" + +import stl; +import user_defined_term_weight; +import compilation_config; +import status; + +using namespace infinity; + +class UserDefinedTermWeightTest : public BaseTest {}; + +TEST_F(UserDefinedTermWeightTest, test1) { + UserDefinedTermWeight term_weight(std::string(test_data_path()) + "/scripts/uda5.py"); + Status s1 = term_weight.Init(); + EXPECT_TRUE(s1.ok()); + Vector vec_str; + vec_str.push_back("text1"); + vec_str.push_back("text2"); + vec_str.push_back("text3"); + auto [term_map, status] = term_weight.Run(vec_str); + EXPECT_TRUE(status.ok()); + EXPECT_EQ(term_map["a"], 1.0); + EXPECT_EQ(term_map["b"], 2.0); + EXPECT_EQ(term_map["c"], 3.0); + term_weight.UnInit(); +} + +TEST_F(UserDefinedTermWeightTest, test2) { + SizeT thread_count = 1; + std::vector threads; + threads.reserve(thread_count); + for (SizeT i = 0; i < thread_count; ++i) { + threads.push_back(std::thread([&] { + UserDefinedTermWeight term_weight(std::string(test_data_path()) + "/scripts/uda5.py"); + Status s1 = term_weight.Init(); + EXPECT_TRUE(s1.ok()); + Vector vec_str; + vec_str.push_back("text1"); + vec_str.push_back("text2"); + vec_str.push_back("text3"); + auto [term_map, status] = term_weight.Run(vec_str); + EXPECT_TRUE(status.ok()); + EXPECT_EQ(term_map["a"], 1.0); + EXPECT_EQ(term_map["b"], 2.0); + EXPECT_EQ(term_map["c"], 3.0); + term_weight.UnInit(); + })); + } + + for (SizeT i = 0; i < thread_count; ++i) { + threads[i].join(); + } +} + +TEST_F(UserDefinedTermWeightTest, test3) { + UserDefinedTermWeight term_weight(std::string(test_data_path()) + "/scripts/uda2.py"); + Status s1 = term_weight.Init(); + EXPECT_FALSE(s1.ok()); + EXPECT_EQ(s1.code(), ErrorCode::kFailToRunPython); + term_weight.UnInit(); +} + +TEST_F(UserDefinedTermWeightTest, test4) { + UserDefinedTermWeight term_weight(std::string(test_data_path()) + "/scripts/uda3.py"); + Status s1 = term_weight.Init(); + EXPECT_FALSE(s1.ok()); + EXPECT_EQ(s1.code(), ErrorCode::kFailToRunPython); + term_weight.UnInit(); +} + +TEST_F(UserDefinedTermWeightTest, test5) { + UserDefinedTermWeight term_weight(std::string(test_data_path()) + "/scripts/uda6.py"); + Status s1 = term_weight.Init(); + EXPECT_TRUE(s1.ok()); + + Vector vec_str; + vec_str.push_back("text1"); + vec_str.push_back("text2"); + vec_str.push_back("text3"); + auto [term_map, status] = term_weight.Run(vec_str); + EXPECT_EQ(status.code(), ErrorCode::kFailToRunPython); + term_weight.UnInit(); +} diff --git a/src/unit_test/main/config.cpp b/src/unit_test/main/config.cpp index c72f64c225..b76743863f 100644 --- a/src/unit_test/main/config.cpp +++ b/src/unit_test/main/config.cpp @@ -13,11 +13,13 @@ // limitations under the License. #include "unit_test/base_test.h" +#include import stl; import config; import infinity_exception; import third_party; +import status; import compilation_config; class ConfigTest : public BaseTest {}; @@ -100,3 +102,126 @@ TEST_F(ConfigTest, test2) { EXPECT_EQ(config.TempDir(), "/tmp"); EXPECT_EQ(config.MemIndexMemoryQuota(), 2 * 1024l * 1024l * 1024l); } + +TEST_F(ConfigTest, TestWrongParamNames) { + using namespace infinity; + SharedPtr path = MakeShared(String(test_data_path()) + "/config/test_conf_invalid_param.toml"); + Config config; + auto status = config.Init(path, nullptr); + ASSERT_FALSE(status.ok()); +} + +TEST_F(ConfigTest, TestConfInvalidValues) { + using namespace infinity; + SharedPtr path = MakeShared(String(test_data_path()) + "/config/test_conf_invalid_version.toml"); + Config config_invalid_version; + auto status = config_invalid_version.Init(path, nullptr); + EXPECT_EQ(status.code(), ErrorCode::kMismatchVersion); + + Config config_invalid_timezone; + path = MakeShared(String(test_data_path()) + "/config/test_conf_invalid_timezone.toml"); + status = config_invalid_timezone.Init(path, nullptr); + EXPECT_EQ(status.code(), ErrorCode::kInvalidTimezone); + + Config config_invalid_server_address; + path = MakeShared(String(test_data_path()) + "/config/test_conf_invalid_server_address.toml"); + status = config_invalid_server_address.Init(path, nullptr); + EXPECT_EQ(status.code(), ErrorCode::kInvalidIPAddr); + + Config config_invalid_bytesize; + path = MakeShared(String(test_data_path()) + "/config/test_conf_invalid_bytesize.toml"); + status = config_invalid_bytesize.Init(path, nullptr); + EXPECT_EQ(status.code(), ErrorCode::kInvalidByteSize); + + Config config_invalid_log_level; + path = MakeShared(String(test_data_path()) + "/config/test_conf_invalid_log_level.toml"); + status = config_invalid_log_level.Init(path, nullptr); + EXPECT_EQ(status.code(), ErrorCode::kInvalidLogLevel); + + Config config_invalid_timeinfo; + path = MakeShared(String(test_data_path()) + "/config/test_conf_invalid_timeinfo.toml"); + status = config_invalid_timeinfo.Init(path, nullptr); + EXPECT_EQ(status.code(), ErrorCode::kInvalidTimeInfo); +} + +TEST_F(ConfigTest, TestOutofRangeValues) { + + using namespace infinity; + SharedPtr path = MakeShared(String(test_data_path()) + "/config/test_conf_out_of_bound_bytesize.toml"); + Config config_bytesize; + auto status = config_bytesize.Init(path, nullptr); + EXPECT_EQ(status.code(), ErrorCode::kInvalidConfig); + + Config config_number; + path = MakeShared(String(test_data_path()) + "/config/test_conf_out_of_bound_number.toml"); + status = config_number.Init(path, nullptr); + EXPECT_EQ(status.code(), ErrorCode::kInvalidConfig); + + Config config_timeinfo; + path = MakeShared(String(test_data_path()) + "/config/test_conf_out_of_bound_timeinfo.toml"); + status = config_timeinfo.Init(path, nullptr); + EXPECT_EQ(status.code(), ErrorCode::kInvalidConfig); + + Config config_timezone; + path = MakeShared(String(test_data_path()) + "/config/test_conf_out_of_bound_timezone.toml"); + status = config_timezone.Init(path, nullptr); + EXPECT_EQ(status.code(), ErrorCode::kInvalidConfig); + + Config config_walflush; + path = MakeShared(String(test_data_path()) + "/config/test_conf_out_of_bound_walflush.toml"); + status = config_walflush.Init(path, nullptr); + EXPECT_EQ(status.code(), ErrorCode::kInvalidConfig); + +} + +TEST_F(ConfigTest, TestValidValues) { + using namespace infinity; + SharedPtr path = MakeShared(String(test_data_path()) + "/config/test_conf_valid_value.toml"); + Config config; + auto status = config.Init(path, nullptr); + ASSERT_TRUE(status.ok()); + + EXPECT_EQ(config.Version(), "0.3.0"); + EXPECT_EQ(config.TimeZone(), "UTC"); + EXPECT_EQ(config.TimeZoneBias(), -8); + EXPECT_EQ(config.CPULimit(), 2); + + // Network + EXPECT_EQ(config.ServerAddress(), "0.0.0.0"); + EXPECT_EQ(config.PostgresPort(), 5432); + EXPECT_EQ(config.HTTPPort(), 23820u); + EXPECT_EQ(config.ClientPort(), 23817u); + EXPECT_EQ(config.ConnectionPoolSize(), 128); + + // Log + EXPECT_EQ(config.LogFileName(), "infinity.log"); + EXPECT_EQ(config.LogDir(), "/var/infinity/log"); + EXPECT_EQ(config.LogFilePath(), "/var/infinity/log/infinity.log"); + EXPECT_EQ(config.LogToStdout(), false); + EXPECT_EQ(config.LogFileMaxSize(), 1024l * 1024l * 1024l); + EXPECT_EQ(config.LogFileRotateCount(), 10l); + EXPECT_EQ(config.GetLogLevel(), LogLevel::kInfo); + + //storage + EXPECT_EQ(config.DataDir(), "/var/infinity/data"); + EXPECT_EQ(config.OptimizeIndexInterval(), 10); + EXPECT_EQ(config.CleanupInterval(), 60); + EXPECT_EQ(config.CompactInterval(), 120); + EXPECT_EQ(config.MemIndexCapacity(), 1048576); + + // buffer + EXPECT_EQ(config.BufferManagerSize(), 4 * 1024l * 1024l * 1024l); + EXPECT_EQ(config.LRUNum(), 7); + EXPECT_EQ(config.TempDir(), "/var/infinity/tmp"); + EXPECT_EQ(config.MemIndexMemoryQuota(), 1024l * 1024l * 1024l); + + //wal + EXPECT_EQ(config.WALDir(), "/var/infinity/wal"); + EXPECT_EQ(config.FullCheckpointInterval(), 86400l); + EXPECT_EQ(config.DeltaCheckpointInterval(), 60l); + EXPECT_EQ(config.WALCompactThreshold(), 1024l * 1024l * 1024l); + //resource + EXPECT_EQ(config.ResourcePath(), "/var/infinity/resource"); + //persistence + EXPECT_EQ(config.PersistenceDir(), "/var/infinity/persistence"); +} \ No newline at end of file diff --git a/test/data/config/test_conf_invalid_bytesize.toml b/test/data/config/test_conf_invalid_bytesize.toml new file mode 100644 index 0000000000..6cc13bba61 --- /dev/null +++ b/test/data/config/test_conf_invalid_bytesize.toml @@ -0,0 +1,49 @@ +[general] +version = "0.3.0" +time_zone = "utc-8" + +[network] +server_address = "0.0.0.0" +postgres_port = 5432 +http_port = 23820 +client_port = 23817 +connection_pool_size = 128 + +[log] +log_filename = "infinity.log" +log_dir = "/var/infinity/log" +log_to_stdout = false +log_file_max_size = "10GB" +log_file_rotate_count = 10 + +log_level = "info" + +[storage] +data_dir = "/var/infinity/data" + +optimize_interval = "10s" +cleanup_interval = "60s" +compact_interval = "120s" + +mem_index_capacity = 1048576 + +[buffer] +buffer_manager_size = "1TB" # Changed to "1TB" +lru_num = 7 +temp_dir = "/var/infinity/tmp" + +memindex_memory_quota = "1GB" + +[wal] +wal_dir = "/var/infinity/wal" +full_checkpoint_interval = "86400s" +delta_checkpoint_interval = "60s" +wal_compact_threshold = "1GB" + +wal_flush = "only_write" + +[resource] +resource_dir = "/var/infinity/resource" + +[persistence] +persistence_dir = "/var/infinity/persistence" diff --git a/test/data/config/test_conf_invalid_log_level.toml b/test/data/config/test_conf_invalid_log_level.toml new file mode 100644 index 0000000000..35f5cfd86a --- /dev/null +++ b/test/data/config/test_conf_invalid_log_level.toml @@ -0,0 +1,49 @@ +[general] +version = "0.3.0" +time_zone = "utc-8" + +[network] +server_address = "0.0.0.0" +postgres_port = 5432 +http_port = 23820 +client_port = 23817 +connection_pool_size = 128 + +[log] +log_filename = "infinity.log" +log_dir = "/var/infinity/log" +log_to_stdout = false +log_file_max_size = "10GB" +log_file_rotate_count = 10 + +log_level = "invalid_level" # Changed to "invalid_level" + +[storage] +data_dir = "/var/infinity/data" + +optimize_interval = "10s" +cleanup_interval = "60s" +compact_interval = "120s" + +mem_index_capacity = 1048576 + +[buffer] +buffer_manager_size = "4GB" +lru_num = 7 +temp_dir = "/var/infinity/tmp" + +memindex_memory_quota = "1GB" + +[wal] +wal_dir = "/var/infinity/wal" +full_checkpoint_interval = "86400s" +delta_checkpoint_interval = "60s" +wal_compact_threshold = "1GB" + +wal_flush = "only_write" + +[resource] +resource_dir = "/var/infinity/resource" + +[persistence] +persistence_dir = "/var/infinity/persistence" diff --git a/test/data/config/test_conf_invalid_param.toml b/test/data/config/test_conf_invalid_param.toml new file mode 100644 index 0000000000..4800615bad --- /dev/null +++ b/test/data/config/test_conf_invalid_param.toml @@ -0,0 +1,41 @@ +# testing invalid items in config +# result should be same as default +[ygenera1] +versi0n = "0.4.0" +time_z0ne = "utc-123" +cpu_1imit = 123 + +# right list name, but arguments all wrong +[network] +5erver_address = "127.wrong.0.0.1" +postgre5_port = 254333 +http_p0rt = 24123 +client_p0rt = 1234 +connection_p00l_size = 144 + +# wrong list name, right arguments +[l0g] +log_filename = "info.logwrong" +log_dir = "/var/infinity/logwrong" +log_to_stdout = true +log_file_max_size = "2GB" +log_file_rotate_count = 101 +log_1evel = "tracewrong" + +[st0rage] +data_dir = "/var/infinity/datawrong" + +[bufferrrr] +buffer_mAnager_size = "50GB" +1ru_num = 100 +temp_dIIIr = "/tmpwrong" +memindex_mem0ry_quota = "1GB" + +[wal] +wa1_dir = "/var/infinity/wawrong" + +[resourCEEe] +resource_dffir = "/var/infinity/resourcewrong" + +[persistence] +persistence_dirrr = "/var/infinity/persistencewrong" \ No newline at end of file diff --git a/test/data/config/test_conf_invalid_server_address.toml b/test/data/config/test_conf_invalid_server_address.toml new file mode 100644 index 0000000000..3c9683137e --- /dev/null +++ b/test/data/config/test_conf_invalid_server_address.toml @@ -0,0 +1,49 @@ +[general] +version = "0.3.0" +time_zone = "utc-8" + +[network] +server_address = "999.999.999.999" # Changed to an invalid IP address +postgres_port = 5432 +http_port = 23820 +client_port = 23817 +connection_pool_size = 128 + +[log] +log_filename = "infinity.log" +log_dir = "/var/infinity/log" +log_to_stdout = false +log_file_max_size = "10GB" +log_file_rotate_count = 10 + +log_level = "info" + +[storage] +data_dir = "/var/infinity/data" + +optimize_interval = "10s" +cleanup_interval = "60s" +compact_interval = "120s" + +mem_index_capacity = 1048576 + +[buffer] +buffer_manager_size = "4GB" +lru_num = 7 +temp_dir = "/var/infinity/tmp" + +memindex_memory_quota = "1GB" + +[wal] +wal_dir = "/var/infinity/wal" +full_checkpoint_interval = "86400s" +delta_checkpoint_interval = "60s" +wal_compact_threshold = "1GB" + +wal_flush = "only_write" + +[resource] +resource_dir = "/var/infinity/resource" + +[persistence] +persistence_dir = "/var/infinity/persistence" diff --git a/test/data/config/test_conf_invalid_timeinfo.toml b/test/data/config/test_conf_invalid_timeinfo.toml new file mode 100644 index 0000000000..72ee85dcd3 --- /dev/null +++ b/test/data/config/test_conf_invalid_timeinfo.toml @@ -0,0 +1,49 @@ +[general] +version = "0.3.0" +time_zone = "utc-8" + +[network] +server_address = "0.0.0.0" +postgres_port = 5432 +http_port = 23820 +client_port = 23817 +connection_pool_size = 128 + +[log] +log_filename = "infinity.log" +log_dir = "/var/infinity/log" +log_to_stdout = false +log_file_max_size = "10GB" +log_file_rotate_count = 10 + +log_level = "info" + +[storage] +data_dir = "/var/infinity/data" + +optimize_interval = "1day" # Changed to "1day" +cleanup_interval = "60s" +compact_interval = "120s" + +mem_index_capacity = 1048576 + +[buffer] +buffer_manager_size = "4GB" +lru_num = 7 +temp_dir = "/var/infinity/tmp" + +memindex_memory_quota = "1GB" + +[wal] +wal_dir = "/var/infinity/wal" +full_checkpoint_interval = "86400s" +delta_checkpoint_interval = "60s" +wal_compact_threshold = "1GB" + +wal_flush = "only_write" + +[resource] +resource_dir = "/var/infinity/resource" + +[persistence] +persistence_dir = "/var/infinity/persistence" diff --git a/test/data/config/test_conf_invalid_timezone.toml b/test/data/config/test_conf_invalid_timezone.toml new file mode 100644 index 0000000000..f3cc81599d --- /dev/null +++ b/test/data/config/test_conf_invalid_timezone.toml @@ -0,0 +1,49 @@ +[general] +version = "0.3.0" +time_zone = "invalid_timezone" # Changed to an unparseable string + +[network] +server_address = "0.0.0.0" +postgres_port = 5432 +http_port = 23820 +client_port = 23817 +connection_pool_size = 128 + +[log] +log_filename = "infinity.log" +log_dir = "/var/infinity/log" +log_to_stdout = false +log_file_max_size = "10GB" +log_file_rotate_count = 10 + +log_level = "info" + +[storage] +data_dir = "/var/infinity/data" + +optimize_interval = "10s" +cleanup_interval = "60s" +compact_interval = "120s" + +mem_index_capacity = 1048576 + +[buffer] +buffer_manager_size = "4GB" +lru_num = 7 +temp_dir = "/var/infinity/tmp" + +memindex_memory_quota = "1GB" + +[wal] +wal_dir = "/var/infinity/wal" +full_checkpoint_interval = "86400s" +delta_checkpoint_interval = "60s" +wal_compact_threshold = "1GB" + +wal_flush = "only_write" + +[resource] +resource_dir = "/var/infinity/resource" + +[persistence] +persistence_dir = "/var/infinity/persistence" diff --git a/test/data/config/test_conf_invalid_version.toml b/test/data/config/test_conf_invalid_version.toml new file mode 100644 index 0000000000..7552fb1d5e --- /dev/null +++ b/test/data/config/test_conf_invalid_version.toml @@ -0,0 +1,49 @@ +[general] +version = "3.0.0" # Changed to "3.0.0" +time_zone = "utc-8" + +[network] +server_address = "0.0.0.0" +postgres_port = 5432 +http_port = 23820 +client_port = 23817 +connection_pool_size = 128 + +[log] +log_filename = "infinity.log" +log_dir = "/var/infinity/log" +log_to_stdout = false +log_file_max_size = "10GB" +log_file_rotate_count = 10 + +log_level = "info" + +[storage] +data_dir = "/var/infinity/data" + +optimize_interval = "10s" +cleanup_interval = "60s" +compact_interval = "120s" + +mem_index_capacity = 1048576 + +[buffer] +buffer_manager_size = "4GB" +lru_num = 7 +temp_dir = "/var/infinity/tmp" + +memindex_memory_quota = "1GB" + +[wal] +wal_dir = "/var/infinity/wal" +full_checkpoint_interval = "86400s" +delta_checkpoint_interval = "60s" +wal_compact_threshold = "1GB" + +wal_flush = "only_write" + +[resource] +resource_dir = "/var/infinity/resource" + +[persistence] +persistence_dir = "/var/infinity/persistence" diff --git a/test/data/config/test_conf_out_of_bound_bytesize.toml b/test/data/config/test_conf_out_of_bound_bytesize.toml new file mode 100644 index 0000000000..6598cabf2c --- /dev/null +++ b/test/data/config/test_conf_out_of_bound_bytesize.toml @@ -0,0 +1,49 @@ +[general] +version = "0.3.0" +time_zone = "utc-8" + +[network] +server_address = "0.0.0.0" +postgres_port = 5432 +http_port = 23820 +client_port = 23817 +connection_pool_size = 128 + +[log] +log_filename = "infinity.log" +log_dir = "/var/infinity/log" +log_to_stdout = false +log_file_max_size = "1KB" # Changed to "1KB" +log_file_rotate_count = 10 + +log_level = "info" + +[storage] +data_dir = "/var/infinity/data" + +optimize_interval = "10s" +cleanup_interval = "60s" +compact_interval = "120s" + +mem_index_capacity = 1048576 + +[buffer] +buffer_manager_size = "4GB" +lru_num = 7 +temp_dir = "/var/infinity/tmp" + +memindex_memory_quota = "1GB" + +[wal] +wal_dir = "/var/infinity/wal" +full_checkpoint_interval = "86400s" +delta_checkpoint_interval = "60s" +wal_compact_threshold = "1GB" + +wal_flush = "only_write" + +[resource] +resource_dir = "/var/infinity/resource" + +[persistence] +persistence_dir = "/var/infinity/persistence" diff --git a/test/data/config/test_conf_out_of_bound_number.toml b/test/data/config/test_conf_out_of_bound_number.toml new file mode 100644 index 0000000000..ab76eaca47 --- /dev/null +++ b/test/data/config/test_conf_out_of_bound_number.toml @@ -0,0 +1,49 @@ +[general] +version = "0.3.0" +time_zone = "utc-8" + +[network] +server_address = "0.0.0.0" +postgres_port = 5432 +http_port = 23820 +client_port = 23817 +connection_pool_size = 65538 # Changed to 65538 + +[log] +log_filename = "infinity.log" +log_dir = "/var/infinity/log" +log_to_stdout = false +log_file_max_size = "10GB" +log_file_rotate_count = 10 + +log_level = "info" + +[storage] +data_dir = "/var/infinity/data" + +optimize_interval = "10s" +cleanup_interval = "60s" +compact_interval = "120s" + +mem_index_capacity = 1048576 + +[buffer] +buffer_manager_size = "4GB" +lru_num = 7 +temp_dir = "/var/infinity/tmp" + +memindex_memory_quota = "1GB" + +[wal] +wal_dir = "/var/infinity/wal" +full_checkpoint_interval = "86400s" +delta_checkpoint_interval = "60s" +wal_compact_threshold = "1GB" + +wal_flush = "only_write" + +[resource] +resource_dir = "/var/infinity/resource" + +[persistence] +persistence_dir = "/var/infinity/persistence" diff --git a/test/data/config/test_conf_out_of_bound_timeinfo.toml b/test/data/config/test_conf_out_of_bound_timeinfo.toml new file mode 100644 index 0000000000..9bde973d28 --- /dev/null +++ b/test/data/config/test_conf_out_of_bound_timeinfo.toml @@ -0,0 +1,49 @@ +[general] +version = "0.3.0" +time_zone = "utc-8" + +[network] +server_address = "0.0.0.0" +postgres_port = 5432 +http_port = 23820 +client_port = 23817 +connection_pool_size = 128 + +[log] +log_filename = "infinity.log" +log_dir = "/var/infinity/log" +log_to_stdout = false +log_file_max_size = "10GB" +log_file_rotate_count = 10 + +log_level = "info" + +[storage] +data_dir = "/var/infinity/data" + +optimize_interval = "721h" # Changed to "721h" +cleanup_interval = "60s" +compact_interval = "120s" + +mem_index_capacity = 1048576 + +[buffer] +buffer_manager_size = "4GB" +lru_num = 7 +temp_dir = "/var/infinity/tmp" + +memindex_memory_quota = "1GB" + +[wal] +wal_dir = "/var/infinity/wal" +full_checkpoint_interval = "86400s" +delta_checkpoint_interval = "60s" +wal_compact_threshold = "1GB" + +wal_flush = "only_write" + +[resource] +resource_dir = "/var/infinity/resource" + +[persistence] +persistence_dir = "/var/infinity/persistence" diff --git a/test/data/config/test_conf_out_of_bound_timezone.toml b/test/data/config/test_conf_out_of_bound_timezone.toml new file mode 100644 index 0000000000..d53d443ebe --- /dev/null +++ b/test/data/config/test_conf_out_of_bound_timezone.toml @@ -0,0 +1,49 @@ +[general] +version = "0.3.0" +time_zone = "utc-23" # Changed to "utc-23" + +[network] +server_address = "0.0.0.0" +postgres_port = 5432 +http_port = 23820 +client_port = 23817 +connection_pool_size = 128 + +[log] +log_filename = "infinity.log" +log_dir = "/var/infinity/log" +log_to_stdout = false +log_file_max_size = "10GB" +log_file_rotate_count = 10 + +log_level = "info" + +[storage] +data_dir = "/var/infinity/data" + +optimize_interval = "10s" +cleanup_interval = "60s" +compact_interval = "120s" + +mem_index_capacity = 1048576 + +[buffer] +buffer_manager_size = "4GB" +lru_num = 7 +temp_dir = "/var/infinity/tmp" + +memindex_memory_quota = "1GB" + +[wal] +wal_dir = "/var/infinity/wal" +full_checkpoint_interval = "86400s" +delta_checkpoint_interval = "60s" +wal_compact_threshold = "1GB" + +wal_flush = "only_write" + +[resource] +resource_dir = "/var/infinity/resource" + +[persistence] +persistence_dir = "/var/infinity/persistence" diff --git a/test/data/config/test_conf_out_of_bound_walflush.toml b/test/data/config/test_conf_out_of_bound_walflush.toml new file mode 100644 index 0000000000..96cb4f7dde --- /dev/null +++ b/test/data/config/test_conf_out_of_bound_walflush.toml @@ -0,0 +1,49 @@ +[general] +version = "0.3.0" +time_zone = "utc-8" + +[network] +server_address = "0.0.0.0" +postgres_port = 5432 +http_port = 23820 +client_port = 23817 +connection_pool_size = 128 + +[log] +log_filename = "infinity.log" +log_dir = "/var/infinity/log" +log_to_stdout = false +log_file_max_size = "10GB" +log_file_rotate_count = 10 + +log_level = "info" + +[storage] +data_dir = "/var/infinity/data" + +optimize_interval = "10s" +cleanup_interval = "60s" +compact_interval = "120s" + +mem_index_capacity = 1048576 + +[buffer] +buffer_manager_size = "4GB" +lru_num = 7 +temp_dir = "/var/infinity/tmp" + +memindex_memory_quota = "1GB" + +[wal] +wal_dir = "/var/infinity/wal" +full_checkpoint_interval = "86400s" +delta_checkpoint_interval = "60s" +wal_compact_threshold = "1GB" + +wal_flush = "invalid" # Changed to "invalid" + +[resource] +resource_dir = "/var/infinity/resource" + +[persistence] +persistence_dir = "/var/infinity/persistence" diff --git a/test/data/config/test_conf_valid_value.toml b/test/data/config/test_conf_valid_value.toml new file mode 100644 index 0000000000..d450c4f6e5 --- /dev/null +++ b/test/data/config/test_conf_valid_value.toml @@ -0,0 +1,49 @@ +[general] +version = "0.3.0" +time_zone = "utc-8" +cpu_limit = 2 + +[network] +server_address = "0.0.0.0" +postgres_port = 5432 +http_port = 23820 +client_port = 23817 +connection_pool_size = 128 + +[log] +log_filename = "infinity.log" +log_dir = "/var/infinity/log" +log_to_stdout = false +log_file_max_size = "1GB" +log_file_rotate_count = 10 + +log_level = "info" + +[storage] +data_dir = "/var/infinity/data" + +optimize_interval = "10s" +cleanup_interval = "60s" +compact_interval = "120s" + +mem_index_capacity = 1048576 + +[buffer] +buffer_manager_size = "4GB" +lru_num = 7 +temp_dir = "/var/infinity/tmp" +memindex_memory_quota = "1GB" + +[wal] +wal_dir = "/var/infinity/wal" +full_checkpoint_interval = "86400s" +delta_checkpoint_interval = "60s" +wal_compact_threshold = "1GB" + +wal_flush = "only_write" + +[resource] +resource_dir = "/var/infinity/resource" + +[persistence] +persistence_dir = "/var/infinity/persistence" \ No newline at end of file diff --git a/test/data/scripts/uda1.py b/test/data/scripts/uda1.py new file mode 100644 index 0000000000..5f36614a3c --- /dev/null +++ b/test/data/scripts/uda1.py @@ -0,0 +1,8 @@ +def analyze(str): + return str.split() + +def term_weight(l: list): + print("=====================") + print(l) + print(len(l)) + return {"a": 1.0, "b": 2.0} \ No newline at end of file diff --git a/test/data/scripts/uda3.py b/test/data/scripts/uda3.py new file mode 100644 index 0000000000..715cadab00 --- /dev/null +++ b/test/data/scripts/uda3.py @@ -0,0 +1,2 @@ +def analyze1(str): + return str.split() diff --git a/test/data/scripts/uda4.py b/test/data/scripts/uda4.py new file mode 100644 index 0000000000..ddd2e348e6 --- /dev/null +++ b/test/data/scripts/uda4.py @@ -0,0 +1,2 @@ +def analyze(str): + return 1 diff --git a/test/data/scripts/uda5.py b/test/data/scripts/uda5.py new file mode 100644 index 0000000000..e46893c729 --- /dev/null +++ b/test/data/scripts/uda5.py @@ -0,0 +1,5 @@ +def term_weight(l: list): + print("=====================") + print(l) + print(len(l)) + return {"a": 1.0, "b": 2.0, "c": 3.0} diff --git a/test/data/scripts/uda6.py b/test/data/scripts/uda6.py new file mode 100644 index 0000000000..35a8edc19c --- /dev/null +++ b/test/data/scripts/uda6.py @@ -0,0 +1,5 @@ +def term_weight(l: list): + print("=====================") + print(l) + print(len(l)) + return 1 diff --git a/third_party/nanobind/cmake/nanobind-config.cmake b/third_party/nanobind/cmake/nanobind-config.cmake index b2b2b0877b..d7b1d3c6bd 100644 --- a/third_party/nanobind/cmake/nanobind-config.cmake +++ b/third_party/nanobind/cmake/nanobind-config.cmake @@ -1,8 +1,8 @@ include_guard(GLOBAL) -if (NOT TARGET Python::Module) - message(FATAL_ERROR "You must invoke 'find_package(Python COMPONENTS Interpreter Development REQUIRED)' prior to including nanobind.") -endif() +#if (NOT TARGET Python::Module) +# message(FATAL_ERROR "You must invoke 'find_package(Python COMPONENTS Interpreter Development REQUIRED)' prior to including nanobind.") +#endif() # Determine the right suffix for ordinary and stable ABI extensions. diff --git a/tools/generate_multivector_knn_scan.py b/tools/generate_multivector_knn_scan.py index 51564730c2..f909ecf680 100644 --- a/tools/generate_multivector_knn_scan.py +++ b/tools/generate_multivector_knn_scan.py @@ -3,6 +3,18 @@ import random from math import sin, cos, acos, pi import numpy as np +import string + + +class MyFormatter(string.Formatter): + def format_field(self, value, format_spec): + if format_spec == 'm': + return super().format_field(value, 'e').replace('e+', 'e') + else: + return super().format_field(value, format_spec) + + +fmt = MyFormatter() def get_sphere_point(r, rand1, rand2): @@ -15,11 +27,11 @@ def get_sphere_point(r, rand1, rand2): row_n = 1000 -query_data = [3, 500, 990, random.randint(0, row_n - 1)] -top_n = [5, 255, 256, row_n] +query_data = [random.randint(0, row_n - 1), 3, 500, 990] +top_n = [row_n, 5, 255, 256] num_in_row = 10 radius = 10000.0 -require_min_diff = 1e-6 +require_min_diff = 1e-5 def get_numpy_l2_norm(v1: np.ndarray, v2: np.ndarray): @@ -44,7 +56,7 @@ def get_random_data(): # check query result for query_data, return if all query distances are different distance_results = [] good_diff = True - for i in query_data: + for pos, i in enumerate(query_data): query_v = all_multivector_centers[i] distance_pair = [] for j in range(row_n): @@ -53,7 +65,7 @@ def get_random_data(): distance_pair.append((j, np.min(l2_d))) # sort by distance distance_pair.sort(key=lambda x: x[1]) - for j in range(row_n - 1): + for j in range(min(row_n - 1, top_n[pos])): if (distance_pair[j + 1][1] - distance_pair[j][1]) / distance_pair[j + 1][1] < require_min_diff: good_diff = False break @@ -127,7 +139,8 @@ def write_twice(statement: str, output_table_name: bool = False): write_twice("\n# multivector scan\n") for i, q_id in enumerate(query_data): write_twice("\nquery I\n") - query_v = np.array2string(all_multivector_centers[q_id], separator=',') + query_v = np.array2string(all_multivector_centers[q_id], separator=',', + formatter={'float': lambda x: fmt.format_field(x, 'm')}) query_str = f"SELECT c1 FROM \u007b\u007d SEARCH MATCH VECTOR (c2, {query_v}, 'float', 'l2', {top_n[i]});\n" write_twice(query_str, True) write_twice("----\n") diff --git a/tools/run_http_api.py b/tools/run_http_api.py index 2a03f42465..7eb9032e4e 100644 --- a/tools/run_http_api.py +++ b/tools/run_http_api.py @@ -14,12 +14,12 @@ def python_sdk_test(python_test_dir: str, pytest_mark: str): print(f"start pysdk test with {pytest_mark}") process = subprocess.Popen( - # ["python", "-m", "pytest", "--tb=line", '-s', '-x', '-m', pytest_mark, f'{python_test_dir}/test'], + # ["python", "-m", "pytest", "--tb=short", '-s', '-x', '-m', pytest_mark, f'{python_test_dir}/test'], [ python_executable, "-m", "pytest", - "--tb=line", + "--tb=short", "-x", "-m", pytest_mark, diff --git a/tools/run_parallel_test.py b/tools/run_parallel_test.py index ad44dfa606..bc4e991504 100644 --- a/tools/run_parallel_test.py +++ b/tools/run_parallel_test.py @@ -1,9 +1,7 @@ import argparse -import itertools import os import subprocess import sys -import threading import time @@ -12,8 +10,8 @@ def python_sdk_test(python_test_dir: str, pytest_mark: str): # run test print(f"start pysdk test with {pytest_mark}") process = subprocess.Popen( - # ["python", "-m", "pytest", "--tb=line", '-s', '-x', '-m', pytest_mark, f'{python_test_dir}/test'], - ["python", "-m", "pytest", "--tb=line", '-x', '-m', pytest_mark, f'{python_test_dir}/parallel_test'], + # ["python", "-m", "pytest", "--tb=short", '-s', '-x', '-m', pytest_mark, f'{python_test_dir}/test'], + ["python", "-m", "pytest", "--tb=short", '-x', '-m', pytest_mark, f'{python_test_dir}/parallel_test'], stdout=sys.stdout, stderr=sys.stderr, universal_newlines=True, diff --git a/tools/run_parallel_test_continuous.py b/tools/run_parallel_test_continuous.py index 8d4189531d..8368a12cdc 100644 --- a/tools/run_parallel_test_continuous.py +++ b/tools/run_parallel_test_continuous.py @@ -17,12 +17,12 @@ def python_sdk_test(python_test_dir: str, pytest_mark: str): begin_time = time.time() while time.time() - begin_time < 8 * 3600: process = subprocess.Popen( - # ["python", "-m", "pytest", "--tb=line", '-s', '-x', '-m', pytest_mark, f'{python_test_dir}/test'], + # ["python", "-m", "pytest", "--tb=short", '-s', '-x', '-m', pytest_mark, f'{python_test_dir}/test'], [ python_executable, "-m", "pytest", - "--tb=line", + "--tb=short", "-x", "-m", pytest_mark, diff --git a/tools/run_pysdk_local_infinity_test.py b/tools/run_pysdk_local_infinity_test.py index dc65c76cf8..7f7c7e9f50 100644 --- a/tools/run_pysdk_local_infinity_test.py +++ b/tools/run_pysdk_local_infinity_test.py @@ -14,12 +14,12 @@ def python_sdk_test(python_test_dir: str, pytest_mark: str): print(f"start pysdk test with {pytest_mark}") process = subprocess.Popen( - # ["python", "-m", "pytest", "--tb=line", '-s', '-x', '-m', pytest_mark, f'{python_test_dir}/test'], + # ["python", "-m", "pytest", "--tb=short", '-s', '-x', '-m', pytest_mark, f'{python_test_dir}/test'], [ python_executable, "-m", "pytest", - "--tb=line", + "--tb=short", "-x", "-m", pytest_mark, diff --git a/tools/run_pysdk_remote_infinity_test.py b/tools/run_pysdk_remote_infinity_test.py index 2a39047bed..4aff9945ba 100644 --- a/tools/run_pysdk_remote_infinity_test.py +++ b/tools/run_pysdk_remote_infinity_test.py @@ -13,12 +13,12 @@ def python_sdk_test(python_test_dir: str, pytest_mark: str): # run test print(f"start pysdk test with {pytest_mark}") process = subprocess.Popen( - # ["python", "-m", "pytest", "--tb=line", '-s', '-x', '-m', pytest_mark, f'{python_test_dir}/test'], + # ["python", "-m", "pytest", "--tb=short", '-s', '-x', '-m', pytest_mark, f'{python_test_dir}/test'], [ python_executable, "-m", "pytest", - "--tb=line", + "--tb=short", "-x", "-m", pytest_mark, diff --git a/tools/run_slow_test.py b/tools/run_slow_test.py index ff330a58a8..54d74334ad 100644 --- a/tools/run_slow_test.py +++ b/tools/run_slow_test.py @@ -13,12 +13,12 @@ def python_sdk_test(python_test_dir: str, pytest_mark: str): # run test print(f"start pysdk test with {pytest_mark}") process = subprocess.Popen( - # ["python", "-m", "pytest", "--tb=line", '-s', '-x', '-m', pytest_mark, f'{python_test_dir}/test'], + # ["python", "-m", "pytest", "--tb=short", '-s', '-x', '-m', pytest_mark, f'{python_test_dir}/test'], [ python_executable, "-m", "pytest", - "--tb=line", + "--tb=short", "-x", "-m", pytest_mark,