diff --git a/benchmark/local_infinity/fulltext/fulltext_benchmark.cpp b/benchmark/local_infinity/fulltext/fulltext_benchmark.cpp index 0954d8bdd8..be8c1b858f 100644 --- a/benchmark/local_infinity/fulltext/fulltext_benchmark.cpp +++ b/benchmark/local_infinity/fulltext/fulltext_benchmark.cpp @@ -107,7 +107,7 @@ SharedPtr CreateDbAndTable(const String &db_name, const String &table_ SharedPtr infinity = Infinity::LocalConnect(); CreateDatabaseOptions create_db_options; create_db_options.conflict_type_ = ConflictType::kIgnore; - infinity->CreateDatabase(db_name, std::move(create_db_options)); + infinity->CreateDatabase(db_name, std::move(create_db_options), ""); DropTableOptions drop_tb_options; drop_tb_options.conflict_type_ = ConflictType::kIgnore; diff --git a/benchmark/local_infinity/infinity_benchmark.cpp b/benchmark/local_infinity/infinity_benchmark.cpp index dcebf3211f..b10fecf18c 100644 --- a/benchmark/local_infinity/infinity_benchmark.cpp +++ b/benchmark/local_infinity/infinity_benchmark.cpp @@ -111,7 +111,7 @@ int main() { CreateDatabaseOptions create_db_opts; auto tims_costing_second = Measurement("Create Database", thread_num, total_times, [&](SizeT i, SharedPtr infinity, std::thread::id thread_id) { - __attribute__((unused)) auto ignored = infinity->CreateDatabase(std::to_string(i), create_db_opts); + __attribute__((unused)) auto ignored = infinity->CreateDatabase(std::to_string(i), create_db_opts, ""); }); results.push_back(fmt::format("-> Create Database QPS: {}", total_times / tims_costing_second)); } @@ -366,7 +366,7 @@ int main() { std::shared_ptr infinity = Infinity::LocalConnect(); CreateDatabaseOptions create_db_options; create_db_options.conflict_type_ = ConflictType::kIgnore; - auto r1 = infinity->CreateDatabase(db_name, std::move(create_db_options)); + auto r1 = infinity->CreateDatabase(db_name, std::move(create_db_options), ""); CreateTableOptions create_tb_options; create_tb_options.conflict_type_ = ConflictType::kIgnore; diff --git a/benchmark/local_infinity/knn/knn_import_benchmark.cpp b/benchmark/local_infinity/knn/knn_import_benchmark.cpp index f20697d2f5..59b4691cd0 100644 --- a/benchmark/local_infinity/knn/knn_import_benchmark.cpp +++ b/benchmark/local_infinity/knn/knn_import_benchmark.cpp @@ -104,7 +104,7 @@ int main(int argc, char *argv[]) { std::shared_ptr infinity = Infinity::LocalConnect(); CreateDatabaseOptions create_db_options; create_db_options.conflict_type_ = ConflictType::kIgnore; - auto r1 = infinity->CreateDatabase(db_name, std::move(create_db_options)); + auto r1 = infinity->CreateDatabase(db_name, std::move(create_db_options), ""); // auto [ data_base, status1 ] = infinity->GetDatabase(db_name); CreateTableOptions create_tb_options; diff --git a/python/infinity_embedded/infinity.py b/python/infinity_embedded/infinity.py index d6fc31d9c8..1251925629 100644 --- a/python/infinity_embedded/infinity.py +++ b/python/infinity_embedded/infinity.py @@ -19,7 +19,7 @@ def __init__(self, uri): self.uri = uri @abstractmethod - def create_database(self, db_name, options=None): + def create_database(self, db_name, options=None, comment: str = None): pass @abstractmethod diff --git a/python/infinity_embedded/local_infinity/client.py b/python/infinity_embedded/local_infinity/client.py index bf78ec84e7..0c86d96456 100644 --- a/python/infinity_embedded/local_infinity/client.py +++ b/python/infinity_embedded/local_infinity/client.py @@ -20,7 +20,7 @@ class LocalQueryResult: def __init__(self, error_code: PyErrorCode, error_msg: str, db_names=None, table_names=None, index_names=None, - column_defs=None, column_fields=None, database_name=None, store_dir=None, table_count=None): + column_defs=None, column_fields=None, database_name=None, store_dir=None, table_count=None, comment=None): self.error_code = error_code self.error_msg = error_msg self.db_names = db_names @@ -32,6 +32,7 @@ def __init__(self, error_code: PyErrorCode, error_msg: str, db_names=None, table self.database_name = database_name self.store_dir = store_dir self.table_count = table_count + self.comment = comment class LocalInfinityClient: @@ -64,15 +65,20 @@ def convert_res(self, res, has_db_names=False, has_table_names=False, has_result column_fields=res.column_fields) if has_db_name: return LocalQueryResult(PyErrorCode(res.error_code.value), res.error_msg, database_name=res.database_name, - store_dir=res.store_dir, table_count=res.table_count) + store_dir=res.store_dir, table_count=res.table_count, comment=res.comment) if has_index_names: return LocalQueryResult(PyErrorCode(res.error_code.value), res.error_msg, index_names=res.names) return LocalQueryResult(PyErrorCode(res.error_code.value), res.error_msg) - def create_database(self, db_name: str, conflict_type: ConflictType = ConflictType.kError): + def create_database(self, db_name: str, conflict_type: ConflictType = ConflictType.kError, comment: str = None): create_database_options = CreateDatabaseOptions() create_database_options.conflict_type = conflict_type - return self.convert_res(self.client.CreateDatabase(db_name, create_database_options)) + db_comment: str = None + if comment is None: + db_comment = "" + else: + db_comment = comment + return self.convert_res(self.client.CreateDatabase(db_name, create_database_options, db_comment)) def drop_database(self, db_name: str, conflict_type: ConflictType = ConflictType.kError): drop_database_options = DropDatabaseOptions() diff --git a/python/infinity_embedded/local_infinity/db.py b/python/infinity_embedded/local_infinity/db.py index 71ecbefa1a..d2835e3b11 100644 --- a/python/infinity_embedded/local_infinity/db.py +++ b/python/infinity_embedded/local_infinity/db.py @@ -10,9 +10,10 @@ class LocalDatabase(Database, ABC): - def __init__(self, conn, name: str): + def __init__(self, conn, name: str, comment: str = None): self._conn = conn self._db_name = name + self._db_comment = comment def create_table(self, table_name: str, columns_definition, conflict_type: ConflictType = ConflictType.Error): diff --git a/python/infinity_embedded/local_infinity/infinity.py b/python/infinity_embedded/local_infinity/infinity.py index 402f0c544a..1eb50c6f20 100644 --- a/python/infinity_embedded/local_infinity/infinity.py +++ b/python/infinity_embedded/local_infinity/infinity.py @@ -39,7 +39,7 @@ def check_connect(self): raise Exception("Local infinity is not connected") @name_validity_check("db_name", "DB") - def create_database(self, db_name: str, conflict_type: ConflictType = ConflictType.Error): + def create_database(self, db_name: str, conflict_type: ConflictType = ConflictType.Error, comment: str = None): self.check_connect() create_database_conflict: LocalConflictType if conflict_type == ConflictType.Error: @@ -50,7 +50,7 @@ def create_database(self, db_name: str, conflict_type: ConflictType = ConflictTy create_database_conflict = LocalConflictType.kReplace else: raise InfinityException(ErrorCode.INVALID_CONFLICT_TYPE, "Invalid conflict type") - res = self._client.create_database(db_name, create_database_conflict) + res = self._client.create_database(db_name, create_database_conflict, comment) if res.error_code == ErrorCode.OK: return LocalDatabase(self._client, db_name) diff --git a/python/infinity_sdk/infinity/infinity.py b/python/infinity_sdk/infinity/infinity.py index c388530621..32d2c70c3a 100644 --- a/python/infinity_sdk/infinity/infinity.py +++ b/python/infinity_sdk/infinity/infinity.py @@ -22,7 +22,7 @@ def __init__(self, uri): self.uri = uri @abstractmethod - def create_database(self, db_name, options=None): + def create_database(self, db_name, options=None, comment: str = None): pass @abstractmethod diff --git a/python/infinity_sdk/infinity/remote_thrift/client.py b/python/infinity_sdk/infinity/remote_thrift/client.py index 251d4c29fe..25d7b20dc7 100644 --- a/python/infinity_sdk/infinity/remote_thrift/client.py +++ b/python/infinity_sdk/infinity/remote_thrift/client.py @@ -73,9 +73,15 @@ def reconnect(self): raise InfinityException(res.error_code, res.error_msg) self.session_id = res.session_id - def create_database(self, db_name: str, conflict_type: CreateConflict = CreateConflict.Error): + def create_database(self, db_name: str, conflict_type: CreateConflict = CreateConflict.Error, comment: str = None): + db_comment: str + if comment is None: + db_comment = "" + else: + db_comment = comment return self.client.CreateDatabase(CreateDatabaseRequest(session_id=self.session_id, db_name=db_name, + db_comment=db_comment, create_option=CreateOption(conflict_type=conflict_type))) def drop_database(self, db_name: str, conflict_type: DropConflict = DropConflict.Error): diff --git a/python/infinity_sdk/infinity/remote_thrift/infinity.py b/python/infinity_sdk/infinity/remote_thrift/infinity.py index f53c61d149..f45d95a7eb 100644 --- a/python/infinity_sdk/infinity/remote_thrift/infinity.py +++ b/python/infinity_sdk/infinity/remote_thrift/infinity.py @@ -35,7 +35,7 @@ def __del__(self): self.disconnect() @name_validity_check("db_name", "DB") - def create_database(self, db_name: str, conflict_type: ConflictType = ConflictType.Error): + def create_database(self, db_name: str, conflict_type: ConflictType = ConflictType.Error, comment: str = None): create_database_conflict: ttypes.CreateConflict if conflict_type == ConflictType.Error: create_database_conflict = ttypes.CreateConflict.Error @@ -46,7 +46,7 @@ def create_database(self, db_name: str, conflict_type: ConflictType = ConflictTy else: raise InfinityException(ErrorCode.INVALID_CONFLICT_TYPE, "Invalid conflict type") - res = self._client.create_database(db_name=db_name, conflict_type=create_database_conflict) + res = self._client.create_database(db_name=db_name, conflict_type=create_database_conflict, comment=comment) if res.error_code == ErrorCode.OK: return RemoteDatabase(self._client, db_name) else: @@ -77,7 +77,7 @@ def drop_database(self, db_name: str, conflict_type: ConflictType = ConflictType else: raise InfinityException(ErrorCode.INVALID_CONFLICT_TYPE, "Invalid conflict type") - res = self._client.drop_database(db_name=db_name, conflict_type = drop_database_conflict) + res = self._client.drop_database(db_name=db_name, conflict_type=drop_database_conflict) if res.error_code == ErrorCode.OK: return res else: diff --git a/python/infinity_sdk/infinity/remote_thrift/infinity_thrift_rpc/InfinityService.py b/python/infinity_sdk/infinity/remote_thrift/infinity_thrift_rpc/InfinityService.py index 3ecebd2d9d..c9cfad2e28 100644 --- a/python/infinity_sdk/infinity/remote_thrift/infinity_thrift_rpc/InfinityService.py +++ b/python/infinity_sdk/infinity/remote_thrift/infinity_thrift_rpc/InfinityService.py @@ -1,5 +1,5 @@ # -# Autogenerated by Thrift Compiler (0.19.0) +# Autogenerated by Thrift Compiler (0.20.0) # # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING # diff --git a/python/infinity_sdk/infinity/remote_thrift/infinity_thrift_rpc/constants.py b/python/infinity_sdk/infinity/remote_thrift/infinity_thrift_rpc/constants.py index 1cdf6e8a12..09a78b3aa4 100644 --- a/python/infinity_sdk/infinity/remote_thrift/infinity_thrift_rpc/constants.py +++ b/python/infinity_sdk/infinity/remote_thrift/infinity_thrift_rpc/constants.py @@ -1,5 +1,5 @@ # -# Autogenerated by Thrift Compiler (0.19.0) +# Autogenerated by Thrift Compiler (0.20.0) # # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING # diff --git a/python/infinity_sdk/infinity/remote_thrift/infinity_thrift_rpc/ttypes.py b/python/infinity_sdk/infinity/remote_thrift/infinity_thrift_rpc/ttypes.py index 274067a09e..b357958f30 100644 --- a/python/infinity_sdk/infinity/remote_thrift/infinity_thrift_rpc/ttypes.py +++ b/python/infinity_sdk/infinity/remote_thrift/infinity_thrift_rpc/ttypes.py @@ -1,5 +1,5 @@ # -# Autogenerated by Thrift Compiler (0.19.0) +# Autogenerated by Thrift Compiler (0.20.0) # # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING # @@ -3876,11 +3876,15 @@ class ListDatabaseResponse(object): - error_code - error_msg - db_names + - db_dirs + - db_comments """ def __init__(self, error_code=None, error_msg=None, db_names=[ + ], db_dirs=[ + ], db_comments=[ ],): self.error_code = error_code self.error_msg = error_msg @@ -3888,6 +3892,14 @@ def __init__(self, error_code=None, error_msg=None, db_names=[ db_names = [ ] self.db_names = db_names + if db_dirs is self.thrift_spec[4][4]: + db_dirs = [ + ] + self.db_dirs = db_dirs + if db_comments is self.thrift_spec[5][4]: + db_comments = [ + ] + self.db_comments = db_comments def read(self, iprot): if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: @@ -3918,6 +3930,26 @@ def read(self, iprot): iprot.readListEnd() else: iprot.skip(ftype) + elif fid == 4: + if ftype == TType.LIST: + self.db_dirs = [] + (_etype254, _size251) = iprot.readListBegin() + for _i255 in range(_size251): + _elem256 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + self.db_dirs.append(_elem256) + iprot.readListEnd() + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.LIST: + self.db_comments = [] + (_etype260, _size257) = iprot.readListBegin() + for _i261 in range(_size257): + _elem262 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + self.db_comments.append(_elem262) + iprot.readListEnd() + else: + iprot.skip(ftype) else: iprot.skip(ftype) iprot.readFieldEnd() @@ -3939,8 +3971,22 @@ def write(self, oprot): if self.db_names is not None: oprot.writeFieldBegin('db_names', TType.LIST, 3) oprot.writeListBegin(TType.STRING, len(self.db_names)) - for iter251 in self.db_names: - oprot.writeString(iter251.encode('utf-8') if sys.version_info[0] == 2 else iter251) + for iter263 in self.db_names: + oprot.writeString(iter263.encode('utf-8') if sys.version_info[0] == 2 else iter263) + oprot.writeListEnd() + oprot.writeFieldEnd() + if self.db_dirs is not None: + oprot.writeFieldBegin('db_dirs', TType.LIST, 4) + oprot.writeListBegin(TType.STRING, len(self.db_dirs)) + for iter264 in self.db_dirs: + oprot.writeString(iter264.encode('utf-8') if sys.version_info[0] == 2 else iter264) + oprot.writeListEnd() + oprot.writeFieldEnd() + if self.db_comments is not None: + oprot.writeFieldBegin('db_comments', TType.LIST, 5) + oprot.writeListBegin(TType.STRING, len(self.db_comments)) + for iter265 in self.db_comments: + oprot.writeString(iter265.encode('utf-8') if sys.version_info[0] == 2 else iter265) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -4070,10 +4116,10 @@ def read(self, iprot): elif fid == 3: if ftype == TType.LIST: self.table_names = [] - (_etype255, _size252) = iprot.readListBegin() - for _i256 in range(_size252): - _elem257 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() - self.table_names.append(_elem257) + (_etype269, _size266) = iprot.readListBegin() + for _i270 in range(_size266): + _elem271 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + self.table_names.append(_elem271) iprot.readListEnd() else: iprot.skip(ftype) @@ -4098,8 +4144,8 @@ def write(self, oprot): if self.table_names is not None: oprot.writeFieldBegin('table_names', TType.LIST, 3) oprot.writeListBegin(TType.STRING, len(self.table_names)) - for iter258 in self.table_names: - oprot.writeString(iter258.encode('utf-8') if sys.version_info[0] == 2 else iter258) + for iter272 in self.table_names: + oprot.writeString(iter272.encode('utf-8') if sys.version_info[0] == 2 else iter272) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -4240,10 +4286,10 @@ def read(self, iprot): elif fid == 3: if ftype == TType.LIST: self.index_names = [] - (_etype262, _size259) = iprot.readListBegin() - for _i263 in range(_size259): - _elem264 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() - self.index_names.append(_elem264) + (_etype276, _size273) = iprot.readListBegin() + for _i277 in range(_size273): + _elem278 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + self.index_names.append(_elem278) iprot.readListEnd() else: iprot.skip(ftype) @@ -4268,8 +4314,8 @@ def write(self, oprot): if self.index_names is not None: oprot.writeFieldBegin('index_names', TType.LIST, 3) oprot.writeListBegin(TType.STRING, len(self.index_names)) - for iter265 in self.index_names: - oprot.writeString(iter265.encode('utf-8') if sys.version_info[0] == 2 else iter265) + for iter279 in self.index_names: + oprot.writeString(iter279.encode('utf-8') if sys.version_info[0] == 2 else iter279) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -4366,16 +4412,18 @@ class ShowDatabaseResponse(object): - database_name - store_dir - table_count + - comment """ - def __init__(self, error_code=None, error_msg=None, database_name=None, store_dir=None, table_count=None,): + def __init__(self, error_code=None, error_msg=None, database_name=None, store_dir=None, table_count=None, comment=None,): self.error_code = error_code self.error_msg = error_msg self.database_name = database_name self.store_dir = store_dir self.table_count = table_count + self.comment = comment def read(self, iprot): if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: @@ -4411,6 +4459,11 @@ def read(self, iprot): self.table_count = iprot.readI64() else: iprot.skip(ftype) + elif fid == 6: + if ftype == TType.STRING: + self.comment = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) else: iprot.skip(ftype) iprot.readFieldEnd() @@ -4441,6 +4494,10 @@ def write(self, oprot): oprot.writeFieldBegin('table_count', TType.I64, 5) oprot.writeI64(self.table_count) oprot.writeFieldEnd() + if self.comment is not None: + oprot.writeFieldBegin('comment', TType.STRING, 6) + oprot.writeString(self.comment.encode('utf-8') if sys.version_info[0] == 2 else self.comment) + oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -4871,11 +4928,11 @@ def read(self, iprot): elif fid == 3: if ftype == TType.LIST: self.index_param_list = [] - (_etype269, _size266) = iprot.readListBegin() - for _i270 in range(_size266): - _elem271 = InitParameter() - _elem271.read(iprot) - self.index_param_list.append(_elem271) + (_etype283, _size280) = iprot.readListBegin() + for _i284 in range(_size280): + _elem285 = InitParameter() + _elem285.read(iprot) + self.index_param_list.append(_elem285) iprot.readListEnd() else: iprot.skip(ftype) @@ -4900,8 +4957,8 @@ def write(self, oprot): if self.index_param_list is not None: oprot.writeFieldBegin('index_param_list', TType.LIST, 3) oprot.writeListBegin(TType.STRUCT, len(self.index_param_list)) - for iter272 in self.index_param_list: - iter272.write(oprot) + for iter286 in self.index_param_list: + iter286.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -5571,14 +5628,16 @@ class CreateDatabaseRequest(object): - db_name - session_id - create_option + - db_comment """ - def __init__(self, db_name=None, session_id=None, create_option=None,): + def __init__(self, db_name=None, session_id=None, create_option=None, db_comment=None,): self.db_name = db_name self.session_id = session_id self.create_option = create_option + self.db_comment = db_comment def read(self, iprot): if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: @@ -5605,6 +5664,11 @@ def read(self, iprot): self.create_option.read(iprot) else: iprot.skip(ftype) + elif fid == 4: + if ftype == TType.STRING: + self.db_comment = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + else: + iprot.skip(ftype) else: iprot.skip(ftype) iprot.readFieldEnd() @@ -5627,6 +5691,10 @@ def write(self, oprot): oprot.writeFieldBegin('create_option', TType.STRUCT, 3) self.create_option.write(oprot) oprot.writeFieldEnd() + if self.db_comment is not None: + oprot.writeFieldBegin('db_comment', TType.STRING, 4) + oprot.writeString(self.db_comment.encode('utf-8') if sys.version_info[0] == 2 else self.db_comment) + oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -5770,11 +5838,11 @@ def read(self, iprot): elif fid == 3: if ftype == TType.LIST: self.column_defs = [] - (_etype276, _size273) = iprot.readListBegin() - for _i277 in range(_size273): - _elem278 = ColumnDef() - _elem278.read(iprot) - self.column_defs.append(_elem278) + (_etype290, _size287) = iprot.readListBegin() + for _i291 in range(_size287): + _elem292 = ColumnDef() + _elem292.read(iprot) + self.column_defs.append(_elem292) iprot.readListEnd() else: iprot.skip(ftype) @@ -5810,8 +5878,8 @@ def write(self, oprot): if self.column_defs is not None: oprot.writeFieldBegin('column_defs', TType.LIST, 3) oprot.writeListBegin(TType.STRUCT, len(self.column_defs)) - for iter279 in self.column_defs: - iter279.write(oprot) + for iter293 in self.column_defs: + iter293.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.session_id is not None: @@ -5980,21 +6048,21 @@ def read(self, iprot): elif fid == 3: if ftype == TType.LIST: self.column_names = [] - (_etype283, _size280) = iprot.readListBegin() - for _i284 in range(_size280): - _elem285 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() - self.column_names.append(_elem285) + (_etype297, _size294) = iprot.readListBegin() + for _i298 in range(_size294): + _elem299 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + self.column_names.append(_elem299) iprot.readListEnd() else: iprot.skip(ftype) elif fid == 4: if ftype == TType.LIST: self.fields = [] - (_etype289, _size286) = iprot.readListBegin() - for _i290 in range(_size286): - _elem291 = Field() - _elem291.read(iprot) - self.fields.append(_elem291) + (_etype303, _size300) = iprot.readListBegin() + for _i304 in range(_size300): + _elem305 = Field() + _elem305.read(iprot) + self.fields.append(_elem305) iprot.readListEnd() else: iprot.skip(ftype) @@ -6024,15 +6092,15 @@ def write(self, oprot): if self.column_names is not None: oprot.writeFieldBegin('column_names', TType.LIST, 3) oprot.writeListBegin(TType.STRING, len(self.column_names)) - for iter292 in self.column_names: - oprot.writeString(iter292.encode('utf-8') if sys.version_info[0] == 2 else iter292) + for iter306 in self.column_names: + oprot.writeString(iter306.encode('utf-8') if sys.version_info[0] == 2 else iter306) oprot.writeListEnd() oprot.writeFieldEnd() if self.fields is not None: oprot.writeFieldBegin('fields', TType.LIST, 4) oprot.writeListBegin(TType.STRUCT, len(self.fields)) - for iter293 in self.fields: - iter293.write(oprot) + for iter307 in self.fields: + iter307.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.session_id is not None: @@ -6202,10 +6270,10 @@ def read(self, iprot): elif fid == 3: if ftype == TType.LIST: self.columns = [] - (_etype297, _size294) = iprot.readListBegin() - for _i298 in range(_size294): - _elem299 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() - self.columns.append(_elem299) + (_etype311, _size308) = iprot.readListBegin() + for _i312 in range(_size308): + _elem313 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + self.columns.append(_elem313) iprot.readListEnd() else: iprot.skip(ftype) @@ -6246,8 +6314,8 @@ def write(self, oprot): if self.columns is not None: oprot.writeFieldBegin('columns', TType.LIST, 3) oprot.writeListBegin(TType.STRING, len(self.columns)) - for iter300 in self.columns: - oprot.writeString(iter300.encode('utf-8') if sys.version_info[0] == 2 else iter300) + for iter314 in self.columns: + oprot.writeString(iter314.encode('utf-8') if sys.version_info[0] == 2 else iter314) oprot.writeListEnd() oprot.writeFieldEnd() if self.file_name is not None: @@ -6358,22 +6426,22 @@ def read(self, iprot): elif fid == 4: if ftype == TType.LIST: self.select_list = [] - (_etype304, _size301) = iprot.readListBegin() - for _i305 in range(_size301): - _elem306 = ParsedExpr() - _elem306.read(iprot) - self.select_list.append(_elem306) + (_etype318, _size315) = iprot.readListBegin() + for _i319 in range(_size315): + _elem320 = ParsedExpr() + _elem320.read(iprot) + self.select_list.append(_elem320) iprot.readListEnd() else: iprot.skip(ftype) elif fid == 5: if ftype == TType.LIST: self.highlight_list = [] - (_etype310, _size307) = iprot.readListBegin() - for _i311 in range(_size307): - _elem312 = ParsedExpr() - _elem312.read(iprot) - self.highlight_list.append(_elem312) + (_etype324, _size321) = iprot.readListBegin() + for _i325 in range(_size321): + _elem326 = ParsedExpr() + _elem326.read(iprot) + self.highlight_list.append(_elem326) iprot.readListEnd() else: iprot.skip(ftype) @@ -6392,11 +6460,11 @@ def read(self, iprot): elif fid == 8: if ftype == TType.LIST: self.group_by_list = [] - (_etype316, _size313) = iprot.readListBegin() - for _i317 in range(_size313): - _elem318 = ParsedExpr() - _elem318.read(iprot) - self.group_by_list.append(_elem318) + (_etype330, _size327) = iprot.readListBegin() + for _i331 in range(_size327): + _elem332 = ParsedExpr() + _elem332.read(iprot) + self.group_by_list.append(_elem332) iprot.readListEnd() else: iprot.skip(ftype) @@ -6421,11 +6489,11 @@ def read(self, iprot): elif fid == 12: if ftype == TType.LIST: self.order_by_list = [] - (_etype322, _size319) = iprot.readListBegin() - for _i323 in range(_size319): - _elem324 = OrderByExpr() - _elem324.read(iprot) - self.order_by_list.append(_elem324) + (_etype336, _size333) = iprot.readListBegin() + for _i337 in range(_size333): + _elem338 = OrderByExpr() + _elem338.read(iprot) + self.order_by_list.append(_elem338) iprot.readListEnd() else: iprot.skip(ftype) @@ -6459,15 +6527,15 @@ def write(self, oprot): if self.select_list is not None: oprot.writeFieldBegin('select_list', TType.LIST, 4) oprot.writeListBegin(TType.STRUCT, len(self.select_list)) - for iter325 in self.select_list: - iter325.write(oprot) + for iter339 in self.select_list: + iter339.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.highlight_list is not None: oprot.writeFieldBegin('highlight_list', TType.LIST, 5) oprot.writeListBegin(TType.STRUCT, len(self.highlight_list)) - for iter326 in self.highlight_list: - iter326.write(oprot) + for iter340 in self.highlight_list: + iter340.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.search_expr is not None: @@ -6481,8 +6549,8 @@ def write(self, oprot): if self.group_by_list is not None: oprot.writeFieldBegin('group_by_list', TType.LIST, 8) oprot.writeListBegin(TType.STRUCT, len(self.group_by_list)) - for iter327 in self.group_by_list: - iter327.write(oprot) + for iter341 in self.group_by_list: + iter341.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.having_expr is not None: @@ -6500,8 +6568,8 @@ def write(self, oprot): if self.order_by_list is not None: oprot.writeFieldBegin('order_by_list', TType.LIST, 12) oprot.writeListBegin(TType.STRUCT, len(self.order_by_list)) - for iter328 in self.order_by_list: - iter328.write(oprot) + for iter342 in self.order_by_list: + iter342.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.explain_type is not None: @@ -6573,22 +6641,22 @@ def read(self, iprot): elif fid == 3: if ftype == TType.LIST: self.column_defs = [] - (_etype332, _size329) = iprot.readListBegin() - for _i333 in range(_size329): - _elem334 = ColumnDef() - _elem334.read(iprot) - self.column_defs.append(_elem334) + (_etype346, _size343) = iprot.readListBegin() + for _i347 in range(_size343): + _elem348 = ColumnDef() + _elem348.read(iprot) + self.column_defs.append(_elem348) iprot.readListEnd() else: iprot.skip(ftype) elif fid == 4: if ftype == TType.LIST: self.column_fields = [] - (_etype338, _size335) = iprot.readListBegin() - for _i339 in range(_size335): - _elem340 = ColumnField() - _elem340.read(iprot) - self.column_fields.append(_elem340) + (_etype352, _size349) = iprot.readListBegin() + for _i353 in range(_size349): + _elem354 = ColumnField() + _elem354.read(iprot) + self.column_fields.append(_elem354) iprot.readListEnd() else: iprot.skip(ftype) @@ -6613,15 +6681,15 @@ def write(self, oprot): if self.column_defs is not None: oprot.writeFieldBegin('column_defs', TType.LIST, 3) oprot.writeListBegin(TType.STRUCT, len(self.column_defs)) - for iter341 in self.column_defs: - iter341.write(oprot) + for iter355 in self.column_defs: + iter355.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.column_fields is not None: oprot.writeFieldBegin('column_fields', TType.LIST, 4) oprot.writeListBegin(TType.STRUCT, len(self.column_fields)) - for iter342 in self.column_fields: - iter342.write(oprot) + for iter356 in self.column_fields: + iter356.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -6718,22 +6786,22 @@ def read(self, iprot): elif fid == 4: if ftype == TType.LIST: self.select_list = [] - (_etype346, _size343) = iprot.readListBegin() - for _i347 in range(_size343): - _elem348 = ParsedExpr() - _elem348.read(iprot) - self.select_list.append(_elem348) + (_etype360, _size357) = iprot.readListBegin() + for _i361 in range(_size357): + _elem362 = ParsedExpr() + _elem362.read(iprot) + self.select_list.append(_elem362) iprot.readListEnd() else: iprot.skip(ftype) elif fid == 5: if ftype == TType.LIST: self.highlight_list = [] - (_etype352, _size349) = iprot.readListBegin() - for _i353 in range(_size349): - _elem354 = ParsedExpr() - _elem354.read(iprot) - self.highlight_list.append(_elem354) + (_etype366, _size363) = iprot.readListBegin() + for _i367 in range(_size363): + _elem368 = ParsedExpr() + _elem368.read(iprot) + self.highlight_list.append(_elem368) iprot.readListEnd() else: iprot.skip(ftype) @@ -6752,11 +6820,11 @@ def read(self, iprot): elif fid == 8: if ftype == TType.LIST: self.group_by_list = [] - (_etype358, _size355) = iprot.readListBegin() - for _i359 in range(_size355): - _elem360 = ParsedExpr() - _elem360.read(iprot) - self.group_by_list.append(_elem360) + (_etype372, _size369) = iprot.readListBegin() + for _i373 in range(_size369): + _elem374 = ParsedExpr() + _elem374.read(iprot) + self.group_by_list.append(_elem374) iprot.readListEnd() else: iprot.skip(ftype) @@ -6781,11 +6849,11 @@ def read(self, iprot): elif fid == 12: if ftype == TType.LIST: self.order_by_list = [] - (_etype364, _size361) = iprot.readListBegin() - for _i365 in range(_size361): - _elem366 = OrderByExpr() - _elem366.read(iprot) - self.order_by_list.append(_elem366) + (_etype378, _size375) = iprot.readListBegin() + for _i379 in range(_size375): + _elem380 = OrderByExpr() + _elem380.read(iprot) + self.order_by_list.append(_elem380) iprot.readListEnd() else: iprot.skip(ftype) @@ -6814,15 +6882,15 @@ def write(self, oprot): if self.select_list is not None: oprot.writeFieldBegin('select_list', TType.LIST, 4) oprot.writeListBegin(TType.STRUCT, len(self.select_list)) - for iter367 in self.select_list: - iter367.write(oprot) + for iter381 in self.select_list: + iter381.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.highlight_list is not None: oprot.writeFieldBegin('highlight_list', TType.LIST, 5) oprot.writeListBegin(TType.STRUCT, len(self.highlight_list)) - for iter368 in self.highlight_list: - iter368.write(oprot) + for iter382 in self.highlight_list: + iter382.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.search_expr is not None: @@ -6836,8 +6904,8 @@ def write(self, oprot): if self.group_by_list is not None: oprot.writeFieldBegin('group_by_list', TType.LIST, 8) oprot.writeListBegin(TType.STRUCT, len(self.group_by_list)) - for iter369 in self.group_by_list: - iter369.write(oprot) + for iter383 in self.group_by_list: + iter383.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.having_expr is not None: @@ -6855,8 +6923,8 @@ def write(self, oprot): if self.order_by_list is not None: oprot.writeFieldBegin('order_by_list', TType.LIST, 12) oprot.writeListBegin(TType.STRUCT, len(self.order_by_list)) - for iter370 in self.order_by_list: - iter370.write(oprot) + for iter384 in self.order_by_list: + iter384.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -6924,22 +6992,22 @@ def read(self, iprot): elif fid == 3: if ftype == TType.LIST: self.column_defs = [] - (_etype374, _size371) = iprot.readListBegin() - for _i375 in range(_size371): - _elem376 = ColumnDef() - _elem376.read(iprot) - self.column_defs.append(_elem376) + (_etype388, _size385) = iprot.readListBegin() + for _i389 in range(_size385): + _elem390 = ColumnDef() + _elem390.read(iprot) + self.column_defs.append(_elem390) iprot.readListEnd() else: iprot.skip(ftype) elif fid == 4: if ftype == TType.LIST: self.column_fields = [] - (_etype380, _size377) = iprot.readListBegin() - for _i381 in range(_size377): - _elem382 = ColumnField() - _elem382.read(iprot) - self.column_fields.append(_elem382) + (_etype394, _size391) = iprot.readListBegin() + for _i395 in range(_size391): + _elem396 = ColumnField() + _elem396.read(iprot) + self.column_fields.append(_elem396) iprot.readListEnd() else: iprot.skip(ftype) @@ -6964,15 +7032,15 @@ def write(self, oprot): if self.column_defs is not None: oprot.writeFieldBegin('column_defs', TType.LIST, 3) oprot.writeListBegin(TType.STRUCT, len(self.column_defs)) - for iter383 in self.column_defs: - iter383.write(oprot) + for iter397 in self.column_defs: + iter397.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.column_fields is not None: oprot.writeFieldBegin('column_fields', TType.LIST, 4) oprot.writeListBegin(TType.STRUCT, len(self.column_fields)) - for iter384 in self.column_fields: - iter384.write(oprot) + for iter398 in self.column_fields: + iter398.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -7135,11 +7203,11 @@ def read(self, iprot): elif fid == 4: if ftype == TType.LIST: self.update_expr_array = [] - (_etype388, _size385) = iprot.readListBegin() - for _i389 in range(_size385): - _elem390 = UpdateExpr() - _elem390.read(iprot) - self.update_expr_array.append(_elem390) + (_etype402, _size399) = iprot.readListBegin() + for _i403 in range(_size399): + _elem404 = UpdateExpr() + _elem404.read(iprot) + self.update_expr_array.append(_elem404) iprot.readListEnd() else: iprot.skip(ftype) @@ -7173,8 +7241,8 @@ def write(self, oprot): if self.update_expr_array is not None: oprot.writeFieldBegin('update_expr_array', TType.LIST, 4) oprot.writeListBegin(TType.STRUCT, len(self.update_expr_array)) - for iter391 in self.update_expr_array: - iter391.write(oprot) + for iter405 in self.update_expr_array: + iter405.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.session_id is not None: @@ -7242,11 +7310,11 @@ def read(self, iprot): elif fid == 3: if ftype == TType.LIST: self.column_defs = [] - (_etype395, _size392) = iprot.readListBegin() - for _i396 in range(_size392): - _elem397 = ColumnDef() - _elem397.read(iprot) - self.column_defs.append(_elem397) + (_etype409, _size406) = iprot.readListBegin() + for _i410 in range(_size406): + _elem411 = ColumnDef() + _elem411.read(iprot) + self.column_defs.append(_elem411) iprot.readListEnd() else: iprot.skip(ftype) @@ -7276,8 +7344,8 @@ def write(self, oprot): if self.column_defs is not None: oprot.writeFieldBegin('column_defs', TType.LIST, 3) oprot.writeListBegin(TType.STRUCT, len(self.column_defs)) - for iter398 in self.column_defs: - iter398.write(oprot) + for iter412 in self.column_defs: + iter412.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.session_id is not None: @@ -7345,10 +7413,10 @@ def read(self, iprot): elif fid == 3: if ftype == TType.LIST: self.column_names = [] - (_etype402, _size399) = iprot.readListBegin() - for _i403 in range(_size399): - _elem404 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() - self.column_names.append(_elem404) + (_etype416, _size413) = iprot.readListBegin() + for _i417 in range(_size413): + _elem418 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + self.column_names.append(_elem418) iprot.readListEnd() else: iprot.skip(ftype) @@ -7378,8 +7446,8 @@ def write(self, oprot): if self.column_names is not None: oprot.writeFieldBegin('column_names', TType.LIST, 3) oprot.writeListBegin(TType.STRING, len(self.column_names)) - for iter405 in self.column_names: - oprot.writeString(iter405.encode('utf-8') if sys.version_info[0] == 2 else iter405) + for iter419 in self.column_names: + oprot.writeString(iter419.encode('utf-8') if sys.version_info[0] == 2 else iter419) oprot.writeListEnd() oprot.writeFieldEnd() if self.session_id is not None: @@ -8664,6 +8732,10 @@ def __ne__(self, other): (2, TType.STRING, 'error_msg', 'UTF8', None, ), # 2 (3, TType.LIST, 'db_names', (TType.STRING, 'UTF8', False), [ ], ), # 3 + (4, TType.LIST, 'db_dirs', (TType.STRING, 'UTF8', False), [ + ], ), # 4 + (5, TType.LIST, 'db_comments', (TType.STRING, 'UTF8', False), [ + ], ), # 5 ) all_structs.append(ListTableRequest) ListTableRequest.thrift_spec = ( @@ -8708,6 +8780,7 @@ def __ne__(self, other): (3, TType.STRING, 'database_name', 'UTF8', None, ), # 3 (4, TType.STRING, 'store_dir', 'UTF8', None, ), # 4 (5, TType.I64, 'table_count', None, None, ), # 5 + (6, TType.STRING, 'comment', 'UTF8', None, ), # 6 ) all_structs.append(ShowTableRequest) ShowTableRequest.thrift_spec = ( @@ -8814,6 +8887,7 @@ def __ne__(self, other): (1, TType.STRING, 'db_name', 'UTF8', None, ), # 1 (2, TType.I64, 'session_id', None, None, ), # 2 (3, TType.STRUCT, 'create_option', [CreateOption, None], None, ), # 3 + (4, TType.STRING, 'db_comment', 'UTF8', None, ), # 4 ) all_structs.append(DropDatabaseRequest) DropDatabaseRequest.thrift_spec = ( diff --git a/src/embedded_infinity/wrap_infinity.cpp b/src/embedded_infinity/wrap_infinity.cpp index 59713aba70..dac1438525 100644 --- a/src/embedded_infinity/wrap_infinity.cpp +++ b/src/embedded_infinity/wrap_infinity.cpp @@ -539,8 +539,8 @@ UpdateExpr *WrapUpdateExpr::GetUpdateExpr(Status &status) { return update_expr; } -WrapQueryResult WrapCreateDatabase(Infinity &instance, const String &db_name, const CreateDatabaseOptions &options) { - auto query_result = instance.CreateDatabase(db_name, options); +WrapQueryResult WrapCreateDatabase(Infinity &instance, const String &db_name, const CreateDatabaseOptions &options, const String& comment) { + auto query_result = instance.CreateDatabase(db_name, options, comment); WrapQueryResult result(query_result.ErrorCode(), query_result.ErrorMsg()); return result; } @@ -577,7 +577,7 @@ WrapQueryResult WrapShowDatabase(Infinity &instance, const String &db_name) { if (query_result.IsOk()) { SharedPtr data_block = query_result.result_table_->GetDataBlockById(0); auto row_count = data_block->row_count(); - if (row_count != 3) { + if (row_count != 4) { String error_message = "ShowDatabase: query result is invalid."; UnrecoverableError(error_message); } @@ -593,6 +593,10 @@ WrapQueryResult WrapShowDatabase(Infinity &instance, const String &db_name) { Value value = data_block->GetValue(1, 2); result.table_count = std::stol(value.GetVarchar()); } + { + Value value = data_block->GetValue(1, 3); + result.comment = value.GetVarchar(); + } } return result; } diff --git a/src/embedded_infinity/wrap_infinity.cppm b/src/embedded_infinity/wrap_infinity.cppm index 7d371a5fb3..63fbda89ea 100644 --- a/src/embedded_infinity/wrap_infinity.cppm +++ b/src/embedded_infinity/wrap_infinity.cppm @@ -128,6 +128,7 @@ export struct WrapQueryResult { String database_name; String store_dir; BigIntT table_count; + String comment; WrapQueryResult() = default; WrapQueryResult(ErrorCode error_code, const char *error_msg) : error_code(error_code) { @@ -289,7 +290,7 @@ export struct WrapUpdateExpr { UpdateExpr *GetUpdateExpr(Status &status); }; -export WrapQueryResult WrapCreateDatabase(Infinity &instance, const String &db_name, const CreateDatabaseOptions &options); +export WrapQueryResult WrapCreateDatabase(Infinity &instance, const String &db_name, const CreateDatabaseOptions &options, const String &comment); export WrapQueryResult WrapDropDatabase(Infinity &instance, const String &db_name, const DropDatabaseOptions &options); diff --git a/src/embedded_infinity_ext.cpp b/src/embedded_infinity_ext.cpp index 6c206983f7..00ea073488 100644 --- a/src/embedded_infinity_ext.cpp +++ b/src/embedded_infinity_ext.cpp @@ -50,7 +50,8 @@ NB_MODULE(embedded_infinity_ext, m) { .def_rw("column_fields", &WrapQueryResult::column_fields) .def_rw("database_name", &WrapQueryResult::database_name) .def_rw("store_dir", &WrapQueryResult::store_dir) - .def_rw("table_count", &WrapQueryResult::table_count); + .def_rw("table_count", &WrapQueryResult::table_count) + .def_rw("comment", &WrapQueryResult::comment); nb::class_(m, "WrapColumnField") .def(nb::init<>()) diff --git a/src/executor/operator/physical_create_schema.cpp b/src/executor/operator/physical_create_schema.cpp index d71249f506..eb52561868 100644 --- a/src/executor/operator/physical_create_schema.cpp +++ b/src/executor/operator/physical_create_schema.cpp @@ -32,7 +32,7 @@ void PhysicalCreateSchema::Init() {} bool PhysicalCreateSchema::Execute(QueryContext *query_context, OperatorState *operator_state) { auto txn = query_context->GetTxn(); - Status status = txn->CreateDatabase(*schema_name_, conflict_type_); + Status status = txn->CreateDatabase(schema_name_, conflict_type_, comment_); if (!status.ok()) { operator_state->status_ = status; } diff --git a/src/executor/operator/physical_create_schema.cppm b/src/executor/operator/physical_create_schema.cppm index 222e9b3d0c..604b333f2f 100644 --- a/src/executor/operator/physical_create_schema.cppm +++ b/src/executor/operator/physical_create_schema.cppm @@ -36,12 +36,14 @@ export class PhysicalCreateSchema final : public PhysicalOperator { public: explicit PhysicalCreateSchema(SharedPtr schema_name, ConflictType conflict_type, + SharedPtr comment, SharedPtr> output_names, SharedPtr>> output_types, u64 id, SharedPtr> load_metas) : PhysicalOperator(PhysicalOperatorType::kCreateDatabase, nullptr, nullptr, id, load_metas), schema_name_(std::move(schema_name)), - conflict_type_(conflict_type), output_names_(std::move(output_names)), output_types_(std::move(output_types)) {} + conflict_type_(conflict_type), comment_(std::move(comment)), output_names_(std::move(output_names)), + output_types_(std::move(output_types)) {} ~PhysicalCreateSchema() override = default; @@ -66,6 +68,7 @@ public: private: SharedPtr schema_name_{}; ConflictType conflict_type_{ConflictType::kInvalid}; + SharedPtr comment_{}; SharedPtr> output_names_{}; SharedPtr>> output_types_{}; diff --git a/src/executor/operator/physical_show.cpp b/src/executor/operator/physical_show.cpp index 3b5531ac5b..89e3f292f0 100644 --- a/src/executor/operator/physical_show.cpp +++ b/src/executor/operator/physical_show.cpp @@ -137,9 +137,13 @@ void PhysicalShow::Init() { break; } case ShowStmtType::kDatabases: { - output_names_->reserve(1); - output_types_->reserve(1); + output_names_->reserve(3); + output_types_->reserve(3); output_names_->emplace_back("database"); + output_names_->emplace_back("dir"); + output_names_->emplace_back("comment"); + output_types_->emplace_back(varchar_type); + output_types_->emplace_back(varchar_type); output_types_->emplace_back(varchar_type); break; } @@ -814,6 +818,22 @@ void PhysicalShow::ExecuteShowDatabase(QueryContext *query_context, ShowOperator } } + { + SizeT column_id = 0; + { + Value value = Value::MakeVarchar("comment"); + ValueExpression value_expr(value); + value_expr.AppendToChunk(output_block_ptr->column_vectors[column_id]); + } + + ++column_id; + { + Value value = Value::MakeVarchar(*(database_info->db_comment_)); + ValueExpression value_expr(value); + value_expr.AppendToChunk(output_block_ptr->column_vectors[column_id]); + } + } + output_block_ptr->Finalize(); show_operator_state->output_.emplace_back(std::move(output_block_ptr)); } @@ -1467,7 +1487,7 @@ void PhysicalShow::ExecuteShowDatabases(QueryContext *query_context, ShowOperato // Prepare the output data block UniquePtr output_block_ptr = DataBlock::MakeUniquePtr(); - Vector> column_types{varchar_type}; + Vector> column_types{varchar_type, varchar_type, varchar_type}; SizeT row_count = 0; output_block_ptr->Init(column_types); @@ -1486,6 +1506,24 @@ void PhysicalShow::ExecuteShowDatabases(QueryContext *query_context, ShowOperato value_expr.AppendToChunk(output_block_ptr->column_vectors[column_id]); } + ++ column_id; + { + // Append entry dir to the 1 column + const String *db_entry_dir = database_detail.db_entry_dir_.get(); + Value value = Value::MakeVarchar(*db_entry_dir); + ValueExpression value_expr(value); + value_expr.AppendToChunk(output_block_ptr->column_vectors[column_id]); + } + + ++ column_id; + { + // Append comment to the 2 column + const String *db_comment = database_detail.db_comment_.get(); + Value value = Value::MakeVarchar(*db_comment); + ValueExpression value_expr(value); + value_expr.AppendToChunk(output_block_ptr->column_vectors[column_id]); + } + if (++row_count == output_block_ptr->capacity()) { output_block_ptr->Finalize(); show_operator_state->output_.emplace_back(std::move(output_block_ptr)); diff --git a/src/executor/physical_planner.cpp b/src/executor/physical_planner.cpp index 38cae76f76..0bbb4709cf 100644 --- a/src/executor/physical_planner.cpp +++ b/src/executor/physical_planner.cpp @@ -427,6 +427,7 @@ UniquePtr PhysicalPlanner::BuildCreateDatabase(const SharedPtr SharedPtr logical_create_schema = static_pointer_cast(logical_operator); return MakeUnique(logical_create_schema->schema_name(), logical_create_schema->conflict_type(), + logical_create_schema->comment(), logical_create_schema->GetOutputNames(), logical_create_schema->GetOutputTypes(), logical_create_schema->node_id(), diff --git a/src/main/infinity.cpp b/src/main/infinity.cpp index 44655a458d..65cfe94c36 100644 --- a/src/main/infinity.cpp +++ b/src/main/infinity.cpp @@ -132,7 +132,7 @@ void Infinity::RemoteDisconnect() { session_.reset(); } -QueryResult Infinity::CreateDatabase(const String &schema_name, const CreateDatabaseOptions &create_db_options) { +QueryResult Infinity::CreateDatabase(const String &schema_name, const CreateDatabaseOptions &create_db_options, const String &comment) { UniquePtr query_context_ptr = GetQueryContext(); UniquePtr create_statement = MakeUnique(); SharedPtr create_schema_info = MakeShared(); @@ -141,6 +141,7 @@ QueryResult Infinity::CreateDatabase(const String &schema_name, const CreateData ToLower(create_schema_info->schema_name_); create_statement->create_info_ = create_schema_info; create_statement->create_info_->conflict_type_ = create_db_options.conflict_type_; + create_statement->create_info_->comment_ = comment; QueryResult query_result = query_context_ptr->QueryStatement(create_statement.get()); return query_result; } diff --git a/src/main/infinity.cppm b/src/main/infinity.cppm index 1ee9ea5657..0809553fe4 100644 --- a/src/main/infinity.cppm +++ b/src/main/infinity.cppm @@ -61,7 +61,7 @@ public: void LocalDisconnect(); - QueryResult CreateDatabase(const String &db_name, const CreateDatabaseOptions &options); + QueryResult CreateDatabase(const String &db_name, const CreateDatabaseOptions &options, const String& db_comment); QueryResult DropDatabase(const String &db_name, const DropDatabaseOptions &options); diff --git a/src/network/http_server.cpp b/src/network/http_server.cpp index 1b1ad45e0b..7094fcad08 100644 --- a/src/network/http_server.cpp +++ b/src/network/http_server.cpp @@ -282,8 +282,13 @@ class CreateDatabaseHandler final : public HttpRequestHandler { } } + String db_comment; + if (body_info_json.contains("comment")) { + db_comment = body_info_json["comment"]; + } + // create database - auto result = infinity->CreateDatabase(database_name, options); + auto result = infinity->CreateDatabase(database_name, options, db_comment); if (result.IsOk()) { json_response["error_code"] = 0; diff --git a/src/network/infinity_thrift/infinity_types.cpp b/src/network/infinity_thrift/infinity_types.cpp index 637aa7702f..eaf9aaac3e 100644 --- a/src/network/infinity_thrift/infinity_types.cpp +++ b/src/network/infinity_thrift/infinity_types.cpp @@ -6737,6 +6737,14 @@ void ListDatabaseResponse::__set_error_msg(const std::string& val) { void ListDatabaseResponse::__set_db_names(const std::vector & val) { this->db_names = val; } + +void ListDatabaseResponse::__set_db_dirs(const std::vector & val) { + this->db_dirs = val; +} + +void ListDatabaseResponse::__set_db_comments(const std::vector & val) { + this->db_comments = val; +} std::ostream& operator<<(std::ostream& out, const ListDatabaseResponse& obj) { obj.printTo(out); @@ -6801,6 +6809,46 @@ uint32_t ListDatabaseResponse::read(::apache::thrift::protocol::TProtocol* iprot xfer += iprot->skip(ftype); } break; + case 4: + if (ftype == ::apache::thrift::protocol::T_LIST) { + { + this->db_dirs.clear(); + uint32_t _size303; + ::apache::thrift::protocol::TType _etype306; + xfer += iprot->readListBegin(_etype306, _size303); + this->db_dirs.resize(_size303); + uint32_t _i307; + for (_i307 = 0; _i307 < _size303; ++_i307) + { + xfer += iprot->readString(this->db_dirs[_i307]); + } + xfer += iprot->readListEnd(); + } + this->__isset.db_dirs = true; + } else { + xfer += iprot->skip(ftype); + } + break; + case 5: + if (ftype == ::apache::thrift::protocol::T_LIST) { + { + this->db_comments.clear(); + uint32_t _size308; + ::apache::thrift::protocol::TType _etype311; + xfer += iprot->readListBegin(_etype311, _size308); + this->db_comments.resize(_size308); + uint32_t _i312; + for (_i312 = 0; _i312 < _size308; ++_i312) + { + xfer += iprot->readString(this->db_comments[_i312]); + } + xfer += iprot->readListEnd(); + } + this->__isset.db_comments = true; + } else { + xfer += iprot->skip(ftype); + } + break; default: xfer += iprot->skip(ftype); break; @@ -6829,10 +6877,34 @@ uint32_t ListDatabaseResponse::write(::apache::thrift::protocol::TProtocol* opro xfer += oprot->writeFieldBegin("db_names", ::apache::thrift::protocol::T_LIST, 3); { xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast(this->db_names.size())); - std::vector ::const_iterator _iter303; - for (_iter303 = this->db_names.begin(); _iter303 != this->db_names.end(); ++_iter303) + std::vector ::const_iterator _iter313; + for (_iter313 = this->db_names.begin(); _iter313 != this->db_names.end(); ++_iter313) { - xfer += oprot->writeString((*_iter303)); + xfer += oprot->writeString((*_iter313)); + } + xfer += oprot->writeListEnd(); + } + xfer += oprot->writeFieldEnd(); + + xfer += oprot->writeFieldBegin("db_dirs", ::apache::thrift::protocol::T_LIST, 4); + { + xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast(this->db_dirs.size())); + std::vector ::const_iterator _iter314; + for (_iter314 = this->db_dirs.begin(); _iter314 != this->db_dirs.end(); ++_iter314) + { + xfer += oprot->writeString((*_iter314)); + } + xfer += oprot->writeListEnd(); + } + xfer += oprot->writeFieldEnd(); + + xfer += oprot->writeFieldBegin("db_comments", ::apache::thrift::protocol::T_LIST, 5); + { + xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast(this->db_comments.size())); + std::vector ::const_iterator _iter315; + for (_iter315 = this->db_comments.begin(); _iter315 != this->db_comments.end(); ++_iter315) + { + xfer += oprot->writeString((*_iter315)); } xfer += oprot->writeListEnd(); } @@ -6848,20 +6920,26 @@ void swap(ListDatabaseResponse &a, ListDatabaseResponse &b) { swap(a.error_code, b.error_code); swap(a.error_msg, b.error_msg); swap(a.db_names, b.db_names); + swap(a.db_dirs, b.db_dirs); + swap(a.db_comments, b.db_comments); swap(a.__isset, b.__isset); } -ListDatabaseResponse::ListDatabaseResponse(const ListDatabaseResponse& other304) { - error_code = other304.error_code; - error_msg = other304.error_msg; - db_names = other304.db_names; - __isset = other304.__isset; +ListDatabaseResponse::ListDatabaseResponse(const ListDatabaseResponse& other316) { + error_code = other316.error_code; + error_msg = other316.error_msg; + db_names = other316.db_names; + db_dirs = other316.db_dirs; + db_comments = other316.db_comments; + __isset = other316.__isset; } -ListDatabaseResponse& ListDatabaseResponse::operator=(const ListDatabaseResponse& other305) { - error_code = other305.error_code; - error_msg = other305.error_msg; - db_names = other305.db_names; - __isset = other305.__isset; +ListDatabaseResponse& ListDatabaseResponse::operator=(const ListDatabaseResponse& other317) { + error_code = other317.error_code; + error_msg = other317.error_msg; + db_names = other317.db_names; + db_dirs = other317.db_dirs; + db_comments = other317.db_comments; + __isset = other317.__isset; return *this; } void ListDatabaseResponse::printTo(std::ostream& out) const { @@ -6870,6 +6948,8 @@ void ListDatabaseResponse::printTo(std::ostream& out) const { out << "error_code=" << to_string(error_code); out << ", " << "error_msg=" << to_string(error_msg); out << ", " << "db_names=" << to_string(db_names); + out << ", " << "db_dirs=" << to_string(db_dirs); + out << ", " << "db_comments=" << to_string(db_comments); out << ")"; } @@ -6966,15 +7046,15 @@ void swap(ListTableRequest &a, ListTableRequest &b) { swap(a.__isset, b.__isset); } -ListTableRequest::ListTableRequest(const ListTableRequest& other306) { - db_name = other306.db_name; - session_id = other306.session_id; - __isset = other306.__isset; +ListTableRequest::ListTableRequest(const ListTableRequest& other318) { + db_name = other318.db_name; + session_id = other318.session_id; + __isset = other318.__isset; } -ListTableRequest& ListTableRequest::operator=(const ListTableRequest& other307) { - db_name = other307.db_name; - session_id = other307.session_id; - __isset = other307.__isset; +ListTableRequest& ListTableRequest::operator=(const ListTableRequest& other319) { + db_name = other319.db_name; + session_id = other319.session_id; + __isset = other319.__isset; return *this; } void ListTableRequest::printTo(std::ostream& out) const { @@ -7049,14 +7129,14 @@ uint32_t ListTableResponse::read(::apache::thrift::protocol::TProtocol* iprot) { if (ftype == ::apache::thrift::protocol::T_LIST) { { this->table_names.clear(); - uint32_t _size308; - ::apache::thrift::protocol::TType _etype311; - xfer += iprot->readListBegin(_etype311, _size308); - this->table_names.resize(_size308); - uint32_t _i312; - for (_i312 = 0; _i312 < _size308; ++_i312) + uint32_t _size320; + ::apache::thrift::protocol::TType _etype323; + xfer += iprot->readListBegin(_etype323, _size320); + this->table_names.resize(_size320); + uint32_t _i324; + for (_i324 = 0; _i324 < _size320; ++_i324) { - xfer += iprot->readString(this->table_names[_i312]); + xfer += iprot->readString(this->table_names[_i324]); } xfer += iprot->readListEnd(); } @@ -7093,10 +7173,10 @@ uint32_t ListTableResponse::write(::apache::thrift::protocol::TProtocol* oprot) xfer += oprot->writeFieldBegin("table_names", ::apache::thrift::protocol::T_LIST, 3); { xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast(this->table_names.size())); - std::vector ::const_iterator _iter313; - for (_iter313 = this->table_names.begin(); _iter313 != this->table_names.end(); ++_iter313) + std::vector ::const_iterator _iter325; + for (_iter325 = this->table_names.begin(); _iter325 != this->table_names.end(); ++_iter325) { - xfer += oprot->writeString((*_iter313)); + xfer += oprot->writeString((*_iter325)); } xfer += oprot->writeListEnd(); } @@ -7115,17 +7195,17 @@ void swap(ListTableResponse &a, ListTableResponse &b) { swap(a.__isset, b.__isset); } -ListTableResponse::ListTableResponse(const ListTableResponse& other314) { - error_code = other314.error_code; - error_msg = other314.error_msg; - table_names = other314.table_names; - __isset = other314.__isset; +ListTableResponse::ListTableResponse(const ListTableResponse& other326) { + error_code = other326.error_code; + error_msg = other326.error_msg; + table_names = other326.table_names; + __isset = other326.__isset; } -ListTableResponse& ListTableResponse::operator=(const ListTableResponse& other315) { - error_code = other315.error_code; - error_msg = other315.error_msg; - table_names = other315.table_names; - __isset = other315.__isset; +ListTableResponse& ListTableResponse::operator=(const ListTableResponse& other327) { + error_code = other327.error_code; + error_msg = other327.error_msg; + table_names = other327.table_names; + __isset = other327.__isset; return *this; } void ListTableResponse::printTo(std::ostream& out) const { @@ -7247,17 +7327,17 @@ void swap(ListIndexRequest &a, ListIndexRequest &b) { swap(a.__isset, b.__isset); } -ListIndexRequest::ListIndexRequest(const ListIndexRequest& other316) { - db_name = other316.db_name; - table_name = other316.table_name; - session_id = other316.session_id; - __isset = other316.__isset; +ListIndexRequest::ListIndexRequest(const ListIndexRequest& other328) { + db_name = other328.db_name; + table_name = other328.table_name; + session_id = other328.session_id; + __isset = other328.__isset; } -ListIndexRequest& ListIndexRequest::operator=(const ListIndexRequest& other317) { - db_name = other317.db_name; - table_name = other317.table_name; - session_id = other317.session_id; - __isset = other317.__isset; +ListIndexRequest& ListIndexRequest::operator=(const ListIndexRequest& other329) { + db_name = other329.db_name; + table_name = other329.table_name; + session_id = other329.session_id; + __isset = other329.__isset; return *this; } void ListIndexRequest::printTo(std::ostream& out) const { @@ -7333,14 +7413,14 @@ uint32_t ListIndexResponse::read(::apache::thrift::protocol::TProtocol* iprot) { if (ftype == ::apache::thrift::protocol::T_LIST) { { this->index_names.clear(); - uint32_t _size318; - ::apache::thrift::protocol::TType _etype321; - xfer += iprot->readListBegin(_etype321, _size318); - this->index_names.resize(_size318); - uint32_t _i322; - for (_i322 = 0; _i322 < _size318; ++_i322) + uint32_t _size330; + ::apache::thrift::protocol::TType _etype333; + xfer += iprot->readListBegin(_etype333, _size330); + this->index_names.resize(_size330); + uint32_t _i334; + for (_i334 = 0; _i334 < _size330; ++_i334) { - xfer += iprot->readString(this->index_names[_i322]); + xfer += iprot->readString(this->index_names[_i334]); } xfer += iprot->readListEnd(); } @@ -7377,10 +7457,10 @@ uint32_t ListIndexResponse::write(::apache::thrift::protocol::TProtocol* oprot) xfer += oprot->writeFieldBegin("index_names", ::apache::thrift::protocol::T_LIST, 3); { xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast(this->index_names.size())); - std::vector ::const_iterator _iter323; - for (_iter323 = this->index_names.begin(); _iter323 != this->index_names.end(); ++_iter323) + std::vector ::const_iterator _iter335; + for (_iter335 = this->index_names.begin(); _iter335 != this->index_names.end(); ++_iter335) { - xfer += oprot->writeString((*_iter323)); + xfer += oprot->writeString((*_iter335)); } xfer += oprot->writeListEnd(); } @@ -7399,17 +7479,17 @@ void swap(ListIndexResponse &a, ListIndexResponse &b) { swap(a.__isset, b.__isset); } -ListIndexResponse::ListIndexResponse(const ListIndexResponse& other324) { - error_code = other324.error_code; - error_msg = other324.error_msg; - index_names = other324.index_names; - __isset = other324.__isset; +ListIndexResponse::ListIndexResponse(const ListIndexResponse& other336) { + error_code = other336.error_code; + error_msg = other336.error_msg; + index_names = other336.index_names; + __isset = other336.__isset; } -ListIndexResponse& ListIndexResponse::operator=(const ListIndexResponse& other325) { - error_code = other325.error_code; - error_msg = other325.error_msg; - index_names = other325.index_names; - __isset = other325.__isset; +ListIndexResponse& ListIndexResponse::operator=(const ListIndexResponse& other337) { + error_code = other337.error_code; + error_msg = other337.error_msg; + index_names = other337.index_names; + __isset = other337.__isset; return *this; } void ListIndexResponse::printTo(std::ostream& out) const { @@ -7514,15 +7594,15 @@ void swap(ShowDatabaseRequest &a, ShowDatabaseRequest &b) { swap(a.__isset, b.__isset); } -ShowDatabaseRequest::ShowDatabaseRequest(const ShowDatabaseRequest& other326) { - db_name = other326.db_name; - session_id = other326.session_id; - __isset = other326.__isset; +ShowDatabaseRequest::ShowDatabaseRequest(const ShowDatabaseRequest& other338) { + db_name = other338.db_name; + session_id = other338.session_id; + __isset = other338.__isset; } -ShowDatabaseRequest& ShowDatabaseRequest::operator=(const ShowDatabaseRequest& other327) { - db_name = other327.db_name; - session_id = other327.session_id; - __isset = other327.__isset; +ShowDatabaseRequest& ShowDatabaseRequest::operator=(const ShowDatabaseRequest& other339) { + db_name = other339.db_name; + session_id = other339.session_id; + __isset = other339.__isset; return *this; } void ShowDatabaseRequest::printTo(std::ostream& out) const { @@ -7557,6 +7637,10 @@ void ShowDatabaseResponse::__set_store_dir(const std::string& val) { void ShowDatabaseResponse::__set_table_count(const int64_t val) { this->table_count = val; } + +void ShowDatabaseResponse::__set_comment(const std::string& val) { + this->comment = val; +} std::ostream& operator<<(std::ostream& out, const ShowDatabaseResponse& obj) { obj.printTo(out); @@ -7625,6 +7709,14 @@ uint32_t ShowDatabaseResponse::read(::apache::thrift::protocol::TProtocol* iprot xfer += iprot->skip(ftype); } break; + case 6: + if (ftype == ::apache::thrift::protocol::T_STRING) { + xfer += iprot->readString(this->comment); + this->__isset.comment = true; + } else { + xfer += iprot->skip(ftype); + } + break; default: xfer += iprot->skip(ftype); break; @@ -7662,6 +7754,10 @@ uint32_t ShowDatabaseResponse::write(::apache::thrift::protocol::TProtocol* opro xfer += oprot->writeI64(this->table_count); xfer += oprot->writeFieldEnd(); + xfer += oprot->writeFieldBegin("comment", ::apache::thrift::protocol::T_STRING, 6); + xfer += oprot->writeString(this->comment); + xfer += oprot->writeFieldEnd(); + xfer += oprot->writeFieldStop(); xfer += oprot->writeStructEnd(); return xfer; @@ -7674,24 +7770,27 @@ void swap(ShowDatabaseResponse &a, ShowDatabaseResponse &b) { swap(a.database_name, b.database_name); swap(a.store_dir, b.store_dir); swap(a.table_count, b.table_count); + swap(a.comment, b.comment); swap(a.__isset, b.__isset); } -ShowDatabaseResponse::ShowDatabaseResponse(const ShowDatabaseResponse& other328) { - error_code = other328.error_code; - error_msg = other328.error_msg; - database_name = other328.database_name; - store_dir = other328.store_dir; - table_count = other328.table_count; - __isset = other328.__isset; -} -ShowDatabaseResponse& ShowDatabaseResponse::operator=(const ShowDatabaseResponse& other329) { - error_code = other329.error_code; - error_msg = other329.error_msg; - database_name = other329.database_name; - store_dir = other329.store_dir; - table_count = other329.table_count; - __isset = other329.__isset; +ShowDatabaseResponse::ShowDatabaseResponse(const ShowDatabaseResponse& other340) { + error_code = other340.error_code; + error_msg = other340.error_msg; + database_name = other340.database_name; + store_dir = other340.store_dir; + table_count = other340.table_count; + comment = other340.comment; + __isset = other340.__isset; +} +ShowDatabaseResponse& ShowDatabaseResponse::operator=(const ShowDatabaseResponse& other341) { + error_code = other341.error_code; + error_msg = other341.error_msg; + database_name = other341.database_name; + store_dir = other341.store_dir; + table_count = other341.table_count; + comment = other341.comment; + __isset = other341.__isset; return *this; } void ShowDatabaseResponse::printTo(std::ostream& out) const { @@ -7702,6 +7801,7 @@ void ShowDatabaseResponse::printTo(std::ostream& out) const { out << ", " << "database_name=" << to_string(database_name); out << ", " << "store_dir=" << to_string(store_dir); out << ", " << "table_count=" << to_string(table_count); + out << ", " << "comment=" << to_string(comment); out << ")"; } @@ -7815,17 +7915,17 @@ void swap(ShowTableRequest &a, ShowTableRequest &b) { swap(a.__isset, b.__isset); } -ShowTableRequest::ShowTableRequest(const ShowTableRequest& other330) { - db_name = other330.db_name; - table_name = other330.table_name; - session_id = other330.session_id; - __isset = other330.__isset; +ShowTableRequest::ShowTableRequest(const ShowTableRequest& other342) { + db_name = other342.db_name; + table_name = other342.table_name; + session_id = other342.session_id; + __isset = other342.__isset; } -ShowTableRequest& ShowTableRequest::operator=(const ShowTableRequest& other331) { - db_name = other331.db_name; - table_name = other331.table_name; - session_id = other331.session_id; - __isset = other331.__isset; +ShowTableRequest& ShowTableRequest::operator=(const ShowTableRequest& other343) { + db_name = other343.db_name; + table_name = other343.table_name; + session_id = other343.session_id; + __isset = other343.__isset; return *this; } void ShowTableRequest::printTo(std::ostream& out) const { @@ -8032,27 +8132,27 @@ void swap(ShowTableResponse &a, ShowTableResponse &b) { swap(a.__isset, b.__isset); } -ShowTableResponse::ShowTableResponse(const ShowTableResponse& other332) { - error_code = other332.error_code; - error_msg = other332.error_msg; - database_name = other332.database_name; - table_name = other332.table_name; - store_dir = other332.store_dir; - column_count = other332.column_count; - segment_count = other332.segment_count; - row_count = other332.row_count; - __isset = other332.__isset; -} -ShowTableResponse& ShowTableResponse::operator=(const ShowTableResponse& other333) { - error_code = other333.error_code; - error_msg = other333.error_msg; - database_name = other333.database_name; - table_name = other333.table_name; - store_dir = other333.store_dir; - column_count = other333.column_count; - segment_count = other333.segment_count; - row_count = other333.row_count; - __isset = other333.__isset; +ShowTableResponse::ShowTableResponse(const ShowTableResponse& other344) { + error_code = other344.error_code; + error_msg = other344.error_msg; + database_name = other344.database_name; + table_name = other344.table_name; + store_dir = other344.store_dir; + column_count = other344.column_count; + segment_count = other344.segment_count; + row_count = other344.row_count; + __isset = other344.__isset; +} +ShowTableResponse& ShowTableResponse::operator=(const ShowTableResponse& other345) { + error_code = other345.error_code; + error_msg = other345.error_msg; + database_name = other345.database_name; + table_name = other345.table_name; + store_dir = other345.store_dir; + column_count = other345.column_count; + segment_count = other345.segment_count; + row_count = other345.row_count; + __isset = other345.__isset; return *this; } void ShowTableResponse::printTo(std::ostream& out) const { @@ -8179,17 +8279,17 @@ void swap(ShowColumnsRequest &a, ShowColumnsRequest &b) { swap(a.__isset, b.__isset); } -ShowColumnsRequest::ShowColumnsRequest(const ShowColumnsRequest& other334) { - db_name = other334.db_name; - table_name = other334.table_name; - session_id = other334.session_id; - __isset = other334.__isset; +ShowColumnsRequest::ShowColumnsRequest(const ShowColumnsRequest& other346) { + db_name = other346.db_name; + table_name = other346.table_name; + session_id = other346.session_id; + __isset = other346.__isset; } -ShowColumnsRequest& ShowColumnsRequest::operator=(const ShowColumnsRequest& other335) { - db_name = other335.db_name; - table_name = other335.table_name; - session_id = other335.session_id; - __isset = other335.__isset; +ShowColumnsRequest& ShowColumnsRequest::operator=(const ShowColumnsRequest& other347) { + db_name = other347.db_name; + table_name = other347.table_name; + session_id = other347.session_id; + __isset = other347.__isset; return *this; } void ShowColumnsRequest::printTo(std::ostream& out) const { @@ -8311,17 +8411,17 @@ void swap(GetTableRequest &a, GetTableRequest &b) { swap(a.__isset, b.__isset); } -GetTableRequest::GetTableRequest(const GetTableRequest& other336) { - db_name = other336.db_name; - table_name = other336.table_name; - session_id = other336.session_id; - __isset = other336.__isset; +GetTableRequest::GetTableRequest(const GetTableRequest& other348) { + db_name = other348.db_name; + table_name = other348.table_name; + session_id = other348.session_id; + __isset = other348.__isset; } -GetTableRequest& GetTableRequest::operator=(const GetTableRequest& other337) { - db_name = other337.db_name; - table_name = other337.table_name; - session_id = other337.session_id; - __isset = other337.__isset; +GetTableRequest& GetTableRequest::operator=(const GetTableRequest& other349) { + db_name = other349.db_name; + table_name = other349.table_name; + session_id = other349.session_id; + __isset = other349.__isset; return *this; } void GetTableRequest::printTo(std::ostream& out) const { @@ -8387,9 +8487,9 @@ uint32_t IndexInfo::read(::apache::thrift::protocol::TProtocol* iprot) { break; case 2: if (ftype == ::apache::thrift::protocol::T_I32) { - int32_t ecast338; - xfer += iprot->readI32(ecast338); - this->index_type = static_cast(ecast338); + int32_t ecast350; + xfer += iprot->readI32(ecast350); + this->index_type = static_cast(ecast350); this->__isset.index_type = true; } else { xfer += iprot->skip(ftype); @@ -8399,14 +8499,14 @@ uint32_t IndexInfo::read(::apache::thrift::protocol::TProtocol* iprot) { if (ftype == ::apache::thrift::protocol::T_LIST) { { this->index_param_list.clear(); - uint32_t _size339; - ::apache::thrift::protocol::TType _etype342; - xfer += iprot->readListBegin(_etype342, _size339); - this->index_param_list.resize(_size339); - uint32_t _i343; - for (_i343 = 0; _i343 < _size339; ++_i343) + uint32_t _size351; + ::apache::thrift::protocol::TType _etype354; + xfer += iprot->readListBegin(_etype354, _size351); + this->index_param_list.resize(_size351); + uint32_t _i355; + for (_i355 = 0; _i355 < _size351; ++_i355) { - xfer += this->index_param_list[_i343].read(iprot); + xfer += this->index_param_list[_i355].read(iprot); } xfer += iprot->readListEnd(); } @@ -8443,10 +8543,10 @@ uint32_t IndexInfo::write(::apache::thrift::protocol::TProtocol* oprot) const { xfer += oprot->writeFieldBegin("index_param_list", ::apache::thrift::protocol::T_LIST, 3); { xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast(this->index_param_list.size())); - std::vector ::const_iterator _iter344; - for (_iter344 = this->index_param_list.begin(); _iter344 != this->index_param_list.end(); ++_iter344) + std::vector ::const_iterator _iter356; + for (_iter356 = this->index_param_list.begin(); _iter356 != this->index_param_list.end(); ++_iter356) { - xfer += (*_iter344).write(oprot); + xfer += (*_iter356).write(oprot); } xfer += oprot->writeListEnd(); } @@ -8465,17 +8565,17 @@ void swap(IndexInfo &a, IndexInfo &b) { swap(a.__isset, b.__isset); } -IndexInfo::IndexInfo(const IndexInfo& other345) { - column_name = other345.column_name; - index_type = other345.index_type; - index_param_list = other345.index_param_list; - __isset = other345.__isset; +IndexInfo::IndexInfo(const IndexInfo& other357) { + column_name = other357.column_name; + index_type = other357.index_type; + index_param_list = other357.index_param_list; + __isset = other357.__isset; } -IndexInfo& IndexInfo::operator=(const IndexInfo& other346) { - column_name = other346.column_name; - index_type = other346.index_type; - index_param_list = other346.index_param_list; - __isset = other346.__isset; +IndexInfo& IndexInfo::operator=(const IndexInfo& other358) { + column_name = other358.column_name; + index_type = other358.index_type; + index_param_list = other358.index_param_list; + __isset = other358.__isset; return *this; } void IndexInfo::printTo(std::ostream& out) const { @@ -8648,23 +8748,23 @@ void swap(CreateIndexRequest &a, CreateIndexRequest &b) { swap(a.__isset, b.__isset); } -CreateIndexRequest::CreateIndexRequest(const CreateIndexRequest& other347) { - db_name = other347.db_name; - table_name = other347.table_name; - index_name = other347.index_name; - index_info = other347.index_info; - session_id = other347.session_id; - create_option = other347.create_option; - __isset = other347.__isset; +CreateIndexRequest::CreateIndexRequest(const CreateIndexRequest& other359) { + db_name = other359.db_name; + table_name = other359.table_name; + index_name = other359.index_name; + index_info = other359.index_info; + session_id = other359.session_id; + create_option = other359.create_option; + __isset = other359.__isset; } -CreateIndexRequest& CreateIndexRequest::operator=(const CreateIndexRequest& other348) { - db_name = other348.db_name; - table_name = other348.table_name; - index_name = other348.index_name; - index_info = other348.index_info; - session_id = other348.session_id; - create_option = other348.create_option; - __isset = other348.__isset; +CreateIndexRequest& CreateIndexRequest::operator=(const CreateIndexRequest& other360) { + db_name = other360.db_name; + table_name = other360.table_name; + index_name = other360.index_name; + index_info = other360.index_info; + session_id = other360.session_id; + create_option = other360.create_option; + __isset = other360.__isset; return *this; } void CreateIndexRequest::printTo(std::ostream& out) const { @@ -8823,21 +8923,21 @@ void swap(DropIndexRequest &a, DropIndexRequest &b) { swap(a.__isset, b.__isset); } -DropIndexRequest::DropIndexRequest(const DropIndexRequest& other349) { - db_name = other349.db_name; - table_name = other349.table_name; - index_name = other349.index_name; - session_id = other349.session_id; - drop_option = other349.drop_option; - __isset = other349.__isset; +DropIndexRequest::DropIndexRequest(const DropIndexRequest& other361) { + db_name = other361.db_name; + table_name = other361.table_name; + index_name = other361.index_name; + session_id = other361.session_id; + drop_option = other361.drop_option; + __isset = other361.__isset; } -DropIndexRequest& DropIndexRequest::operator=(const DropIndexRequest& other350) { - db_name = other350.db_name; - table_name = other350.table_name; - index_name = other350.index_name; - session_id = other350.session_id; - drop_option = other350.drop_option; - __isset = other350.__isset; +DropIndexRequest& DropIndexRequest::operator=(const DropIndexRequest& other362) { + db_name = other362.db_name; + table_name = other362.table_name; + index_name = other362.index_name; + session_id = other362.session_id; + drop_option = other362.drop_option; + __isset = other362.__isset; return *this; } void DropIndexRequest::printTo(std::ostream& out) const { @@ -8978,19 +9078,19 @@ void swap(ShowIndexRequest &a, ShowIndexRequest &b) { swap(a.__isset, b.__isset); } -ShowIndexRequest::ShowIndexRequest(const ShowIndexRequest& other351) { - db_name = other351.db_name; - table_name = other351.table_name; - index_name = other351.index_name; - session_id = other351.session_id; - __isset = other351.__isset; +ShowIndexRequest::ShowIndexRequest(const ShowIndexRequest& other363) { + db_name = other363.db_name; + table_name = other363.table_name; + index_name = other363.index_name; + session_id = other363.session_id; + __isset = other363.__isset; } -ShowIndexRequest& ShowIndexRequest::operator=(const ShowIndexRequest& other352) { - db_name = other352.db_name; - table_name = other352.table_name; - index_name = other352.index_name; - session_id = other352.session_id; - __isset = other352.__isset; +ShowIndexRequest& ShowIndexRequest::operator=(const ShowIndexRequest& other364) { + db_name = other364.db_name; + table_name = other364.table_name; + index_name = other364.index_name; + session_id = other364.session_id; + __isset = other364.__isset; return *this; } void ShowIndexRequest::printTo(std::ostream& out) const { @@ -9266,35 +9366,35 @@ void swap(ShowIndexResponse &a, ShowIndexResponse &b) { swap(a.__isset, b.__isset); } -ShowIndexResponse::ShowIndexResponse(const ShowIndexResponse& other353) { - error_code = other353.error_code; - error_msg = other353.error_msg; - db_name = other353.db_name; - table_name = other353.table_name; - index_name = other353.index_name; - index_type = other353.index_type; - index_column_names = other353.index_column_names; - index_column_ids = other353.index_column_ids; - other_parameters = other353.other_parameters; - store_dir = other353.store_dir; - store_size = other353.store_size; - segment_index_count = other353.segment_index_count; - __isset = other353.__isset; -} -ShowIndexResponse& ShowIndexResponse::operator=(const ShowIndexResponse& other354) { - error_code = other354.error_code; - error_msg = other354.error_msg; - db_name = other354.db_name; - table_name = other354.table_name; - index_name = other354.index_name; - index_type = other354.index_type; - index_column_names = other354.index_column_names; - index_column_ids = other354.index_column_ids; - other_parameters = other354.other_parameters; - store_dir = other354.store_dir; - store_size = other354.store_size; - segment_index_count = other354.segment_index_count; - __isset = other354.__isset; +ShowIndexResponse::ShowIndexResponse(const ShowIndexResponse& other365) { + error_code = other365.error_code; + error_msg = other365.error_msg; + db_name = other365.db_name; + table_name = other365.table_name; + index_name = other365.index_name; + index_type = other365.index_type; + index_column_names = other365.index_column_names; + index_column_ids = other365.index_column_ids; + other_parameters = other365.other_parameters; + store_dir = other365.store_dir; + store_size = other365.store_size; + segment_index_count = other365.segment_index_count; + __isset = other365.__isset; +} +ShowIndexResponse& ShowIndexResponse::operator=(const ShowIndexResponse& other366) { + error_code = other366.error_code; + error_msg = other366.error_msg; + db_name = other366.db_name; + table_name = other366.table_name; + index_name = other366.index_name; + index_type = other366.index_type; + index_column_names = other366.index_column_names; + index_column_ids = other366.index_column_ids; + other_parameters = other366.other_parameters; + store_dir = other366.store_dir; + store_size = other366.store_size; + segment_index_count = other366.segment_index_count; + __isset = other366.__isset; return *this; } void ShowIndexResponse::printTo(std::ostream& out) const { @@ -9442,19 +9542,19 @@ void swap(OptimizeRequest &a, OptimizeRequest &b) { swap(a.__isset, b.__isset); } -OptimizeRequest::OptimizeRequest(const OptimizeRequest& other355) { - db_name = other355.db_name; - table_name = other355.table_name; - optimize_options = other355.optimize_options; - session_id = other355.session_id; - __isset = other355.__isset; +OptimizeRequest::OptimizeRequest(const OptimizeRequest& other367) { + db_name = other367.db_name; + table_name = other367.table_name; + optimize_options = other367.optimize_options; + session_id = other367.session_id; + __isset = other367.__isset; } -OptimizeRequest& OptimizeRequest::operator=(const OptimizeRequest& other356) { - db_name = other356.db_name; - table_name = other356.table_name; - optimize_options = other356.optimize_options; - session_id = other356.session_id; - __isset = other356.__isset; +OptimizeRequest& OptimizeRequest::operator=(const OptimizeRequest& other368) { + db_name = other368.db_name; + table_name = other368.table_name; + optimize_options = other368.optimize_options; + session_id = other368.session_id; + __isset = other368.__isset; return *this; } void OptimizeRequest::printTo(std::ostream& out) const { @@ -9560,15 +9660,15 @@ void swap(GetDatabaseRequest &a, GetDatabaseRequest &b) { swap(a.__isset, b.__isset); } -GetDatabaseRequest::GetDatabaseRequest(const GetDatabaseRequest& other357) { - db_name = other357.db_name; - session_id = other357.session_id; - __isset = other357.__isset; +GetDatabaseRequest::GetDatabaseRequest(const GetDatabaseRequest& other369) { + db_name = other369.db_name; + session_id = other369.session_id; + __isset = other369.__isset; } -GetDatabaseRequest& GetDatabaseRequest::operator=(const GetDatabaseRequest& other358) { - db_name = other358.db_name; - session_id = other358.session_id; - __isset = other358.__isset; +GetDatabaseRequest& GetDatabaseRequest::operator=(const GetDatabaseRequest& other370) { + db_name = other370.db_name; + session_id = other370.session_id; + __isset = other370.__isset; return *this; } void GetDatabaseRequest::printTo(std::ostream& out) const { @@ -9595,6 +9695,10 @@ void CreateDatabaseRequest::__set_session_id(const int64_t val) { void CreateDatabaseRequest::__set_create_option(const CreateOption& val) { this->create_option = val; } + +void CreateDatabaseRequest::__set_db_comment(const std::string& val) { + this->db_comment = val; +} std::ostream& operator<<(std::ostream& out, const CreateDatabaseRequest& obj) { obj.printTo(out); @@ -9647,6 +9751,14 @@ uint32_t CreateDatabaseRequest::read(::apache::thrift::protocol::TProtocol* ipro xfer += iprot->skip(ftype); } break; + case 4: + if (ftype == ::apache::thrift::protocol::T_STRING) { + xfer += iprot->readString(this->db_comment); + this->__isset.db_comment = true; + } else { + xfer += iprot->skip(ftype); + } + break; default: xfer += iprot->skip(ftype); break; @@ -9676,6 +9788,10 @@ uint32_t CreateDatabaseRequest::write(::apache::thrift::protocol::TProtocol* opr xfer += this->create_option.write(oprot); xfer += oprot->writeFieldEnd(); + xfer += oprot->writeFieldBegin("db_comment", ::apache::thrift::protocol::T_STRING, 4); + xfer += oprot->writeString(this->db_comment); + xfer += oprot->writeFieldEnd(); + xfer += oprot->writeFieldStop(); xfer += oprot->writeStructEnd(); return xfer; @@ -9686,20 +9802,23 @@ void swap(CreateDatabaseRequest &a, CreateDatabaseRequest &b) { swap(a.db_name, b.db_name); swap(a.session_id, b.session_id); swap(a.create_option, b.create_option); + swap(a.db_comment, b.db_comment); swap(a.__isset, b.__isset); } -CreateDatabaseRequest::CreateDatabaseRequest(const CreateDatabaseRequest& other359) { - db_name = other359.db_name; - session_id = other359.session_id; - create_option = other359.create_option; - __isset = other359.__isset; +CreateDatabaseRequest::CreateDatabaseRequest(const CreateDatabaseRequest& other371) { + db_name = other371.db_name; + session_id = other371.session_id; + create_option = other371.create_option; + db_comment = other371.db_comment; + __isset = other371.__isset; } -CreateDatabaseRequest& CreateDatabaseRequest::operator=(const CreateDatabaseRequest& other360) { - db_name = other360.db_name; - session_id = other360.session_id; - create_option = other360.create_option; - __isset = other360.__isset; +CreateDatabaseRequest& CreateDatabaseRequest::operator=(const CreateDatabaseRequest& other372) { + db_name = other372.db_name; + session_id = other372.session_id; + create_option = other372.create_option; + db_comment = other372.db_comment; + __isset = other372.__isset; return *this; } void CreateDatabaseRequest::printTo(std::ostream& out) const { @@ -9708,6 +9827,7 @@ void CreateDatabaseRequest::printTo(std::ostream& out) const { out << "db_name=" << to_string(db_name); out << ", " << "session_id=" << to_string(session_id); out << ", " << "create_option=" << to_string(create_option); + out << ", " << "db_comment=" << to_string(db_comment); out << ")"; } @@ -9821,17 +9941,17 @@ void swap(DropDatabaseRequest &a, DropDatabaseRequest &b) { swap(a.__isset, b.__isset); } -DropDatabaseRequest::DropDatabaseRequest(const DropDatabaseRequest& other361) { - db_name = other361.db_name; - session_id = other361.session_id; - drop_option = other361.drop_option; - __isset = other361.__isset; +DropDatabaseRequest::DropDatabaseRequest(const DropDatabaseRequest& other373) { + db_name = other373.db_name; + session_id = other373.session_id; + drop_option = other373.drop_option; + __isset = other373.__isset; } -DropDatabaseRequest& DropDatabaseRequest::operator=(const DropDatabaseRequest& other362) { - db_name = other362.db_name; - session_id = other362.session_id; - drop_option = other362.drop_option; - __isset = other362.__isset; +DropDatabaseRequest& DropDatabaseRequest::operator=(const DropDatabaseRequest& other374) { + db_name = other374.db_name; + session_id = other374.session_id; + drop_option = other374.drop_option; + __isset = other374.__isset; return *this; } void DropDatabaseRequest::printTo(std::ostream& out) const { @@ -9915,14 +10035,14 @@ uint32_t CreateTableRequest::read(::apache::thrift::protocol::TProtocol* iprot) if (ftype == ::apache::thrift::protocol::T_LIST) { { this->column_defs.clear(); - uint32_t _size363; - ::apache::thrift::protocol::TType _etype366; - xfer += iprot->readListBegin(_etype366, _size363); - this->column_defs.resize(_size363); - uint32_t _i367; - for (_i367 = 0; _i367 < _size363; ++_i367) + uint32_t _size375; + ::apache::thrift::protocol::TType _etype378; + xfer += iprot->readListBegin(_etype378, _size375); + this->column_defs.resize(_size375); + uint32_t _i379; + for (_i379 = 0; _i379 < _size375; ++_i379) { - xfer += this->column_defs[_i367].read(iprot); + xfer += this->column_defs[_i379].read(iprot); } xfer += iprot->readListEnd(); } @@ -9975,10 +10095,10 @@ uint32_t CreateTableRequest::write(::apache::thrift::protocol::TProtocol* oprot) xfer += oprot->writeFieldBegin("column_defs", ::apache::thrift::protocol::T_LIST, 3); { xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast(this->column_defs.size())); - std::vector ::const_iterator _iter368; - for (_iter368 = this->column_defs.begin(); _iter368 != this->column_defs.end(); ++_iter368) + std::vector ::const_iterator _iter380; + for (_iter380 = this->column_defs.begin(); _iter380 != this->column_defs.end(); ++_iter380) { - xfer += (*_iter368).write(oprot); + xfer += (*_iter380).write(oprot); } xfer += oprot->writeListEnd(); } @@ -10007,21 +10127,21 @@ void swap(CreateTableRequest &a, CreateTableRequest &b) { swap(a.__isset, b.__isset); } -CreateTableRequest::CreateTableRequest(const CreateTableRequest& other369) { - db_name = other369.db_name; - table_name = other369.table_name; - column_defs = other369.column_defs; - session_id = other369.session_id; - create_option = other369.create_option; - __isset = other369.__isset; -} -CreateTableRequest& CreateTableRequest::operator=(const CreateTableRequest& other370) { - db_name = other370.db_name; - table_name = other370.table_name; - column_defs = other370.column_defs; - session_id = other370.session_id; - create_option = other370.create_option; - __isset = other370.__isset; +CreateTableRequest::CreateTableRequest(const CreateTableRequest& other381) { + db_name = other381.db_name; + table_name = other381.table_name; + column_defs = other381.column_defs; + session_id = other381.session_id; + create_option = other381.create_option; + __isset = other381.__isset; +} +CreateTableRequest& CreateTableRequest::operator=(const CreateTableRequest& other382) { + db_name = other382.db_name; + table_name = other382.table_name; + column_defs = other382.column_defs; + session_id = other382.session_id; + create_option = other382.create_option; + __isset = other382.__isset; return *this; } void CreateTableRequest::printTo(std::ostream& out) const { @@ -10162,19 +10282,19 @@ void swap(DropTableRequest &a, DropTableRequest &b) { swap(a.__isset, b.__isset); } -DropTableRequest::DropTableRequest(const DropTableRequest& other371) { - db_name = other371.db_name; - table_name = other371.table_name; - session_id = other371.session_id; - drop_option = other371.drop_option; - __isset = other371.__isset; +DropTableRequest::DropTableRequest(const DropTableRequest& other383) { + db_name = other383.db_name; + table_name = other383.table_name; + session_id = other383.session_id; + drop_option = other383.drop_option; + __isset = other383.__isset; } -DropTableRequest& DropTableRequest::operator=(const DropTableRequest& other372) { - db_name = other372.db_name; - table_name = other372.table_name; - session_id = other372.session_id; - drop_option = other372.drop_option; - __isset = other372.__isset; +DropTableRequest& DropTableRequest::operator=(const DropTableRequest& other384) { + db_name = other384.db_name; + table_name = other384.table_name; + session_id = other384.session_id; + drop_option = other384.drop_option; + __isset = other384.__isset; return *this; } void DropTableRequest::printTo(std::ostream& out) const { @@ -10259,14 +10379,14 @@ uint32_t InsertRequest::read(::apache::thrift::protocol::TProtocol* iprot) { if (ftype == ::apache::thrift::protocol::T_LIST) { { this->column_names.clear(); - uint32_t _size373; - ::apache::thrift::protocol::TType _etype376; - xfer += iprot->readListBegin(_etype376, _size373); - this->column_names.resize(_size373); - uint32_t _i377; - for (_i377 = 0; _i377 < _size373; ++_i377) + uint32_t _size385; + ::apache::thrift::protocol::TType _etype388; + xfer += iprot->readListBegin(_etype388, _size385); + this->column_names.resize(_size385); + uint32_t _i389; + for (_i389 = 0; _i389 < _size385; ++_i389) { - xfer += iprot->readString(this->column_names[_i377]); + xfer += iprot->readString(this->column_names[_i389]); } xfer += iprot->readListEnd(); } @@ -10279,14 +10399,14 @@ uint32_t InsertRequest::read(::apache::thrift::protocol::TProtocol* iprot) { if (ftype == ::apache::thrift::protocol::T_LIST) { { this->fields.clear(); - uint32_t _size378; - ::apache::thrift::protocol::TType _etype381; - xfer += iprot->readListBegin(_etype381, _size378); - this->fields.resize(_size378); - uint32_t _i382; - for (_i382 = 0; _i382 < _size378; ++_i382) + uint32_t _size390; + ::apache::thrift::protocol::TType _etype393; + xfer += iprot->readListBegin(_etype393, _size390); + this->fields.resize(_size390); + uint32_t _i394; + for (_i394 = 0; _i394 < _size390; ++_i394) { - xfer += this->fields[_i382].read(iprot); + xfer += this->fields[_i394].read(iprot); } xfer += iprot->readListEnd(); } @@ -10331,10 +10451,10 @@ uint32_t InsertRequest::write(::apache::thrift::protocol::TProtocol* oprot) cons xfer += oprot->writeFieldBegin("column_names", ::apache::thrift::protocol::T_LIST, 3); { xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast(this->column_names.size())); - std::vector ::const_iterator _iter383; - for (_iter383 = this->column_names.begin(); _iter383 != this->column_names.end(); ++_iter383) + std::vector ::const_iterator _iter395; + for (_iter395 = this->column_names.begin(); _iter395 != this->column_names.end(); ++_iter395) { - xfer += oprot->writeString((*_iter383)); + xfer += oprot->writeString((*_iter395)); } xfer += oprot->writeListEnd(); } @@ -10343,10 +10463,10 @@ uint32_t InsertRequest::write(::apache::thrift::protocol::TProtocol* oprot) cons xfer += oprot->writeFieldBegin("fields", ::apache::thrift::protocol::T_LIST, 4); { xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast(this->fields.size())); - std::vector ::const_iterator _iter384; - for (_iter384 = this->fields.begin(); _iter384 != this->fields.end(); ++_iter384) + std::vector ::const_iterator _iter396; + for (_iter396 = this->fields.begin(); _iter396 != this->fields.end(); ++_iter396) { - xfer += (*_iter384).write(oprot); + xfer += (*_iter396).write(oprot); } xfer += oprot->writeListEnd(); } @@ -10371,21 +10491,21 @@ void swap(InsertRequest &a, InsertRequest &b) { swap(a.__isset, b.__isset); } -InsertRequest::InsertRequest(const InsertRequest& other385) { - db_name = other385.db_name; - table_name = other385.table_name; - column_names = other385.column_names; - fields = other385.fields; - session_id = other385.session_id; - __isset = other385.__isset; -} -InsertRequest& InsertRequest::operator=(const InsertRequest& other386) { - db_name = other386.db_name; - table_name = other386.table_name; - column_names = other386.column_names; - fields = other386.fields; - session_id = other386.session_id; - __isset = other386.__isset; +InsertRequest::InsertRequest(const InsertRequest& other397) { + db_name = other397.db_name; + table_name = other397.table_name; + column_names = other397.column_names; + fields = other397.fields; + session_id = other397.session_id; + __isset = other397.__isset; +} +InsertRequest& InsertRequest::operator=(const InsertRequest& other398) { + db_name = other398.db_name; + table_name = other398.table_name; + column_names = other398.column_names; + fields = other398.fields; + session_id = other398.session_id; + __isset = other398.__isset; return *this; } void InsertRequest::printTo(std::ostream& out) const { @@ -10543,21 +10663,21 @@ void swap(ImportRequest &a, ImportRequest &b) { swap(a.__isset, b.__isset); } -ImportRequest::ImportRequest(const ImportRequest& other387) { - db_name = other387.db_name; - table_name = other387.table_name; - file_name = other387.file_name; - import_option = other387.import_option; - session_id = other387.session_id; - __isset = other387.__isset; -} -ImportRequest& ImportRequest::operator=(const ImportRequest& other388) { - db_name = other388.db_name; - table_name = other388.table_name; - file_name = other388.file_name; - import_option = other388.import_option; - session_id = other388.session_id; - __isset = other388.__isset; +ImportRequest::ImportRequest(const ImportRequest& other399) { + db_name = other399.db_name; + table_name = other399.table_name; + file_name = other399.file_name; + import_option = other399.import_option; + session_id = other399.session_id; + __isset = other399.__isset; +} +ImportRequest& ImportRequest::operator=(const ImportRequest& other400) { + db_name = other400.db_name; + table_name = other400.table_name; + file_name = other400.file_name; + import_option = other400.import_option; + session_id = other400.session_id; + __isset = other400.__isset; return *this; } void ImportRequest::printTo(std::ostream& out) const { @@ -10647,14 +10767,14 @@ uint32_t ExportRequest::read(::apache::thrift::protocol::TProtocol* iprot) { if (ftype == ::apache::thrift::protocol::T_LIST) { { this->columns.clear(); - uint32_t _size389; - ::apache::thrift::protocol::TType _etype392; - xfer += iprot->readListBegin(_etype392, _size389); - this->columns.resize(_size389); - uint32_t _i393; - for (_i393 = 0; _i393 < _size389; ++_i393) + uint32_t _size401; + ::apache::thrift::protocol::TType _etype404; + xfer += iprot->readListBegin(_etype404, _size401); + this->columns.resize(_size401); + uint32_t _i405; + for (_i405 = 0; _i405 < _size401; ++_i405) { - xfer += iprot->readString(this->columns[_i393]); + xfer += iprot->readString(this->columns[_i405]); } xfer += iprot->readListEnd(); } @@ -10715,10 +10835,10 @@ uint32_t ExportRequest::write(::apache::thrift::protocol::TProtocol* oprot) cons xfer += oprot->writeFieldBegin("columns", ::apache::thrift::protocol::T_LIST, 3); { xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast(this->columns.size())); - std::vector ::const_iterator _iter394; - for (_iter394 = this->columns.begin(); _iter394 != this->columns.end(); ++_iter394) + std::vector ::const_iterator _iter406; + for (_iter406 = this->columns.begin(); _iter406 != this->columns.end(); ++_iter406) { - xfer += oprot->writeString((*_iter394)); + xfer += oprot->writeString((*_iter406)); } xfer += oprot->writeListEnd(); } @@ -10752,23 +10872,23 @@ void swap(ExportRequest &a, ExportRequest &b) { swap(a.__isset, b.__isset); } -ExportRequest::ExportRequest(const ExportRequest& other395) { - db_name = other395.db_name; - table_name = other395.table_name; - columns = other395.columns; - file_name = other395.file_name; - export_option = other395.export_option; - session_id = other395.session_id; - __isset = other395.__isset; -} -ExportRequest& ExportRequest::operator=(const ExportRequest& other396) { - db_name = other396.db_name; - table_name = other396.table_name; - columns = other396.columns; - file_name = other396.file_name; - export_option = other396.export_option; - session_id = other396.session_id; - __isset = other396.__isset; +ExportRequest::ExportRequest(const ExportRequest& other407) { + db_name = other407.db_name; + table_name = other407.table_name; + columns = other407.columns; + file_name = other407.file_name; + export_option = other407.export_option; + session_id = other407.session_id; + __isset = other407.__isset; +} +ExportRequest& ExportRequest::operator=(const ExportRequest& other408) { + db_name = other408.db_name; + table_name = other408.table_name; + columns = other408.columns; + file_name = other408.file_name; + export_option = other408.export_option; + session_id = other408.session_id; + __isset = other408.__isset; return *this; } void ExportRequest::printTo(std::ostream& out) const { @@ -10903,14 +11023,14 @@ uint32_t ExplainRequest::read(::apache::thrift::protocol::TProtocol* iprot) { if (ftype == ::apache::thrift::protocol::T_LIST) { { this->select_list.clear(); - uint32_t _size397; - ::apache::thrift::protocol::TType _etype400; - xfer += iprot->readListBegin(_etype400, _size397); - this->select_list.resize(_size397); - uint32_t _i401; - for (_i401 = 0; _i401 < _size397; ++_i401) + uint32_t _size409; + ::apache::thrift::protocol::TType _etype412; + xfer += iprot->readListBegin(_etype412, _size409); + this->select_list.resize(_size409); + uint32_t _i413; + for (_i413 = 0; _i413 < _size409; ++_i413) { - xfer += this->select_list[_i401].read(iprot); + xfer += this->select_list[_i413].read(iprot); } xfer += iprot->readListEnd(); } @@ -10923,14 +11043,14 @@ uint32_t ExplainRequest::read(::apache::thrift::protocol::TProtocol* iprot) { if (ftype == ::apache::thrift::protocol::T_LIST) { { this->highlight_list.clear(); - uint32_t _size402; - ::apache::thrift::protocol::TType _etype405; - xfer += iprot->readListBegin(_etype405, _size402); - this->highlight_list.resize(_size402); - uint32_t _i406; - for (_i406 = 0; _i406 < _size402; ++_i406) + uint32_t _size414; + ::apache::thrift::protocol::TType _etype417; + xfer += iprot->readListBegin(_etype417, _size414); + this->highlight_list.resize(_size414); + uint32_t _i418; + for (_i418 = 0; _i418 < _size414; ++_i418) { - xfer += this->highlight_list[_i406].read(iprot); + xfer += this->highlight_list[_i418].read(iprot); } xfer += iprot->readListEnd(); } @@ -10959,14 +11079,14 @@ uint32_t ExplainRequest::read(::apache::thrift::protocol::TProtocol* iprot) { if (ftype == ::apache::thrift::protocol::T_LIST) { { this->group_by_list.clear(); - uint32_t _size407; - ::apache::thrift::protocol::TType _etype410; - xfer += iprot->readListBegin(_etype410, _size407); - this->group_by_list.resize(_size407); - uint32_t _i411; - for (_i411 = 0; _i411 < _size407; ++_i411) + uint32_t _size419; + ::apache::thrift::protocol::TType _etype422; + xfer += iprot->readListBegin(_etype422, _size419); + this->group_by_list.resize(_size419); + uint32_t _i423; + for (_i423 = 0; _i423 < _size419; ++_i423) { - xfer += this->group_by_list[_i411].read(iprot); + xfer += this->group_by_list[_i423].read(iprot); } xfer += iprot->readListEnd(); } @@ -11003,14 +11123,14 @@ uint32_t ExplainRequest::read(::apache::thrift::protocol::TProtocol* iprot) { if (ftype == ::apache::thrift::protocol::T_LIST) { { this->order_by_list.clear(); - uint32_t _size412; - ::apache::thrift::protocol::TType _etype415; - xfer += iprot->readListBegin(_etype415, _size412); - this->order_by_list.resize(_size412); - uint32_t _i416; - for (_i416 = 0; _i416 < _size412; ++_i416) + uint32_t _size424; + ::apache::thrift::protocol::TType _etype427; + xfer += iprot->readListBegin(_etype427, _size424); + this->order_by_list.resize(_size424); + uint32_t _i428; + for (_i428 = 0; _i428 < _size424; ++_i428) { - xfer += this->order_by_list[_i416].read(iprot); + xfer += this->order_by_list[_i428].read(iprot); } xfer += iprot->readListEnd(); } @@ -11021,9 +11141,9 @@ uint32_t ExplainRequest::read(::apache::thrift::protocol::TProtocol* iprot) { break; case 13: if (ftype == ::apache::thrift::protocol::T_I32) { - int32_t ecast417; - xfer += iprot->readI32(ecast417); - this->explain_type = static_cast(ecast417); + int32_t ecast429; + xfer += iprot->readI32(ecast429); + this->explain_type = static_cast(ecast429); this->__isset.explain_type = true; } else { xfer += iprot->skip(ftype); @@ -11061,10 +11181,10 @@ uint32_t ExplainRequest::write(::apache::thrift::protocol::TProtocol* oprot) con xfer += oprot->writeFieldBegin("select_list", ::apache::thrift::protocol::T_LIST, 4); { xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast(this->select_list.size())); - std::vector ::const_iterator _iter418; - for (_iter418 = this->select_list.begin(); _iter418 != this->select_list.end(); ++_iter418) + std::vector ::const_iterator _iter430; + for (_iter430 = this->select_list.begin(); _iter430 != this->select_list.end(); ++_iter430) { - xfer += (*_iter418).write(oprot); + xfer += (*_iter430).write(oprot); } xfer += oprot->writeListEnd(); } @@ -11074,10 +11194,10 @@ uint32_t ExplainRequest::write(::apache::thrift::protocol::TProtocol* oprot) con xfer += oprot->writeFieldBegin("highlight_list", ::apache::thrift::protocol::T_LIST, 5); { xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast(this->highlight_list.size())); - std::vector ::const_iterator _iter419; - for (_iter419 = this->highlight_list.begin(); _iter419 != this->highlight_list.end(); ++_iter419) + std::vector ::const_iterator _iter431; + for (_iter431 = this->highlight_list.begin(); _iter431 != this->highlight_list.end(); ++_iter431) { - xfer += (*_iter419).write(oprot); + xfer += (*_iter431).write(oprot); } xfer += oprot->writeListEnd(); } @@ -11097,10 +11217,10 @@ uint32_t ExplainRequest::write(::apache::thrift::protocol::TProtocol* oprot) con xfer += oprot->writeFieldBegin("group_by_list", ::apache::thrift::protocol::T_LIST, 8); { xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast(this->group_by_list.size())); - std::vector ::const_iterator _iter420; - for (_iter420 = this->group_by_list.begin(); _iter420 != this->group_by_list.end(); ++_iter420) + std::vector ::const_iterator _iter432; + for (_iter432 = this->group_by_list.begin(); _iter432 != this->group_by_list.end(); ++_iter432) { - xfer += (*_iter420).write(oprot); + xfer += (*_iter432).write(oprot); } xfer += oprot->writeListEnd(); } @@ -11125,10 +11245,10 @@ uint32_t ExplainRequest::write(::apache::thrift::protocol::TProtocol* oprot) con xfer += oprot->writeFieldBegin("order_by_list", ::apache::thrift::protocol::T_LIST, 12); { xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast(this->order_by_list.size())); - std::vector ::const_iterator _iter421; - for (_iter421 = this->order_by_list.begin(); _iter421 != this->order_by_list.end(); ++_iter421) + std::vector ::const_iterator _iter433; + for (_iter433 = this->order_by_list.begin(); _iter433 != this->order_by_list.end(); ++_iter433) { - xfer += (*_iter421).write(oprot); + xfer += (*_iter433).write(oprot); } xfer += oprot->writeListEnd(); } @@ -11161,37 +11281,37 @@ void swap(ExplainRequest &a, ExplainRequest &b) { swap(a.__isset, b.__isset); } -ExplainRequest::ExplainRequest(const ExplainRequest& other422) { - session_id = other422.session_id; - db_name = other422.db_name; - table_name = other422.table_name; - select_list = other422.select_list; - highlight_list = other422.highlight_list; - search_expr = other422.search_expr; - where_expr = other422.where_expr; - group_by_list = other422.group_by_list; - having_expr = other422.having_expr; - limit_expr = other422.limit_expr; - offset_expr = other422.offset_expr; - order_by_list = other422.order_by_list; - explain_type = other422.explain_type; - __isset = other422.__isset; -} -ExplainRequest& ExplainRequest::operator=(const ExplainRequest& other423) { - session_id = other423.session_id; - db_name = other423.db_name; - table_name = other423.table_name; - select_list = other423.select_list; - highlight_list = other423.highlight_list; - search_expr = other423.search_expr; - where_expr = other423.where_expr; - group_by_list = other423.group_by_list; - having_expr = other423.having_expr; - limit_expr = other423.limit_expr; - offset_expr = other423.offset_expr; - order_by_list = other423.order_by_list; - explain_type = other423.explain_type; - __isset = other423.__isset; +ExplainRequest::ExplainRequest(const ExplainRequest& other434) { + session_id = other434.session_id; + db_name = other434.db_name; + table_name = other434.table_name; + select_list = other434.select_list; + highlight_list = other434.highlight_list; + search_expr = other434.search_expr; + where_expr = other434.where_expr; + group_by_list = other434.group_by_list; + having_expr = other434.having_expr; + limit_expr = other434.limit_expr; + offset_expr = other434.offset_expr; + order_by_list = other434.order_by_list; + explain_type = other434.explain_type; + __isset = other434.__isset; +} +ExplainRequest& ExplainRequest::operator=(const ExplainRequest& other435) { + session_id = other435.session_id; + db_name = other435.db_name; + table_name = other435.table_name; + select_list = other435.select_list; + highlight_list = other435.highlight_list; + search_expr = other435.search_expr; + where_expr = other435.where_expr; + group_by_list = other435.group_by_list; + having_expr = other435.having_expr; + limit_expr = other435.limit_expr; + offset_expr = other435.offset_expr; + order_by_list = other435.order_by_list; + explain_type = other435.explain_type; + __isset = other435.__isset; return *this; } void ExplainRequest::printTo(std::ostream& out) const { @@ -11281,14 +11401,14 @@ uint32_t ExplainResponse::read(::apache::thrift::protocol::TProtocol* iprot) { if (ftype == ::apache::thrift::protocol::T_LIST) { { this->column_defs.clear(); - uint32_t _size424; - ::apache::thrift::protocol::TType _etype427; - xfer += iprot->readListBegin(_etype427, _size424); - this->column_defs.resize(_size424); - uint32_t _i428; - for (_i428 = 0; _i428 < _size424; ++_i428) + uint32_t _size436; + ::apache::thrift::protocol::TType _etype439; + xfer += iprot->readListBegin(_etype439, _size436); + this->column_defs.resize(_size436); + uint32_t _i440; + for (_i440 = 0; _i440 < _size436; ++_i440) { - xfer += this->column_defs[_i428].read(iprot); + xfer += this->column_defs[_i440].read(iprot); } xfer += iprot->readListEnd(); } @@ -11301,14 +11421,14 @@ uint32_t ExplainResponse::read(::apache::thrift::protocol::TProtocol* iprot) { if (ftype == ::apache::thrift::protocol::T_LIST) { { this->column_fields.clear(); - uint32_t _size429; - ::apache::thrift::protocol::TType _etype432; - xfer += iprot->readListBegin(_etype432, _size429); - this->column_fields.resize(_size429); - uint32_t _i433; - for (_i433 = 0; _i433 < _size429; ++_i433) + uint32_t _size441; + ::apache::thrift::protocol::TType _etype444; + xfer += iprot->readListBegin(_etype444, _size441); + this->column_fields.resize(_size441); + uint32_t _i445; + for (_i445 = 0; _i445 < _size441; ++_i445) { - xfer += this->column_fields[_i433].read(iprot); + xfer += this->column_fields[_i445].read(iprot); } xfer += iprot->readListEnd(); } @@ -11345,10 +11465,10 @@ uint32_t ExplainResponse::write(::apache::thrift::protocol::TProtocol* oprot) co xfer += oprot->writeFieldBegin("column_defs", ::apache::thrift::protocol::T_LIST, 3); { xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast(this->column_defs.size())); - std::vector ::const_iterator _iter434; - for (_iter434 = this->column_defs.begin(); _iter434 != this->column_defs.end(); ++_iter434) + std::vector ::const_iterator _iter446; + for (_iter446 = this->column_defs.begin(); _iter446 != this->column_defs.end(); ++_iter446) { - xfer += (*_iter434).write(oprot); + xfer += (*_iter446).write(oprot); } xfer += oprot->writeListEnd(); } @@ -11357,10 +11477,10 @@ uint32_t ExplainResponse::write(::apache::thrift::protocol::TProtocol* oprot) co xfer += oprot->writeFieldBegin("column_fields", ::apache::thrift::protocol::T_LIST, 4); { xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast(this->column_fields.size())); - std::vector ::const_iterator _iter435; - for (_iter435 = this->column_fields.begin(); _iter435 != this->column_fields.end(); ++_iter435) + std::vector ::const_iterator _iter447; + for (_iter447 = this->column_fields.begin(); _iter447 != this->column_fields.end(); ++_iter447) { - xfer += (*_iter435).write(oprot); + xfer += (*_iter447).write(oprot); } xfer += oprot->writeListEnd(); } @@ -11380,19 +11500,19 @@ void swap(ExplainResponse &a, ExplainResponse &b) { swap(a.__isset, b.__isset); } -ExplainResponse::ExplainResponse(const ExplainResponse& other436) { - error_code = other436.error_code; - error_msg = other436.error_msg; - column_defs = other436.column_defs; - column_fields = other436.column_fields; - __isset = other436.__isset; +ExplainResponse::ExplainResponse(const ExplainResponse& other448) { + error_code = other448.error_code; + error_msg = other448.error_msg; + column_defs = other448.column_defs; + column_fields = other448.column_fields; + __isset = other448.__isset; } -ExplainResponse& ExplainResponse::operator=(const ExplainResponse& other437) { - error_code = other437.error_code; - error_msg = other437.error_msg; - column_defs = other437.column_defs; - column_fields = other437.column_fields; - __isset = other437.__isset; +ExplainResponse& ExplainResponse::operator=(const ExplainResponse& other449) { + error_code = other449.error_code; + error_msg = other449.error_msg; + column_defs = other449.column_defs; + column_fields = other449.column_fields; + __isset = other449.__isset; return *this; } void ExplainResponse::printTo(std::ostream& out) const { @@ -11521,14 +11641,14 @@ uint32_t SelectRequest::read(::apache::thrift::protocol::TProtocol* iprot) { if (ftype == ::apache::thrift::protocol::T_LIST) { { this->select_list.clear(); - uint32_t _size438; - ::apache::thrift::protocol::TType _etype441; - xfer += iprot->readListBegin(_etype441, _size438); - this->select_list.resize(_size438); - uint32_t _i442; - for (_i442 = 0; _i442 < _size438; ++_i442) + uint32_t _size450; + ::apache::thrift::protocol::TType _etype453; + xfer += iprot->readListBegin(_etype453, _size450); + this->select_list.resize(_size450); + uint32_t _i454; + for (_i454 = 0; _i454 < _size450; ++_i454) { - xfer += this->select_list[_i442].read(iprot); + xfer += this->select_list[_i454].read(iprot); } xfer += iprot->readListEnd(); } @@ -11541,14 +11661,14 @@ uint32_t SelectRequest::read(::apache::thrift::protocol::TProtocol* iprot) { if (ftype == ::apache::thrift::protocol::T_LIST) { { this->highlight_list.clear(); - uint32_t _size443; - ::apache::thrift::protocol::TType _etype446; - xfer += iprot->readListBegin(_etype446, _size443); - this->highlight_list.resize(_size443); - uint32_t _i447; - for (_i447 = 0; _i447 < _size443; ++_i447) + uint32_t _size455; + ::apache::thrift::protocol::TType _etype458; + xfer += iprot->readListBegin(_etype458, _size455); + this->highlight_list.resize(_size455); + uint32_t _i459; + for (_i459 = 0; _i459 < _size455; ++_i459) { - xfer += this->highlight_list[_i447].read(iprot); + xfer += this->highlight_list[_i459].read(iprot); } xfer += iprot->readListEnd(); } @@ -11577,14 +11697,14 @@ uint32_t SelectRequest::read(::apache::thrift::protocol::TProtocol* iprot) { if (ftype == ::apache::thrift::protocol::T_LIST) { { this->group_by_list.clear(); - uint32_t _size448; - ::apache::thrift::protocol::TType _etype451; - xfer += iprot->readListBegin(_etype451, _size448); - this->group_by_list.resize(_size448); - uint32_t _i452; - for (_i452 = 0; _i452 < _size448; ++_i452) + uint32_t _size460; + ::apache::thrift::protocol::TType _etype463; + xfer += iprot->readListBegin(_etype463, _size460); + this->group_by_list.resize(_size460); + uint32_t _i464; + for (_i464 = 0; _i464 < _size460; ++_i464) { - xfer += this->group_by_list[_i452].read(iprot); + xfer += this->group_by_list[_i464].read(iprot); } xfer += iprot->readListEnd(); } @@ -11621,14 +11741,14 @@ uint32_t SelectRequest::read(::apache::thrift::protocol::TProtocol* iprot) { if (ftype == ::apache::thrift::protocol::T_LIST) { { this->order_by_list.clear(); - uint32_t _size453; - ::apache::thrift::protocol::TType _etype456; - xfer += iprot->readListBegin(_etype456, _size453); - this->order_by_list.resize(_size453); - uint32_t _i457; - for (_i457 = 0; _i457 < _size453; ++_i457) + uint32_t _size465; + ::apache::thrift::protocol::TType _etype468; + xfer += iprot->readListBegin(_etype468, _size465); + this->order_by_list.resize(_size465); + uint32_t _i469; + for (_i469 = 0; _i469 < _size465; ++_i469) { - xfer += this->order_by_list[_i457].read(iprot); + xfer += this->order_by_list[_i469].read(iprot); } xfer += iprot->readListEnd(); } @@ -11669,10 +11789,10 @@ uint32_t SelectRequest::write(::apache::thrift::protocol::TProtocol* oprot) cons xfer += oprot->writeFieldBegin("select_list", ::apache::thrift::protocol::T_LIST, 4); { xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast(this->select_list.size())); - std::vector ::const_iterator _iter458; - for (_iter458 = this->select_list.begin(); _iter458 != this->select_list.end(); ++_iter458) + std::vector ::const_iterator _iter470; + for (_iter470 = this->select_list.begin(); _iter470 != this->select_list.end(); ++_iter470) { - xfer += (*_iter458).write(oprot); + xfer += (*_iter470).write(oprot); } xfer += oprot->writeListEnd(); } @@ -11682,10 +11802,10 @@ uint32_t SelectRequest::write(::apache::thrift::protocol::TProtocol* oprot) cons xfer += oprot->writeFieldBegin("highlight_list", ::apache::thrift::protocol::T_LIST, 5); { xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast(this->highlight_list.size())); - std::vector ::const_iterator _iter459; - for (_iter459 = this->highlight_list.begin(); _iter459 != this->highlight_list.end(); ++_iter459) + std::vector ::const_iterator _iter471; + for (_iter471 = this->highlight_list.begin(); _iter471 != this->highlight_list.end(); ++_iter471) { - xfer += (*_iter459).write(oprot); + xfer += (*_iter471).write(oprot); } xfer += oprot->writeListEnd(); } @@ -11705,10 +11825,10 @@ uint32_t SelectRequest::write(::apache::thrift::protocol::TProtocol* oprot) cons xfer += oprot->writeFieldBegin("group_by_list", ::apache::thrift::protocol::T_LIST, 8); { xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast(this->group_by_list.size())); - std::vector ::const_iterator _iter460; - for (_iter460 = this->group_by_list.begin(); _iter460 != this->group_by_list.end(); ++_iter460) + std::vector ::const_iterator _iter472; + for (_iter472 = this->group_by_list.begin(); _iter472 != this->group_by_list.end(); ++_iter472) { - xfer += (*_iter460).write(oprot); + xfer += (*_iter472).write(oprot); } xfer += oprot->writeListEnd(); } @@ -11733,10 +11853,10 @@ uint32_t SelectRequest::write(::apache::thrift::protocol::TProtocol* oprot) cons xfer += oprot->writeFieldBegin("order_by_list", ::apache::thrift::protocol::T_LIST, 12); { xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast(this->order_by_list.size())); - std::vector ::const_iterator _iter461; - for (_iter461 = this->order_by_list.begin(); _iter461 != this->order_by_list.end(); ++_iter461) + std::vector ::const_iterator _iter473; + for (_iter473 = this->order_by_list.begin(); _iter473 != this->order_by_list.end(); ++_iter473) { - xfer += (*_iter461).write(oprot); + xfer += (*_iter473).write(oprot); } xfer += oprot->writeListEnd(); } @@ -11764,35 +11884,35 @@ void swap(SelectRequest &a, SelectRequest &b) { swap(a.__isset, b.__isset); } -SelectRequest::SelectRequest(const SelectRequest& other462) { - session_id = other462.session_id; - db_name = other462.db_name; - table_name = other462.table_name; - select_list = other462.select_list; - highlight_list = other462.highlight_list; - search_expr = other462.search_expr; - where_expr = other462.where_expr; - group_by_list = other462.group_by_list; - having_expr = other462.having_expr; - limit_expr = other462.limit_expr; - offset_expr = other462.offset_expr; - order_by_list = other462.order_by_list; - __isset = other462.__isset; -} -SelectRequest& SelectRequest::operator=(const SelectRequest& other463) { - session_id = other463.session_id; - db_name = other463.db_name; - table_name = other463.table_name; - select_list = other463.select_list; - highlight_list = other463.highlight_list; - search_expr = other463.search_expr; - where_expr = other463.where_expr; - group_by_list = other463.group_by_list; - having_expr = other463.having_expr; - limit_expr = other463.limit_expr; - offset_expr = other463.offset_expr; - order_by_list = other463.order_by_list; - __isset = other463.__isset; +SelectRequest::SelectRequest(const SelectRequest& other474) { + session_id = other474.session_id; + db_name = other474.db_name; + table_name = other474.table_name; + select_list = other474.select_list; + highlight_list = other474.highlight_list; + search_expr = other474.search_expr; + where_expr = other474.where_expr; + group_by_list = other474.group_by_list; + having_expr = other474.having_expr; + limit_expr = other474.limit_expr; + offset_expr = other474.offset_expr; + order_by_list = other474.order_by_list; + __isset = other474.__isset; +} +SelectRequest& SelectRequest::operator=(const SelectRequest& other475) { + session_id = other475.session_id; + db_name = other475.db_name; + table_name = other475.table_name; + select_list = other475.select_list; + highlight_list = other475.highlight_list; + search_expr = other475.search_expr; + where_expr = other475.where_expr; + group_by_list = other475.group_by_list; + having_expr = other475.having_expr; + limit_expr = other475.limit_expr; + offset_expr = other475.offset_expr; + order_by_list = other475.order_by_list; + __isset = other475.__isset; return *this; } void SelectRequest::printTo(std::ostream& out) const { @@ -11881,14 +12001,14 @@ uint32_t SelectResponse::read(::apache::thrift::protocol::TProtocol* iprot) { if (ftype == ::apache::thrift::protocol::T_LIST) { { this->column_defs.clear(); - uint32_t _size464; - ::apache::thrift::protocol::TType _etype467; - xfer += iprot->readListBegin(_etype467, _size464); - this->column_defs.resize(_size464); - uint32_t _i468; - for (_i468 = 0; _i468 < _size464; ++_i468) + uint32_t _size476; + ::apache::thrift::protocol::TType _etype479; + xfer += iprot->readListBegin(_etype479, _size476); + this->column_defs.resize(_size476); + uint32_t _i480; + for (_i480 = 0; _i480 < _size476; ++_i480) { - xfer += this->column_defs[_i468].read(iprot); + xfer += this->column_defs[_i480].read(iprot); } xfer += iprot->readListEnd(); } @@ -11901,14 +12021,14 @@ uint32_t SelectResponse::read(::apache::thrift::protocol::TProtocol* iprot) { if (ftype == ::apache::thrift::protocol::T_LIST) { { this->column_fields.clear(); - uint32_t _size469; - ::apache::thrift::protocol::TType _etype472; - xfer += iprot->readListBegin(_etype472, _size469); - this->column_fields.resize(_size469); - uint32_t _i473; - for (_i473 = 0; _i473 < _size469; ++_i473) + uint32_t _size481; + ::apache::thrift::protocol::TType _etype484; + xfer += iprot->readListBegin(_etype484, _size481); + this->column_fields.resize(_size481); + uint32_t _i485; + for (_i485 = 0; _i485 < _size481; ++_i485) { - xfer += this->column_fields[_i473].read(iprot); + xfer += this->column_fields[_i485].read(iprot); } xfer += iprot->readListEnd(); } @@ -11945,10 +12065,10 @@ uint32_t SelectResponse::write(::apache::thrift::protocol::TProtocol* oprot) con xfer += oprot->writeFieldBegin("column_defs", ::apache::thrift::protocol::T_LIST, 3); { xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast(this->column_defs.size())); - std::vector ::const_iterator _iter474; - for (_iter474 = this->column_defs.begin(); _iter474 != this->column_defs.end(); ++_iter474) + std::vector ::const_iterator _iter486; + for (_iter486 = this->column_defs.begin(); _iter486 != this->column_defs.end(); ++_iter486) { - xfer += (*_iter474).write(oprot); + xfer += (*_iter486).write(oprot); } xfer += oprot->writeListEnd(); } @@ -11957,10 +12077,10 @@ uint32_t SelectResponse::write(::apache::thrift::protocol::TProtocol* oprot) con xfer += oprot->writeFieldBegin("column_fields", ::apache::thrift::protocol::T_LIST, 4); { xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast(this->column_fields.size())); - std::vector ::const_iterator _iter475; - for (_iter475 = this->column_fields.begin(); _iter475 != this->column_fields.end(); ++_iter475) + std::vector ::const_iterator _iter487; + for (_iter487 = this->column_fields.begin(); _iter487 != this->column_fields.end(); ++_iter487) { - xfer += (*_iter475).write(oprot); + xfer += (*_iter487).write(oprot); } xfer += oprot->writeListEnd(); } @@ -11980,19 +12100,19 @@ void swap(SelectResponse &a, SelectResponse &b) { swap(a.__isset, b.__isset); } -SelectResponse::SelectResponse(const SelectResponse& other476) { - error_code = other476.error_code; - error_msg = other476.error_msg; - column_defs = other476.column_defs; - column_fields = other476.column_fields; - __isset = other476.__isset; +SelectResponse::SelectResponse(const SelectResponse& other488) { + error_code = other488.error_code; + error_msg = other488.error_msg; + column_defs = other488.column_defs; + column_fields = other488.column_fields; + __isset = other488.__isset; } -SelectResponse& SelectResponse::operator=(const SelectResponse& other477) { - error_code = other477.error_code; - error_msg = other477.error_msg; - column_defs = other477.column_defs; - column_fields = other477.column_fields; - __isset = other477.__isset; +SelectResponse& SelectResponse::operator=(const SelectResponse& other489) { + error_code = other489.error_code; + error_msg = other489.error_msg; + column_defs = other489.column_defs; + column_fields = other489.column_fields; + __isset = other489.__isset; return *this; } void SelectResponse::printTo(std::ostream& out) const { @@ -12132,19 +12252,19 @@ void swap(DeleteRequest &a, DeleteRequest &b) { swap(a.__isset, b.__isset); } -DeleteRequest::DeleteRequest(const DeleteRequest& other478) { - db_name = other478.db_name; - table_name = other478.table_name; - where_expr = other478.where_expr; - session_id = other478.session_id; - __isset = other478.__isset; +DeleteRequest::DeleteRequest(const DeleteRequest& other490) { + db_name = other490.db_name; + table_name = other490.table_name; + where_expr = other490.where_expr; + session_id = other490.session_id; + __isset = other490.__isset; } -DeleteRequest& DeleteRequest::operator=(const DeleteRequest& other479) { - db_name = other479.db_name; - table_name = other479.table_name; - where_expr = other479.where_expr; - session_id = other479.session_id; - __isset = other479.__isset; +DeleteRequest& DeleteRequest::operator=(const DeleteRequest& other491) { + db_name = other491.db_name; + table_name = other491.table_name; + where_expr = other491.where_expr; + session_id = other491.session_id; + __isset = other491.__isset; return *this; } void DeleteRequest::printTo(std::ostream& out) const { @@ -12237,14 +12357,14 @@ uint32_t UpdateRequest::read(::apache::thrift::protocol::TProtocol* iprot) { if (ftype == ::apache::thrift::protocol::T_LIST) { { this->update_expr_array.clear(); - uint32_t _size480; - ::apache::thrift::protocol::TType _etype483; - xfer += iprot->readListBegin(_etype483, _size480); - this->update_expr_array.resize(_size480); - uint32_t _i484; - for (_i484 = 0; _i484 < _size480; ++_i484) + uint32_t _size492; + ::apache::thrift::protocol::TType _etype495; + xfer += iprot->readListBegin(_etype495, _size492); + this->update_expr_array.resize(_size492); + uint32_t _i496; + for (_i496 = 0; _i496 < _size492; ++_i496) { - xfer += this->update_expr_array[_i484].read(iprot); + xfer += this->update_expr_array[_i496].read(iprot); } xfer += iprot->readListEnd(); } @@ -12293,10 +12413,10 @@ uint32_t UpdateRequest::write(::apache::thrift::protocol::TProtocol* oprot) cons xfer += oprot->writeFieldBegin("update_expr_array", ::apache::thrift::protocol::T_LIST, 4); { xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast(this->update_expr_array.size())); - std::vector ::const_iterator _iter485; - for (_iter485 = this->update_expr_array.begin(); _iter485 != this->update_expr_array.end(); ++_iter485) + std::vector ::const_iterator _iter497; + for (_iter497 = this->update_expr_array.begin(); _iter497 != this->update_expr_array.end(); ++_iter497) { - xfer += (*_iter485).write(oprot); + xfer += (*_iter497).write(oprot); } xfer += oprot->writeListEnd(); } @@ -12321,21 +12441,21 @@ void swap(UpdateRequest &a, UpdateRequest &b) { swap(a.__isset, b.__isset); } -UpdateRequest::UpdateRequest(const UpdateRequest& other486) { - db_name = other486.db_name; - table_name = other486.table_name; - where_expr = other486.where_expr; - update_expr_array = other486.update_expr_array; - session_id = other486.session_id; - __isset = other486.__isset; -} -UpdateRequest& UpdateRequest::operator=(const UpdateRequest& other487) { - db_name = other487.db_name; - table_name = other487.table_name; - where_expr = other487.where_expr; - update_expr_array = other487.update_expr_array; - session_id = other487.session_id; - __isset = other487.__isset; +UpdateRequest::UpdateRequest(const UpdateRequest& other498) { + db_name = other498.db_name; + table_name = other498.table_name; + where_expr = other498.where_expr; + update_expr_array = other498.update_expr_array; + session_id = other498.session_id; + __isset = other498.__isset; +} +UpdateRequest& UpdateRequest::operator=(const UpdateRequest& other499) { + db_name = other499.db_name; + table_name = other499.table_name; + where_expr = other499.where_expr; + update_expr_array = other499.update_expr_array; + session_id = other499.session_id; + __isset = other499.__isset; return *this; } void UpdateRequest::printTo(std::ostream& out) const { @@ -12417,14 +12537,14 @@ uint32_t AddColumnsRequest::read(::apache::thrift::protocol::TProtocol* iprot) { if (ftype == ::apache::thrift::protocol::T_LIST) { { this->column_defs.clear(); - uint32_t _size488; - ::apache::thrift::protocol::TType _etype491; - xfer += iprot->readListBegin(_etype491, _size488); - this->column_defs.resize(_size488); - uint32_t _i492; - for (_i492 = 0; _i492 < _size488; ++_i492) + uint32_t _size500; + ::apache::thrift::protocol::TType _etype503; + xfer += iprot->readListBegin(_etype503, _size500); + this->column_defs.resize(_size500); + uint32_t _i504; + for (_i504 = 0; _i504 < _size500; ++_i504) { - xfer += this->column_defs[_i492].read(iprot); + xfer += this->column_defs[_i504].read(iprot); } xfer += iprot->readListEnd(); } @@ -12469,10 +12589,10 @@ uint32_t AddColumnsRequest::write(::apache::thrift::protocol::TProtocol* oprot) xfer += oprot->writeFieldBegin("column_defs", ::apache::thrift::protocol::T_LIST, 3); { xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast(this->column_defs.size())); - std::vector ::const_iterator _iter493; - for (_iter493 = this->column_defs.begin(); _iter493 != this->column_defs.end(); ++_iter493) + std::vector ::const_iterator _iter505; + for (_iter505 = this->column_defs.begin(); _iter505 != this->column_defs.end(); ++_iter505) { - xfer += (*_iter493).write(oprot); + xfer += (*_iter505).write(oprot); } xfer += oprot->writeListEnd(); } @@ -12496,19 +12616,19 @@ void swap(AddColumnsRequest &a, AddColumnsRequest &b) { swap(a.__isset, b.__isset); } -AddColumnsRequest::AddColumnsRequest(const AddColumnsRequest& other494) { - db_name = other494.db_name; - table_name = other494.table_name; - column_defs = other494.column_defs; - session_id = other494.session_id; - __isset = other494.__isset; +AddColumnsRequest::AddColumnsRequest(const AddColumnsRequest& other506) { + db_name = other506.db_name; + table_name = other506.table_name; + column_defs = other506.column_defs; + session_id = other506.session_id; + __isset = other506.__isset; } -AddColumnsRequest& AddColumnsRequest::operator=(const AddColumnsRequest& other495) { - db_name = other495.db_name; - table_name = other495.table_name; - column_defs = other495.column_defs; - session_id = other495.session_id; - __isset = other495.__isset; +AddColumnsRequest& AddColumnsRequest::operator=(const AddColumnsRequest& other507) { + db_name = other507.db_name; + table_name = other507.table_name; + column_defs = other507.column_defs; + session_id = other507.session_id; + __isset = other507.__isset; return *this; } void AddColumnsRequest::printTo(std::ostream& out) const { @@ -12589,14 +12709,14 @@ uint32_t DropColumnsRequest::read(::apache::thrift::protocol::TProtocol* iprot) if (ftype == ::apache::thrift::protocol::T_LIST) { { this->column_names.clear(); - uint32_t _size496; - ::apache::thrift::protocol::TType _etype499; - xfer += iprot->readListBegin(_etype499, _size496); - this->column_names.resize(_size496); - uint32_t _i500; - for (_i500 = 0; _i500 < _size496; ++_i500) + uint32_t _size508; + ::apache::thrift::protocol::TType _etype511; + xfer += iprot->readListBegin(_etype511, _size508); + this->column_names.resize(_size508); + uint32_t _i512; + for (_i512 = 0; _i512 < _size508; ++_i512) { - xfer += iprot->readString(this->column_names[_i500]); + xfer += iprot->readString(this->column_names[_i512]); } xfer += iprot->readListEnd(); } @@ -12641,10 +12761,10 @@ uint32_t DropColumnsRequest::write(::apache::thrift::protocol::TProtocol* oprot) xfer += oprot->writeFieldBegin("column_names", ::apache::thrift::protocol::T_LIST, 3); { xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast(this->column_names.size())); - std::vector ::const_iterator _iter501; - for (_iter501 = this->column_names.begin(); _iter501 != this->column_names.end(); ++_iter501) + std::vector ::const_iterator _iter513; + for (_iter513 = this->column_names.begin(); _iter513 != this->column_names.end(); ++_iter513) { - xfer += oprot->writeString((*_iter501)); + xfer += oprot->writeString((*_iter513)); } xfer += oprot->writeListEnd(); } @@ -12668,19 +12788,19 @@ void swap(DropColumnsRequest &a, DropColumnsRequest &b) { swap(a.__isset, b.__isset); } -DropColumnsRequest::DropColumnsRequest(const DropColumnsRequest& other502) { - db_name = other502.db_name; - table_name = other502.table_name; - column_names = other502.column_names; - session_id = other502.session_id; - __isset = other502.__isset; +DropColumnsRequest::DropColumnsRequest(const DropColumnsRequest& other514) { + db_name = other514.db_name; + table_name = other514.table_name; + column_names = other514.column_names; + session_id = other514.session_id; + __isset = other514.__isset; } -DropColumnsRequest& DropColumnsRequest::operator=(const DropColumnsRequest& other503) { - db_name = other503.db_name; - table_name = other503.table_name; - column_names = other503.column_names; - session_id = other503.session_id; - __isset = other503.__isset; +DropColumnsRequest& DropColumnsRequest::operator=(const DropColumnsRequest& other515) { + db_name = other515.db_name; + table_name = other515.table_name; + column_names = other515.column_names; + session_id = other515.session_id; + __isset = other515.__isset; return *this; } void DropColumnsRequest::printTo(std::ostream& out) const { @@ -12786,15 +12906,15 @@ void swap(ShowTablesRequest &a, ShowTablesRequest &b) { swap(a.__isset, b.__isset); } -ShowTablesRequest::ShowTablesRequest(const ShowTablesRequest& other504) { - session_id = other504.session_id; - db_name = other504.db_name; - __isset = other504.__isset; +ShowTablesRequest::ShowTablesRequest(const ShowTablesRequest& other516) { + session_id = other516.session_id; + db_name = other516.db_name; + __isset = other516.__isset; } -ShowTablesRequest& ShowTablesRequest::operator=(const ShowTablesRequest& other505) { - session_id = other505.session_id; - db_name = other505.db_name; - __isset = other505.__isset; +ShowTablesRequest& ShowTablesRequest::operator=(const ShowTablesRequest& other517) { + session_id = other517.session_id; + db_name = other517.db_name; + __isset = other517.__isset; return *this; } void ShowTablesRequest::printTo(std::ostream& out) const { @@ -12915,17 +13035,17 @@ void swap(ShowSegmentsRequest &a, ShowSegmentsRequest &b) { swap(a.__isset, b.__isset); } -ShowSegmentsRequest::ShowSegmentsRequest(const ShowSegmentsRequest& other506) { - session_id = other506.session_id; - db_name = other506.db_name; - table_name = other506.table_name; - __isset = other506.__isset; +ShowSegmentsRequest::ShowSegmentsRequest(const ShowSegmentsRequest& other518) { + session_id = other518.session_id; + db_name = other518.db_name; + table_name = other518.table_name; + __isset = other518.__isset; } -ShowSegmentsRequest& ShowSegmentsRequest::operator=(const ShowSegmentsRequest& other507) { - session_id = other507.session_id; - db_name = other507.db_name; - table_name = other507.table_name; - __isset = other507.__isset; +ShowSegmentsRequest& ShowSegmentsRequest::operator=(const ShowSegmentsRequest& other519) { + session_id = other519.session_id; + db_name = other519.db_name; + table_name = other519.table_name; + __isset = other519.__isset; return *this; } void ShowSegmentsRequest::printTo(std::ostream& out) const { @@ -13064,19 +13184,19 @@ void swap(ShowSegmentRequest &a, ShowSegmentRequest &b) { swap(a.__isset, b.__isset); } -ShowSegmentRequest::ShowSegmentRequest(const ShowSegmentRequest& other508) { - session_id = other508.session_id; - db_name = other508.db_name; - table_name = other508.table_name; - segment_id = other508.segment_id; - __isset = other508.__isset; +ShowSegmentRequest::ShowSegmentRequest(const ShowSegmentRequest& other520) { + session_id = other520.session_id; + db_name = other520.db_name; + table_name = other520.table_name; + segment_id = other520.segment_id; + __isset = other520.__isset; } -ShowSegmentRequest& ShowSegmentRequest::operator=(const ShowSegmentRequest& other509) { - session_id = other509.session_id; - db_name = other509.db_name; - table_name = other509.table_name; - segment_id = other509.segment_id; - __isset = other509.__isset; +ShowSegmentRequest& ShowSegmentRequest::operator=(const ShowSegmentRequest& other521) { + session_id = other521.session_id; + db_name = other521.db_name; + table_name = other521.table_name; + segment_id = other521.segment_id; + __isset = other521.__isset; return *this; } void ShowSegmentRequest::printTo(std::ostream& out) const { @@ -13335,33 +13455,33 @@ void swap(ShowSegmentResponse &a, ShowSegmentResponse &b) { swap(a.__isset, b.__isset); } -ShowSegmentResponse::ShowSegmentResponse(const ShowSegmentResponse& other510) { - error_code = other510.error_code; - error_msg = other510.error_msg; - segment_id = other510.segment_id; - status = other510.status; - path = other510.path; - size = other510.size; - block_count = other510.block_count; - row_capacity = other510.row_capacity; - row_count = other510.row_count; - room = other510.room; - column_count = other510.column_count; - __isset = other510.__isset; -} -ShowSegmentResponse& ShowSegmentResponse::operator=(const ShowSegmentResponse& other511) { - error_code = other511.error_code; - error_msg = other511.error_msg; - segment_id = other511.segment_id; - status = other511.status; - path = other511.path; - size = other511.size; - block_count = other511.block_count; - row_capacity = other511.row_capacity; - row_count = other511.row_count; - room = other511.room; - column_count = other511.column_count; - __isset = other511.__isset; +ShowSegmentResponse::ShowSegmentResponse(const ShowSegmentResponse& other522) { + error_code = other522.error_code; + error_msg = other522.error_msg; + segment_id = other522.segment_id; + status = other522.status; + path = other522.path; + size = other522.size; + block_count = other522.block_count; + row_capacity = other522.row_capacity; + row_count = other522.row_count; + room = other522.room; + column_count = other522.column_count; + __isset = other522.__isset; +} +ShowSegmentResponse& ShowSegmentResponse::operator=(const ShowSegmentResponse& other523) { + error_code = other523.error_code; + error_msg = other523.error_msg; + segment_id = other523.segment_id; + status = other523.status; + path = other523.path; + size = other523.size; + block_count = other523.block_count; + row_capacity = other523.row_capacity; + row_count = other523.row_count; + room = other523.room; + column_count = other523.column_count; + __isset = other523.__isset; return *this; } void ShowSegmentResponse::printTo(std::ostream& out) const { @@ -13508,19 +13628,19 @@ void swap(ShowBlocksRequest &a, ShowBlocksRequest &b) { swap(a.__isset, b.__isset); } -ShowBlocksRequest::ShowBlocksRequest(const ShowBlocksRequest& other512) { - session_id = other512.session_id; - db_name = other512.db_name; - table_name = other512.table_name; - segment_id = other512.segment_id; - __isset = other512.__isset; +ShowBlocksRequest::ShowBlocksRequest(const ShowBlocksRequest& other524) { + session_id = other524.session_id; + db_name = other524.db_name; + table_name = other524.table_name; + segment_id = other524.segment_id; + __isset = other524.__isset; } -ShowBlocksRequest& ShowBlocksRequest::operator=(const ShowBlocksRequest& other513) { - session_id = other513.session_id; - db_name = other513.db_name; - table_name = other513.table_name; - segment_id = other513.segment_id; - __isset = other513.__isset; +ShowBlocksRequest& ShowBlocksRequest::operator=(const ShowBlocksRequest& other525) { + session_id = other525.session_id; + db_name = other525.db_name; + table_name = other525.table_name; + segment_id = other525.segment_id; + __isset = other525.__isset; return *this; } void ShowBlocksRequest::printTo(std::ostream& out) const { @@ -13677,21 +13797,21 @@ void swap(ShowBlockRequest &a, ShowBlockRequest &b) { swap(a.__isset, b.__isset); } -ShowBlockRequest::ShowBlockRequest(const ShowBlockRequest& other514) { - session_id = other514.session_id; - db_name = other514.db_name; - table_name = other514.table_name; - segment_id = other514.segment_id; - block_id = other514.block_id; - __isset = other514.__isset; -} -ShowBlockRequest& ShowBlockRequest::operator=(const ShowBlockRequest& other515) { - session_id = other515.session_id; - db_name = other515.db_name; - table_name = other515.table_name; - segment_id = other515.segment_id; - block_id = other515.block_id; - __isset = other515.__isset; +ShowBlockRequest::ShowBlockRequest(const ShowBlockRequest& other526) { + session_id = other526.session_id; + db_name = other526.db_name; + table_name = other526.table_name; + segment_id = other526.segment_id; + block_id = other526.block_id; + __isset = other526.__isset; +} +ShowBlockRequest& ShowBlockRequest::operator=(const ShowBlockRequest& other527) { + session_id = other527.session_id; + db_name = other527.db_name; + table_name = other527.table_name; + segment_id = other527.segment_id; + block_id = other527.block_id; + __isset = other527.__isset; return *this; } void ShowBlockRequest::printTo(std::ostream& out) const { @@ -13900,27 +14020,27 @@ void swap(ShowBlockResponse &a, ShowBlockResponse &b) { swap(a.__isset, b.__isset); } -ShowBlockResponse::ShowBlockResponse(const ShowBlockResponse& other516) { - error_code = other516.error_code; - error_msg = other516.error_msg; - block_id = other516.block_id; - path = other516.path; - size = other516.size; - row_capacity = other516.row_capacity; - row_count = other516.row_count; - column_count = other516.column_count; - __isset = other516.__isset; -} -ShowBlockResponse& ShowBlockResponse::operator=(const ShowBlockResponse& other517) { - error_code = other517.error_code; - error_msg = other517.error_msg; - block_id = other517.block_id; - path = other517.path; - size = other517.size; - row_capacity = other517.row_capacity; - row_count = other517.row_count; - column_count = other517.column_count; - __isset = other517.__isset; +ShowBlockResponse::ShowBlockResponse(const ShowBlockResponse& other528) { + error_code = other528.error_code; + error_msg = other528.error_msg; + block_id = other528.block_id; + path = other528.path; + size = other528.size; + row_capacity = other528.row_capacity; + row_count = other528.row_count; + column_count = other528.column_count; + __isset = other528.__isset; +} +ShowBlockResponse& ShowBlockResponse::operator=(const ShowBlockResponse& other529) { + error_code = other529.error_code; + error_msg = other529.error_msg; + block_id = other529.block_id; + path = other529.path; + size = other529.size; + row_capacity = other529.row_capacity; + row_count = other529.row_count; + column_count = other529.column_count; + __isset = other529.__isset; return *this; } void ShowBlockResponse::printTo(std::ostream& out) const { @@ -14098,23 +14218,23 @@ void swap(ShowBlockColumnRequest &a, ShowBlockColumnRequest &b) { swap(a.__isset, b.__isset); } -ShowBlockColumnRequest::ShowBlockColumnRequest(const ShowBlockColumnRequest& other518) { - session_id = other518.session_id; - db_name = other518.db_name; - table_name = other518.table_name; - segment_id = other518.segment_id; - block_id = other518.block_id; - column_id = other518.column_id; - __isset = other518.__isset; -} -ShowBlockColumnRequest& ShowBlockColumnRequest::operator=(const ShowBlockColumnRequest& other519) { - session_id = other519.session_id; - db_name = other519.db_name; - table_name = other519.table_name; - segment_id = other519.segment_id; - block_id = other519.block_id; - column_id = other519.column_id; - __isset = other519.__isset; +ShowBlockColumnRequest::ShowBlockColumnRequest(const ShowBlockColumnRequest& other530) { + session_id = other530.session_id; + db_name = other530.db_name; + table_name = other530.table_name; + segment_id = other530.segment_id; + block_id = other530.block_id; + column_id = other530.column_id; + __isset = other530.__isset; +} +ShowBlockColumnRequest& ShowBlockColumnRequest::operator=(const ShowBlockColumnRequest& other531) { + session_id = other531.session_id; + db_name = other531.db_name; + table_name = other531.table_name; + segment_id = other531.segment_id; + block_id = other531.block_id; + column_id = other531.column_id; + __isset = other531.__isset; return *this; } void ShowBlockColumnRequest::printTo(std::ostream& out) const { @@ -14324,27 +14444,27 @@ void swap(ShowBlockColumnResponse &a, ShowBlockColumnResponse &b) { swap(a.__isset, b.__isset); } -ShowBlockColumnResponse::ShowBlockColumnResponse(const ShowBlockColumnResponse& other520) { - error_code = other520.error_code; - error_msg = other520.error_msg; - column_name = other520.column_name; - column_id = other520.column_id; - data_type = other520.data_type; - path = other520.path; - extra_file_count = other520.extra_file_count; - extra_file_names = other520.extra_file_names; - __isset = other520.__isset; -} -ShowBlockColumnResponse& ShowBlockColumnResponse::operator=(const ShowBlockColumnResponse& other521) { - error_code = other521.error_code; - error_msg = other521.error_msg; - column_name = other521.column_name; - column_id = other521.column_id; - data_type = other521.data_type; - path = other521.path; - extra_file_count = other521.extra_file_count; - extra_file_names = other521.extra_file_names; - __isset = other521.__isset; +ShowBlockColumnResponse::ShowBlockColumnResponse(const ShowBlockColumnResponse& other532) { + error_code = other532.error_code; + error_msg = other532.error_msg; + column_name = other532.column_name; + column_id = other532.column_id; + data_type = other532.data_type; + path = other532.path; + extra_file_count = other532.extra_file_count; + extra_file_names = other532.extra_file_names; + __isset = other532.__isset; +} +ShowBlockColumnResponse& ShowBlockColumnResponse::operator=(const ShowBlockColumnResponse& other533) { + error_code = other533.error_code; + error_msg = other533.error_msg; + column_name = other533.column_name; + column_id = other533.column_id; + data_type = other533.data_type; + path = other533.path; + extra_file_count = other533.extra_file_count; + extra_file_names = other533.extra_file_names; + __isset = other533.__isset; return *this; } void ShowBlockColumnResponse::printTo(std::ostream& out) const { diff --git a/src/network/infinity_thrift/infinity_types.h b/src/network/infinity_thrift/infinity_types.h index 06df5a48b9..3bb0675cc5 100644 --- a/src/network/infinity_thrift/infinity_types.h +++ b/src/network/infinity_thrift/infinity_types.h @@ -2711,10 +2711,12 @@ void swap(ListDatabaseRequest &a, ListDatabaseRequest &b); std::ostream& operator<<(std::ostream& out, const ListDatabaseRequest& obj); typedef struct _ListDatabaseResponse__isset { - _ListDatabaseResponse__isset() : error_code(false), error_msg(false), db_names(true) {} + _ListDatabaseResponse__isset() : error_code(false), error_msg(false), db_names(true), db_dirs(true), db_comments(true) {} bool error_code :1; bool error_msg :1; bool db_names :1; + bool db_dirs :1; + bool db_comments :1; } _ListDatabaseResponse__isset; class ListDatabaseResponse : public virtual ::apache::thrift::TBase { @@ -2726,12 +2728,16 @@ class ListDatabaseResponse : public virtual ::apache::thrift::TBase { : error_code(0), error_msg() { + + } virtual ~ListDatabaseResponse() noexcept; int64_t error_code; std::string error_msg; std::vector db_names; + std::vector db_dirs; + std::vector db_comments; _ListDatabaseResponse__isset __isset; @@ -2741,6 +2747,10 @@ class ListDatabaseResponse : public virtual ::apache::thrift::TBase { void __set_db_names(const std::vector & val); + void __set_db_dirs(const std::vector & val); + + void __set_db_comments(const std::vector & val); + bool operator == (const ListDatabaseResponse & rhs) const { if (!(error_code == rhs.error_code)) @@ -2749,6 +2759,10 @@ class ListDatabaseResponse : public virtual ::apache::thrift::TBase { return false; if (!(db_names == rhs.db_names)) return false; + if (!(db_dirs == rhs.db_dirs)) + return false; + if (!(db_comments == rhs.db_comments)) + return false; return true; } bool operator != (const ListDatabaseResponse &rhs) const { @@ -3039,12 +3053,13 @@ void swap(ShowDatabaseRequest &a, ShowDatabaseRequest &b); std::ostream& operator<<(std::ostream& out, const ShowDatabaseRequest& obj); typedef struct _ShowDatabaseResponse__isset { - _ShowDatabaseResponse__isset() : error_code(false), error_msg(false), database_name(false), store_dir(false), table_count(false) {} + _ShowDatabaseResponse__isset() : error_code(false), error_msg(false), database_name(false), store_dir(false), table_count(false), comment(false) {} bool error_code :1; bool error_msg :1; bool database_name :1; bool store_dir :1; bool table_count :1; + bool comment :1; } _ShowDatabaseResponse__isset; class ShowDatabaseResponse : public virtual ::apache::thrift::TBase { @@ -3057,7 +3072,8 @@ class ShowDatabaseResponse : public virtual ::apache::thrift::TBase { error_msg(), database_name(), store_dir(), - table_count(0) { + table_count(0), + comment() { } virtual ~ShowDatabaseResponse() noexcept; @@ -3066,6 +3082,7 @@ class ShowDatabaseResponse : public virtual ::apache::thrift::TBase { std::string database_name; std::string store_dir; int64_t table_count; + std::string comment; _ShowDatabaseResponse__isset __isset; @@ -3079,6 +3096,8 @@ class ShowDatabaseResponse : public virtual ::apache::thrift::TBase { void __set_table_count(const int64_t val); + void __set_comment(const std::string& val); + bool operator == (const ShowDatabaseResponse & rhs) const { if (!(error_code == rhs.error_code)) @@ -3091,6 +3110,8 @@ class ShowDatabaseResponse : public virtual ::apache::thrift::TBase { return false; if (!(table_count == rhs.table_count)) return false; + if (!(comment == rhs.comment)) + return false; return true; } bool operator != (const ShowDatabaseResponse &rhs) const { @@ -3877,10 +3898,11 @@ void swap(GetDatabaseRequest &a, GetDatabaseRequest &b); std::ostream& operator<<(std::ostream& out, const GetDatabaseRequest& obj); typedef struct _CreateDatabaseRequest__isset { - _CreateDatabaseRequest__isset() : db_name(false), session_id(false), create_option(false) {} + _CreateDatabaseRequest__isset() : db_name(false), session_id(false), create_option(false), db_comment(false) {} bool db_name :1; bool session_id :1; bool create_option :1; + bool db_comment :1; } _CreateDatabaseRequest__isset; class CreateDatabaseRequest : public virtual ::apache::thrift::TBase { @@ -3890,13 +3912,15 @@ class CreateDatabaseRequest : public virtual ::apache::thrift::TBase { CreateDatabaseRequest& operator=(const CreateDatabaseRequest&); CreateDatabaseRequest() noexcept : db_name(), - session_id(0) { + session_id(0), + db_comment() { } virtual ~CreateDatabaseRequest() noexcept; std::string db_name; int64_t session_id; CreateOption create_option; + std::string db_comment; _CreateDatabaseRequest__isset __isset; @@ -3906,6 +3930,8 @@ class CreateDatabaseRequest : public virtual ::apache::thrift::TBase { void __set_create_option(const CreateOption& val); + void __set_db_comment(const std::string& val); + bool operator == (const CreateDatabaseRequest & rhs) const { if (!(db_name == rhs.db_name)) @@ -3914,6 +3940,8 @@ class CreateDatabaseRequest : public virtual ::apache::thrift::TBase { return false; if (!(create_option == rhs.create_option)) return false; + if (!(db_comment == rhs.db_comment)) + return false; return true; } bool operator != (const CreateDatabaseRequest &rhs) const { diff --git a/src/network/infinity_thrift_service.cpp b/src/network/infinity_thrift_service.cpp index 9a1f7c5352..947087b5d3 100644 --- a/src/network/infinity_thrift_service.cpp +++ b/src/network/infinity_thrift_service.cpp @@ -168,7 +168,7 @@ void InfinityThriftService::CreateDatabase(infinity_thrift_rpc::CommonResponse & auto [infinity, status] = GetInfinityBySessionID(request.session_id); if (status.ok()) { - auto result = infinity->CreateDatabase(request.db_name, create_database_opts); + auto result = infinity->CreateDatabase(request.db_name, create_database_opts, request.db_comment); ProcessQueryResult(response, result); } else { ProcessStatus(response, status); @@ -1148,7 +1148,7 @@ void InfinityThriftService::ShowDatabase(infinity_thrift_rpc::ShowDatabaseRespon if (result.IsOk()) { SharedPtr data_block = result.result_table_->GetDataBlockById(0); auto row_count = data_block->row_count(); - if (row_count != 3) { + if (row_count != 4) { String error_message = "ShowDatabase: query result is invalid."; UnrecoverableError(error_message); } @@ -1168,6 +1168,11 @@ void InfinityThriftService::ShowDatabase(infinity_thrift_rpc::ShowDatabaseRespon response.table_count = std::stol(value.GetVarchar()); } + { + Value value = data_block->GetValue(1, 3); + response.comment = value.GetVarchar(); + } + response.__set_error_code((i64)(result.ErrorCode())); } else { ProcessQueryResult(response, result); diff --git a/src/parser/parser.cpp b/src/parser/parser.cpp index 526c5959de..8a8d801bc8 100644 --- a/src/parser/parser.cpp +++ b/src/parser/parser.cpp @@ -781,16 +781,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 115 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1445 +#define YYLAST 1384 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 215 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 116 /* YYNRULES -- Number of rules. */ -#define YYNRULES 509 +#define YYNRULES 510 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 1141 +#define YYNSTATES 1143 /* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 453 @@ -862,54 +862,55 @@ static const yytype_int16 yyrline[] = 0, 506, 506, 510, 516, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, - 549, 550, 557, 574, 590, 619, 635, 653, 682, 686, - 691, 695, 701, 704, 711, 762, 799, 851, 891, 892, - 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, - 903, 904, 905, 906, 907, 908, 909, 910, 911, 914, - 916, 917, 918, 919, 922, 923, 924, 925, 926, 927, - 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, - 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, - 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, - 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, - 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, - 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, - 1006, 1010, 1020, 1023, 1026, 1029, 1033, 1036, 1041, 1046, - 1053, 1059, 1069, 1085, 1119, 1132, 1135, 1142, 1154, 1163, - 1176, 1180, 1185, 1198, 1211, 1226, 1241, 1256, 1279, 1332, - 1387, 1438, 1441, 1444, 1453, 1463, 1466, 1470, 1475, 1502, - 1505, 1510, 1527, 1530, 1534, 1538, 1543, 1549, 1552, 1555, - 1559, 1563, 1565, 1569, 1571, 1574, 1578, 1581, 1585, 1588, - 1592, 1597, 1601, 1604, 1608, 1611, 1615, 1618, 1622, 1625, - 1629, 1632, 1635, 1638, 1646, 1649, 1664, 1664, 1666, 1680, - 1689, 1694, 1703, 1708, 1713, 1719, 1726, 1729, 1733, 1736, - 1741, 1753, 1760, 1774, 1777, 1780, 1783, 1786, 1789, 1792, - 1798, 1802, 1806, 1810, 1814, 1821, 1825, 1829, 1833, 1837, - 1842, 1846, 1851, 1855, 1859, 1865, 1871, 1877, 1888, 1899, - 1910, 1922, 1934, 1947, 1961, 1972, 1986, 2002, 2019, 2023, - 2027, 2031, 2035, 2039, 2045, 2049, 2053, 2057, 2067, 2071, - 2075, 2083, 2094, 2117, 2123, 2128, 2134, 2140, 2148, 2154, - 2160, 2166, 2172, 2180, 2186, 2192, 2198, 2204, 2212, 2218, - 2224, 2233, 2243, 2256, 2260, 2265, 2271, 2278, 2286, 2295, - 2305, 2315, 2326, 2337, 2349, 2361, 2371, 2382, 2394, 2407, - 2411, 2416, 2421, 2427, 2431, 2435, 2441, 2445, 2451, 2455, - 2460, 2465, 2472, 2481, 2491, 2500, 2512, 2528, 2532, 2537, - 2541, 2574, 2580, 2584, 2585, 2586, 2587, 2588, 2590, 2593, - 2599, 2602, 2603, 2604, 2605, 2606, 2607, 2608, 2609, 2610, - 2611, 2615, 2633, 2679, 2718, 2761, 2808, 2832, 2855, 2876, - 2897, 2906, 2918, 2925, 2935, 2941, 2953, 2956, 2959, 2962, - 2965, 2968, 2972, 2976, 2981, 2989, 2997, 3006, 3013, 3020, - 3027, 3034, 3041, 3049, 3057, 3065, 3073, 3081, 3089, 3097, - 3105, 3113, 3121, 3129, 3137, 3167, 3175, 3184, 3192, 3201, - 3209, 3215, 3222, 3228, 3235, 3240, 3247, 3254, 3262, 3289, - 3295, 3301, 3308, 3316, 3323, 3330, 3335, 3345, 3350, 3355, - 3360, 3365, 3370, 3375, 3380, 3385, 3390, 3393, 3396, 3400, - 3403, 3406, 3409, 3413, 3416, 3419, 3423, 3427, 3432, 3437, - 3440, 3444, 3448, 3455, 3462, 3466, 3473, 3480, 3484, 3488, - 3492, 3495, 3499, 3503, 3508, 3513, 3517, 3522, 3527, 3533, - 3539, 3545, 3551, 3557, 3563, 3569, 3575, 3581, 3587, 3593, - 3604, 3608, 3613, 3644, 3654, 3659, 3664, 3669, 3675, 3679, - 3680, 3682, 3683, 3685, 3686, 3698, 3706, 3710, 3713, 3717, - 3720, 3724, 3728, 3733, 3739, 3749, 3759, 3767, 3778, 3809 + 549, 550, 557, 574, 591, 607, 636, 652, 670, 699, + 703, 708, 712, 718, 721, 728, 779, 816, 868, 908, + 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, + 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, + 931, 933, 934, 935, 936, 939, 940, 941, 942, 943, + 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, + 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, + 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, + 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, + 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, + 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, + 1004, 1023, 1027, 1037, 1040, 1043, 1046, 1050, 1053, 1058, + 1063, 1070, 1076, 1086, 1102, 1136, 1149, 1152, 1159, 1171, + 1180, 1193, 1197, 1202, 1215, 1228, 1243, 1258, 1273, 1296, + 1349, 1404, 1455, 1458, 1461, 1470, 1480, 1483, 1487, 1492, + 1519, 1522, 1527, 1544, 1547, 1551, 1555, 1560, 1566, 1569, + 1572, 1576, 1580, 1582, 1586, 1588, 1591, 1595, 1598, 1602, + 1605, 1609, 1614, 1618, 1621, 1625, 1628, 1632, 1635, 1639, + 1642, 1646, 1649, 1652, 1655, 1663, 1666, 1681, 1681, 1683, + 1697, 1706, 1711, 1720, 1725, 1730, 1736, 1743, 1746, 1750, + 1753, 1758, 1770, 1777, 1791, 1794, 1797, 1800, 1803, 1806, + 1809, 1815, 1819, 1823, 1827, 1831, 1838, 1842, 1846, 1850, + 1854, 1859, 1863, 1868, 1872, 1876, 1882, 1888, 1894, 1905, + 1916, 1927, 1939, 1951, 1964, 1978, 1989, 2003, 2019, 2036, + 2040, 2044, 2048, 2052, 2056, 2062, 2066, 2070, 2074, 2084, + 2088, 2092, 2100, 2111, 2134, 2140, 2145, 2151, 2157, 2165, + 2171, 2177, 2183, 2189, 2197, 2203, 2209, 2215, 2221, 2229, + 2235, 2241, 2250, 2260, 2273, 2277, 2282, 2288, 2295, 2303, + 2312, 2322, 2332, 2343, 2354, 2366, 2378, 2388, 2399, 2411, + 2424, 2428, 2433, 2438, 2444, 2448, 2452, 2458, 2462, 2468, + 2472, 2477, 2482, 2489, 2498, 2508, 2517, 2529, 2545, 2549, + 2554, 2558, 2591, 2597, 2601, 2602, 2603, 2604, 2605, 2607, + 2610, 2616, 2619, 2620, 2621, 2622, 2623, 2624, 2625, 2626, + 2627, 2628, 2632, 2650, 2696, 2735, 2778, 2825, 2849, 2872, + 2893, 2914, 2923, 2935, 2942, 2952, 2958, 2970, 2973, 2976, + 2979, 2982, 2985, 2989, 2993, 2998, 3006, 3014, 3023, 3030, + 3037, 3044, 3051, 3058, 3066, 3074, 3082, 3090, 3098, 3106, + 3114, 3122, 3130, 3138, 3146, 3154, 3184, 3192, 3201, 3209, + 3218, 3226, 3232, 3239, 3245, 3252, 3257, 3264, 3271, 3279, + 3306, 3312, 3318, 3325, 3333, 3340, 3347, 3352, 3362, 3367, + 3372, 3377, 3382, 3387, 3392, 3397, 3402, 3407, 3410, 3413, + 3417, 3420, 3423, 3426, 3430, 3433, 3436, 3440, 3444, 3449, + 3454, 3457, 3461, 3465, 3472, 3479, 3483, 3490, 3497, 3501, + 3505, 3509, 3512, 3516, 3520, 3525, 3530, 3534, 3539, 3544, + 3550, 3556, 3562, 3568, 3574, 3580, 3586, 3592, 3598, 3604, + 3610, 3621, 3625, 3630, 3661, 3671, 3676, 3681, 3686, 3692, + 3696, 3697, 3699, 3700, 3702, 3703, 3715, 3723, 3727, 3730, + 3734, 3737, 3741, 3745, 3750, 3756, 3766, 3776, 3784, 3795, + 3826 }; #endif @@ -1000,12 +1001,12 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#define YYPACT_NINF (-673) +#define YYPACT_NINF (-675) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-497) +#define YYTABLE_NINF (-498) #define yytable_value_is_error(Yyn) \ ((Yyn) == YYTABLE_NINF) @@ -1014,121 +1015,121 @@ yysymbol_name (yysymbol_kind_t yysymbol) STATE-NUM. */ static const yytype_int16 yypact[] = { - 792, 472, 125, 483, 86, -4, 86, 225, 70, 734, - 134, 165, 221, 251, 255, 288, 294, 308, 180, 56, - -38, 356, 148, -673, -673, -673, -673, -673, -673, -673, - -673, 93, -673, -673, 375, -673, -673, -673, -673, -673, - -673, -673, 321, 321, 321, 321, 35, 86, 362, 362, - 362, 362, 362, 216, 428, 86, 16, 441, 451, 462, - 184, -673, -673, -673, -673, -673, -673, -673, 93, -673, - -673, -673, -673, -673, 226, 469, 86, -673, -673, -673, - -673, -673, 477, -673, 249, 318, -673, 499, -673, 335, - -673, -673, 547, -673, 284, 116, 86, 86, 86, 86, - -673, -673, -673, -673, -9, -673, 466, 349, -673, 586, - 239, 285, 605, 408, 422, -673, 34, -673, 621, -673, - -673, 13, 590, -673, 598, 610, 681, 86, 86, 86, - 684, 632, 492, 634, 702, 86, 86, 86, 703, 705, - 707, 646, 711, 711, 539, 82, 102, 149, -673, 506, - -673, 444, -673, -673, 717, -673, 719, -673, -673, -673, - 720, -673, -673, -673, -673, 302, -673, -673, -673, 86, - 516, 308, 711, -673, 560, -673, 721, -673, -673, 723, - -673, -673, 722, -673, 725, 676, -673, -673, -673, -673, - 13, -673, -673, -673, 539, 679, 666, 665, -673, 36, - -673, 492, -673, 86, 733, 76, -673, -673, -673, -673, - -673, 678, -673, 541, -46, -673, 539, -673, -673, 667, - 672, 542, -673, -673, 827, 579, 544, 545, 413, 746, - 751, 752, 754, -673, -673, 756, 551, 416, 557, 562, - 663, 663, -673, 9, 426, 111, -673, 87, 783, -673, - -673, -673, -673, -673, -673, -673, -673, -673, -673, -673, - -673, -673, 561, -673, -673, -673, -71, -673, -673, 73, - -673, 166, -673, -673, -673, 178, -673, 250, -673, -673, - -673, -673, -673, -673, -673, -673, -673, -673, -673, -673, - -673, -673, -673, -673, -673, 770, 768, -673, -673, -673, - -673, -673, -673, 730, 731, 704, 708, 375, -673, -673, - 775, 96, -673, 778, -673, 354, 577, 580, -26, 539, - 539, 724, -673, -38, 121, 737, 584, -673, 195, 585, - -673, 86, 539, 707, -673, 460, 591, 602, 200, -673, - -673, -673, -673, -673, -673, -673, -673, -673, -673, -673, - -673, 663, 603, 806, 718, 539, 539, 11, 351, -673, - -673, -673, -673, 827, -673, 809, 611, 615, 616, 617, - 810, 815, 432, 432, -673, 613, -673, -673, -673, -673, - 622, -44, 758, 539, 830, 539, 539, -54, 626, 6, - 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, - 663, 663, 663, 663, 19, -673, 630, -673, 832, -673, - 833, -673, 834, -673, 837, 801, 534, 642, 647, 849, - 649, -673, 653, -673, 853, -673, 229, 701, 710, -673, - -673, 539, 796, 655, -673, 205, 460, 539, -673, 93, - 925, 747, 668, 281, -673, -673, -673, -38, 872, -673, - -673, 884, 539, 675, -673, 460, -673, 198, 198, 539, - -673, 291, 718, 735, 682, 97, -24, 448, -673, 539, - 539, 814, 539, 893, 30, 539, 687, 384, 620, -673, - -673, 711, -673, -673, -673, 748, 696, 663, 426, 777, - -673, 793, 793, 246, 246, 139, 793, 793, 246, 246, - 432, 432, -673, -673, -673, -673, -673, -673, 697, -673, - 698, -673, -673, -673, 904, 910, -673, 733, 914, -673, - 915, -673, -673, 913, -673, 916, 917, 709, 10, 750, - 539, -673, -673, -673, 460, -673, -673, -673, -673, -673, - -673, -673, -673, -673, -673, -673, 715, -673, -673, -673, - -673, -673, -673, -673, -673, -673, -673, -673, -673, 716, - 728, 729, 736, 738, 739, 259, 741, 733, 896, 121, - 93, 742, -673, 386, 744, 923, 934, 942, 948, -673, - 952, 388, -673, 390, 392, -673, 765, -673, 925, 539, - -673, 539, 145, 172, 663, 140, 764, -673, 157, 150, - 57, 769, -673, 956, -673, -673, 901, 426, 793, 771, - 397, -673, 663, 955, 975, 940, 944, 414, 421, -673, - 803, 433, -673, 994, -673, -673, -38, 790, 514, -673, - 209, -673, 372, 646, -673, 998, 377, 599, 757, 961, - 978, 995, 908, 903, -673, -673, 236, -673, 907, 733, - 434, 831, -673, -673, 878, -673, 539, -673, -673, -673, - -673, -673, -673, 198, -673, -673, -673, 835, 460, 169, - -673, 539, 680, 848, 1040, 630, 852, 843, 539, -673, - 850, 854, 851, 440, -673, -673, 806, 1056, 1066, -673, - -673, 914, 552, -673, 915, 365, 47, 10, 1017, -673, - -673, -673, -673, -673, -673, 1020, -673, 1074, -673, -673, - -673, -673, -673, -673, -673, -673, 865, 1028, 445, 876, - 877, 880, 881, 882, 883, 888, 889, 890, 1013, 892, - 894, 895, 897, 898, 899, 900, 902, 905, 906, 1015, - 909, 911, 912, 918, 919, 920, 921, 922, 924, 926, - 1018, 927, 928, 929, 930, 931, 932, 933, 935, 936, - 937, 1025, 938, 939, 941, 943, 945, 946, 947, 949, - 950, 951, 1026, 953, 954, 957, 958, 959, 960, 962, - 963, 964, 965, 1029, 966, -673, -673, 26, -673, 989, - 991, 446, -673, 915, 1123, 447, -673, -673, -673, 460, - -673, 643, 967, 968, 969, 12, 970, -673, -673, -673, - 1062, 974, 460, -673, 198, -673, -673, -673, -673, -673, - -673, -673, -673, -673, -673, 1122, -673, 209, 514, 10, - 10, 976, 372, 1077, 1083, -673, 1124, 1132, 1141, 1147, - 1149, 1151, 1155, 1159, 1162, 1163, 973, 1168, 1181, 1182, - 1183, 1184, 1185, 1186, 1187, 1188, 1189, 983, 1191, 1192, - 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 996, 1201, - 1202, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1005, - 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, - 1016, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, - 1233, 1027, 1235, -673, 1238, 1239, -673, 452, 708, -673, - -673, 1240, 242, 1035, 1242, 1243, -673, 465, 1244, -673, - -673, 1190, 733, -673, 539, 539, -673, 1038, 1039, 1042, - 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1254, 1051, 1052, - 1053, 1054, 1055, 1057, 1058, 1059, 1060, 1061, 1260, 1063, - 1064, 1065, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1266, - 1075, 1076, 1078, 1079, 1080, 1081, 1082, 1084, 1085, 1086, - 1270, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, - 1096, 1278, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, - 1105, 1106, 1281, 1107, -673, -673, -673, -673, 1108, 843, - -673, 1109, 1110, -673, 481, 539, 473, 709, 460, -673, - -673, -673, -673, -673, -673, -673, -673, -673, -673, 1114, - -673, -673, -673, -673, -673, -673, -673, -673, -673, -673, - 1115, -673, -673, -673, -673, -673, -673, -673, -673, -673, - -673, 1116, -673, -673, -673, -673, -673, -673, -673, -673, - -673, -673, 1117, -673, -673, -673, -673, -673, -673, -673, - -673, -673, -673, 1118, -673, -673, -673, -673, -673, -673, - -673, -673, -673, -673, 1119, -673, 1289, 1120, 1314, 60, - 1121, 1313, 1326, -673, -673, -673, 460, -673, -673, -673, - -673, -673, -673, -673, 1125, -673, 1126, 843, 708, 1327, - 625, 68, 1127, 1316, 1130, -673, 633, 1328, -673, 843, - 708, 843, 67, 1329, -673, 1288, 1131, -673, 1133, 1302, - 1304, -673, -673, -673, 155, -673, -673, 1136, 1306, 1307, - -673, 1345, -673, 1140, 1142, 1347, 708, 1143, -673, 708, - -673 + 769, 401, 43, 411, 154, 55, 154, 167, 84, 655, + 190, 216, 220, 234, 303, 198, 292, 307, 186, 40, + -56, 363, 157, -675, -675, -675, -675, -675, -675, -675, + -675, 293, -675, -675, 375, -675, -675, -675, -675, -675, + -675, -675, 316, 316, 316, 316, 253, 154, 331, 331, + 331, 331, 331, 215, 405, 154, -13, 427, 435, 452, + 729, -675, -675, -675, -675, -675, -675, -675, 293, -675, + -675, -675, -675, -675, 268, 486, 154, -675, -675, -675, + -675, -675, 490, -675, 147, 235, -675, 503, -675, 338, + -675, -675, 563, -675, 333, 132, 154, 154, 154, 154, + -675, -675, -675, -675, -6, -675, 533, 378, -675, 601, + 189, 323, 605, 407, 415, -675, 35, -675, 590, -675, + -675, 5, 567, -675, 577, 561, 641, 154, 154, 154, + 645, 588, 442, 580, 651, 154, 154, 154, 652, 653, + 654, 597, 659, 659, 512, 76, 83, 143, -675, 454, + -675, 310, -675, -675, 662, -675, 663, -675, -675, -675, + 667, -675, -675, -675, -675, 75, -675, -675, -675, 154, + 463, 307, 659, -675, 510, -675, 669, -675, -675, 673, + -675, -675, 671, -675, 674, 625, -675, -675, -675, -675, + 5, -675, -675, -675, 512, 628, 615, 610, 552, 7, + -675, 442, -675, 154, 682, 39, -675, -675, -675, -675, + -675, 626, -675, 487, -45, -675, 512, -675, -675, 616, + 618, 489, -675, -675, 761, 526, 491, 496, 298, 695, + 703, 705, 706, -675, -675, 707, 508, 242, 509, 511, + 568, 568, -675, 10, 386, 115, -675, -28, 715, -675, + -675, -675, -675, -675, -675, -675, -675, -675, -675, -675, + -675, -675, 501, -675, -675, -675, -102, -675, -675, -90, + -675, 144, -675, -675, -675, 159, -675, 168, -675, -675, + -675, -675, -675, -675, -675, -675, -675, -675, -675, -675, + -675, -675, -675, -675, -675, 719, 718, -675, -675, -675, + -675, -675, -675, 678, 679, 656, 650, 375, -675, -675, + 727, 34, -675, 731, -675, 347, 534, 537, -50, 512, + 512, 681, -675, 747, -56, 65, 702, 548, -675, 201, + 553, -675, 154, 512, 654, -675, 295, 554, 556, 206, + -675, -675, -675, -675, -675, -675, -675, -675, -675, -675, + -675, -675, 568, 557, 783, 684, 512, 512, 41, 318, + -675, -675, -675, -675, 761, -675, 760, 558, 559, 560, + 564, 770, 784, 418, 418, -675, 581, -675, -675, -675, + -675, 587, 123, 714, 512, 798, 512, 512, 16, 593, + 131, 568, 568, 568, 568, 568, 568, 568, 568, 568, + 568, 568, 568, 568, 568, 19, -675, 596, -675, 799, + -675, 801, -675, 802, -675, 804, 767, 439, 595, 602, + 809, 609, -675, 611, -675, 816, -675, 196, 664, 675, + -675, -675, 512, 751, 624, -675, 2, 295, 512, -675, + -675, 293, 911, 713, 632, 208, -675, -675, -675, -56, + 839, -675, -675, 840, 512, 631, -675, 295, -675, 185, + 185, 512, -675, 261, 684, 692, 639, 82, 120, 369, + -675, 512, 512, 775, 512, 848, 27, 512, 640, 262, + 555, -675, -675, 659, -675, -675, -675, 704, 647, 568, + 386, 730, -675, 792, 792, 353, 353, 724, 792, 792, + 353, 353, 418, 418, -675, -675, -675, -675, -675, -675, + 644, -675, 646, -675, -675, -675, 855, 856, -675, 682, + 865, -675, 866, -675, -675, 864, -675, 872, 874, 666, + 11, 717, 512, -675, -675, -675, 295, -675, -675, -675, + -675, -675, -675, -675, -675, -675, -675, -675, 672, -675, + -675, -675, -675, -675, -675, -675, -675, -675, -675, -675, + -675, 686, 700, 701, 726, 728, 735, 194, 736, 682, + 858, 65, 293, 737, -675, 269, 740, 885, 886, 907, + 909, -675, 940, 280, -675, 325, 326, -675, 741, -675, + 911, 512, -675, 512, 44, 127, 568, 54, 739, -675, + 335, 92, 80, 744, -675, 946, -675, -675, 878, 386, + 792, 746, 330, -675, 568, 951, 953, 915, 912, 332, + 334, -675, 771, 352, -675, 960, -675, -675, -56, 756, + 579, -675, 89, -675, 287, 597, -675, 965, 871, 947, + 964, 981, 998, 1015, 843, 846, -675, -675, 158, -675, + 849, 682, 357, 768, -675, -675, 818, -675, 512, -675, + -675, -675, -675, -675, -675, 185, -675, -675, -675, 806, + 295, 46, -675, 512, 683, 772, 1019, 596, 817, 813, + 512, -675, 820, 822, 831, 366, -675, -675, 783, 1021, + 1036, -675, -675, 865, 390, -675, 866, 516, 47, 11, + 989, -675, -675, -675, -675, -675, -675, 990, -675, 1044, + -675, -675, -675, -675, -675, -675, -675, -675, 835, 1007, + 367, 836, 850, 851, 852, 862, 863, 867, 868, 869, + 968, 879, 880, 883, 884, 896, 897, 900, 901, 902, + 903, 971, 908, 910, 913, 914, 916, 917, 918, 919, + 920, 922, 988, 923, 924, 925, 926, 927, 928, 929, + 930, 931, 932, 1008, 933, 934, 935, 936, 937, 938, + 939, 941, 942, 943, 1031, 944, 945, 948, 949, 950, + 952, 954, 955, 956, 957, 1033, 958, -675, -675, 32, + -675, 966, 993, 373, -675, 866, 1125, 387, -675, -675, + -675, 295, -675, 576, 959, 961, 962, 13, 963, -675, + -675, -675, 1088, 967, 295, -675, 185, -675, -675, -675, + -675, -675, -675, -675, -675, -675, -675, 1153, -675, 89, + 579, 11, 11, 969, 287, 1108, 1111, -675, 1160, 1167, + 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 974, 1182, + 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 985, + 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, + 996, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, + 1213, 1009, 1214, 1215, 1217, 1218, 1219, 1220, 1221, 1222, + 1223, 1224, 1018, 1226, 1227, 1228, 1229, 1230, 1231, 1232, + 1233, 1234, 1235, 1029, 1237, -675, 1240, 1241, -675, 391, + 650, -675, -675, 1242, 150, 1037, 1244, 1245, -675, 392, + 1246, -675, -675, 1192, 682, -675, 512, 512, -675, 1040, + 1041, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1248, + 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, + 1267, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, + 1073, 1278, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, + 1083, 1084, 1289, 1086, 1087, 1089, 1090, 1091, 1092, 1093, + 1094, 1095, 1096, 1292, 1097, 1098, 1099, 1100, 1101, 1102, + 1103, 1104, 1105, 1106, 1311, 1109, -675, -675, -675, -675, + 1107, 813, -675, 1110, 1112, -675, 380, 512, 393, 666, + 295, -675, -675, -675, -675, -675, -675, -675, -675, -675, + -675, 1114, -675, -675, -675, -675, -675, -675, -675, -675, + -675, -675, 1116, -675, -675, -675, -675, -675, -675, -675, + -675, -675, -675, 1117, -675, -675, -675, -675, -675, -675, + -675, -675, -675, -675, 1118, -675, -675, -675, -675, -675, + -675, -675, -675, -675, -675, 1119, -675, -675, -675, -675, + -675, -675, -675, -675, -675, -675, 1120, -675, 1314, 1121, + 1317, 99, 1122, 1316, 1327, -675, -675, -675, 295, -675, + -675, -675, -675, -675, -675, -675, 1123, -675, 1124, 813, + 650, 1328, 570, 104, 1128, 1331, 1129, -675, 586, 1334, + -675, 813, 650, 813, -1, 1335, -675, 1294, 1133, -675, + 1134, 1305, 1306, -675, -675, -675, 112, -675, -675, 1138, + 1308, 1309, -675, 1347, -675, 1142, 1143, 1349, 650, 1144, + -675, 650, -675 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1136,155 +1137,155 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 227, 0, 0, 0, 0, 0, 0, 0, 227, 0, + 228, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 227, 0, 494, 3, 5, 10, 12, 13, 11, 6, - 7, 9, 172, 171, 0, 8, 14, 15, 16, 17, - 18, 19, 492, 492, 492, 492, 492, 0, 490, 490, - 490, 490, 490, 220, 0, 0, 0, 0, 0, 0, - 227, 158, 20, 25, 27, 26, 21, 22, 24, 23, - 28, 29, 30, 31, 0, 0, 0, 241, 242, 240, - 246, 250, 0, 247, 0, 0, 243, 0, 245, 0, - 268, 270, 0, 248, 0, 274, 0, 0, 0, 0, - 278, 279, 280, 283, 220, 281, 0, 226, 228, 0, - 0, 0, 0, 0, 0, 1, 227, 2, 210, 212, - 213, 0, 195, 177, 183, 0, 0, 0, 0, 0, - 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, - 0, 205, 0, 0, 0, 0, 0, 0, 157, 0, - 256, 257, 251, 252, 0, 253, 0, 244, 269, 249, - 0, 272, 271, 275, 276, 0, 302, 300, 301, 0, - 0, 0, 0, 329, 0, 330, 0, 323, 324, 0, - 319, 303, 0, 326, 328, 0, 176, 175, 4, 211, - 0, 173, 174, 194, 0, 0, 191, 0, 32, 0, - 33, 156, 495, 0, 0, 227, 489, 163, 165, 164, - 166, 0, 221, 0, 205, 160, 0, 152, 488, 0, - 0, 423, 427, 430, 431, 0, 0, 0, 0, 0, - 0, 0, 0, 428, 429, 0, 0, 0, 0, 0, - 0, 0, 425, 0, 227, 0, 337, 342, 343, 357, - 355, 358, 356, 359, 360, 352, 347, 346, 345, 353, - 354, 344, 351, 350, 438, 440, 0, 441, 449, 0, - 450, 0, 442, 439, 460, 0, 461, 0, 437, 287, - 289, 288, 285, 286, 292, 294, 293, 290, 291, 297, - 299, 298, 295, 296, 277, 0, 0, 259, 258, 264, - 254, 255, 273, 0, 0, 0, 498, 0, 229, 284, - 0, 320, 325, 304, 327, 0, 0, 0, 197, 0, - 0, 193, 491, 227, 0, 0, 0, 150, 0, 0, - 154, 0, 0, 0, 159, 204, 0, 0, 0, 469, - 468, 471, 470, 473, 472, 475, 474, 477, 476, 479, - 478, 0, 0, 389, 227, 0, 0, 0, 0, 432, - 433, 434, 435, 0, 436, 0, 0, 0, 0, 0, - 0, 0, 391, 390, 466, 463, 457, 447, 452, 455, + 228, 0, 495, 3, 5, 10, 12, 13, 11, 6, + 7, 9, 173, 172, 0, 8, 14, 15, 16, 17, + 18, 19, 493, 493, 493, 493, 493, 0, 491, 491, + 491, 491, 491, 221, 0, 0, 0, 0, 0, 0, + 228, 159, 20, 25, 27, 26, 21, 22, 24, 23, + 28, 29, 30, 31, 0, 0, 0, 242, 243, 241, + 247, 251, 0, 248, 0, 0, 244, 0, 246, 0, + 269, 271, 0, 249, 0, 275, 0, 0, 0, 0, + 279, 280, 281, 284, 221, 282, 0, 227, 229, 0, + 0, 0, 0, 0, 0, 1, 228, 2, 211, 213, + 214, 0, 196, 178, 184, 0, 0, 0, 0, 0, + 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, + 0, 206, 0, 0, 0, 0, 0, 0, 158, 0, + 257, 258, 252, 253, 0, 254, 0, 245, 270, 250, + 0, 273, 272, 276, 277, 0, 303, 301, 302, 0, + 0, 0, 0, 330, 0, 331, 0, 324, 325, 0, + 320, 304, 0, 327, 329, 0, 177, 176, 4, 212, + 0, 174, 175, 195, 0, 0, 192, 0, 33, 0, + 34, 157, 496, 0, 0, 228, 490, 164, 166, 165, + 167, 0, 222, 0, 206, 161, 0, 153, 489, 0, + 0, 424, 428, 431, 432, 0, 0, 0, 0, 0, + 0, 0, 0, 429, 430, 0, 0, 0, 0, 0, + 0, 0, 426, 0, 228, 0, 338, 343, 344, 358, + 356, 359, 357, 360, 361, 353, 348, 347, 346, 354, + 355, 345, 352, 351, 439, 441, 0, 442, 450, 0, + 451, 0, 443, 440, 461, 0, 462, 0, 438, 288, + 290, 289, 286, 287, 293, 295, 294, 291, 292, 298, + 300, 299, 296, 297, 278, 0, 0, 260, 259, 265, + 255, 256, 274, 0, 0, 0, 499, 0, 230, 285, + 0, 321, 326, 305, 328, 0, 0, 0, 198, 0, + 0, 194, 492, 0, 228, 0, 0, 0, 151, 0, + 0, 155, 0, 0, 0, 160, 205, 0, 0, 0, + 470, 469, 472, 471, 474, 473, 476, 475, 478, 477, + 480, 479, 0, 0, 390, 228, 0, 0, 0, 0, + 433, 434, 435, 436, 0, 437, 0, 0, 0, 0, + 0, 0, 0, 392, 391, 467, 464, 458, 448, 453, + 456, 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, 447, 0, 452, 0, + 455, 0, 463, 0, 466, 0, 266, 261, 0, 0, + 0, 0, 283, 0, 332, 0, 322, 0, 0, 0, + 181, 180, 0, 200, 183, 185, 190, 191, 0, 179, + 32, 36, 0, 0, 0, 0, 39, 43, 44, 228, + 0, 38, 156, 0, 0, 154, 168, 163, 162, 0, + 0, 0, 385, 0, 228, 0, 0, 0, 0, 0, + 415, 0, 0, 0, 0, 0, 0, 0, 204, 0, + 0, 350, 349, 0, 339, 342, 408, 409, 0, 0, + 228, 0, 389, 399, 400, 403, 404, 0, 406, 398, + 401, 402, 394, 393, 395, 396, 397, 425, 427, 449, + 0, 454, 0, 457, 465, 468, 0, 0, 262, 0, + 0, 335, 0, 231, 323, 0, 306, 0, 0, 197, + 0, 202, 0, 188, 189, 187, 193, 49, 52, 53, + 50, 51, 54, 55, 71, 56, 58, 57, 74, 61, + 62, 63, 59, 60, 64, 65, 66, 67, 68, 69, + 70, 0, 0, 0, 0, 0, 0, 499, 0, 0, + 501, 0, 37, 0, 152, 0, 0, 0, 0, 0, + 0, 485, 0, 0, 481, 0, 0, 386, 0, 420, + 0, 0, 413, 0, 0, 0, 0, 0, 0, 424, + 0, 0, 0, 0, 375, 0, 460, 459, 0, 228, + 407, 0, 0, 388, 0, 0, 0, 267, 263, 0, + 0, 41, 504, 0, 502, 307, 333, 334, 228, 199, + 215, 217, 226, 218, 0, 206, 186, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 144, 145, 148, 141, + 148, 0, 0, 0, 35, 40, 510, 340, 0, 487, + 486, 484, 483, 488, 171, 0, 169, 387, 421, 0, + 417, 0, 416, 0, 0, 0, 0, 0, 0, 204, + 0, 373, 0, 0, 0, 0, 422, 411, 410, 0, + 0, 337, 336, 0, 0, 498, 0, 0, 0, 0, + 0, 235, 236, 237, 238, 234, 239, 0, 224, 0, + 219, 379, 377, 380, 378, 381, 382, 383, 201, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 446, 0, 451, 0, 454, - 0, 462, 0, 465, 0, 265, 260, 0, 0, 0, - 0, 282, 0, 331, 0, 321, 0, 0, 0, 180, - 179, 0, 199, 182, 184, 189, 190, 0, 178, 35, - 0, 0, 0, 0, 38, 42, 43, 227, 0, 37, - 155, 0, 0, 153, 167, 162, 161, 0, 0, 0, - 384, 0, 227, 0, 0, 0, 0, 0, 414, 0, - 0, 0, 0, 0, 0, 0, 203, 0, 0, 349, - 348, 0, 338, 341, 407, 408, 0, 0, 227, 0, - 388, 398, 399, 402, 403, 0, 405, 397, 400, 401, - 393, 392, 394, 395, 396, 424, 426, 448, 0, 453, - 0, 456, 464, 467, 0, 0, 261, 0, 0, 334, - 0, 230, 322, 0, 305, 0, 0, 196, 0, 201, - 0, 187, 188, 186, 192, 48, 51, 52, 49, 50, - 53, 54, 70, 55, 57, 56, 73, 60, 61, 62, - 58, 59, 63, 64, 65, 66, 67, 68, 69, 0, - 0, 0, 0, 0, 0, 498, 0, 0, 500, 0, - 36, 0, 151, 0, 0, 0, 0, 0, 0, 484, - 0, 0, 480, 0, 0, 385, 0, 419, 0, 0, - 412, 0, 0, 0, 0, 0, 0, 423, 0, 0, - 0, 0, 374, 0, 459, 458, 0, 227, 406, 0, - 0, 387, 0, 0, 0, 266, 262, 0, 0, 40, - 503, 0, 501, 306, 332, 333, 227, 198, 214, 216, - 225, 217, 0, 205, 185, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 143, 144, 147, 140, 147, 0, - 0, 0, 34, 39, 509, 339, 0, 486, 485, 483, - 482, 487, 170, 0, 168, 386, 420, 0, 416, 0, - 415, 0, 0, 0, 0, 0, 0, 203, 0, 372, - 0, 0, 0, 0, 421, 410, 409, 0, 0, 336, - 335, 0, 0, 497, 0, 0, 0, 0, 0, 234, - 235, 236, 237, 233, 238, 0, 223, 0, 218, 378, - 376, 379, 377, 380, 381, 382, 200, 209, 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, 146, 143, 0, + 142, 46, 45, 0, 150, 0, 0, 0, 482, 419, + 414, 418, 405, 0, 0, 204, 0, 0, 0, 444, + 446, 445, 0, 0, 203, 376, 0, 423, 412, 268, + 264, 42, 505, 506, 508, 507, 503, 0, 308, 226, + 216, 0, 0, 223, 0, 0, 208, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 145, 142, 0, 141, 45, - 44, 0, 149, 0, 0, 0, 481, 418, 413, 417, - 404, 0, 0, 203, 0, 0, 0, 443, 445, 444, - 0, 0, 202, 375, 0, 422, 411, 267, 263, 41, - 504, 505, 507, 506, 502, 0, 307, 225, 215, 0, - 0, 222, 0, 0, 207, 72, 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, 147, 0, 0, 149, 0, + 499, 341, 464, 0, 0, 0, 0, 0, 374, 0, + 309, 220, 232, 0, 0, 384, 0, 0, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 146, 0, 0, 148, 0, 498, 340, - 463, 0, 0, 0, 0, 0, 373, 0, 308, 219, - 231, 0, 0, 383, 0, 0, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 47, 46, 499, 508, 0, 203, - 370, 0, 203, 169, 0, 0, 0, 208, 206, 71, - 77, 78, 75, 76, 79, 80, 81, 82, 83, 0, - 74, 121, 122, 119, 120, 123, 124, 125, 126, 127, - 0, 118, 88, 89, 86, 87, 90, 91, 92, 93, - 94, 0, 85, 99, 100, 97, 98, 101, 102, 103, - 104, 105, 0, 96, 132, 133, 130, 131, 134, 135, - 136, 137, 138, 0, 129, 110, 111, 108, 109, 112, - 113, 114, 115, 116, 0, 107, 0, 0, 0, 0, - 0, 0, 0, 310, 309, 315, 232, 224, 84, 128, - 95, 106, 139, 117, 203, 371, 0, 203, 498, 316, - 311, 0, 0, 0, 0, 369, 0, 0, 312, 203, - 498, 203, 498, 0, 317, 313, 0, 365, 0, 0, - 0, 368, 318, 314, 498, 361, 367, 0, 0, 0, - 364, 0, 363, 0, 0, 0, 498, 0, 366, 498, - 362 + 0, 0, 0, 0, 0, 0, 48, 47, 500, 509, + 0, 204, 371, 0, 204, 170, 0, 0, 0, 209, + 207, 72, 78, 79, 76, 77, 80, 81, 82, 83, + 84, 0, 75, 122, 123, 120, 121, 124, 125, 126, + 127, 128, 0, 119, 89, 90, 87, 88, 91, 92, + 93, 94, 95, 0, 86, 100, 101, 98, 99, 102, + 103, 104, 105, 106, 0, 97, 133, 134, 131, 132, + 135, 136, 137, 138, 139, 0, 130, 111, 112, 109, + 110, 113, 114, 115, 116, 117, 0, 108, 0, 0, + 0, 0, 0, 0, 0, 311, 310, 316, 233, 225, + 85, 129, 96, 107, 140, 118, 204, 372, 0, 204, + 499, 317, 312, 0, 0, 0, 0, 370, 0, 0, + 313, 204, 499, 204, 499, 0, 318, 314, 0, 366, + 0, 0, 0, 369, 319, 315, 499, 362, 368, 0, + 0, 0, 365, 0, 364, 0, 0, 0, 499, 0, + 367, 499, 363 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -673, -673, -673, 1241, 1291, 52, -673, -673, 785, -502, - 767, -673, 712, 713, -673, -511, 223, 297, 1158, -673, - 301, -673, 1023, 309, 311, -7, 1340, -17, 1111, 1172, - -67, -673, -673, 836, -673, -673, -673, -673, -673, -673, - -673, -672, -207, -673, -673, -673, -673, 670, -131, 21, - 536, -673, -673, 1203, -673, -673, 312, 324, 338, 340, - 346, -673, -673, -192, -673, 981, -216, -217, -606, -603, - -597, -596, -594, -590, 533, -673, -673, -673, -673, -673, - -673, 1011, -673, -673, 971, 582, -234, -673, -673, -673, - 694, -673, -673, -673, -673, 695, 972, 977, 24, -673, - -673, -673, -673, 1137, -448, 714, -132, 515, 543, -673, - -673, -561, -673, 583, 685, -673 + -675, -675, -675, 1239, 1296, 239, -675, -675, 786, -503, + 773, -675, 710, 709, -675, -512, 240, 251, 1159, -675, + 274, -675, 1027, 275, 277, -7, 1342, -17, 1063, 1181, + -48, -675, -675, 832, -675, -675, -675, -675, -675, -675, + -675, -674, -208, -675, -675, -675, -675, 668, -212, 23, + 536, -675, -675, 1203, -675, -675, 283, 284, 286, 288, + 289, -675, -675, -192, -675, 982, -216, -217, -609, -602, + -601, -600, -593, -591, 535, -675, -675, -675, -675, -675, + -675, 1010, -675, -675, 899, 583, -234, -675, -675, -675, + 698, -675, -675, -675, -675, 699, 970, 972, -333, -675, + -675, -675, -675, 1145, -450, 708, -132, 459, 479, -675, + -675, -563, -675, 589, 685, -675 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - 0, 21, 22, 23, 61, 24, 443, 618, 444, 445, - 565, 646, 647, 789, 446, 328, 25, 26, 205, 27, + 0, 21, 22, 23, 61, 24, 445, 620, 446, 447, + 567, 648, 649, 791, 448, 329, 25, 26, 205, 27, 28, 214, 215, 29, 30, 31, 32, 33, 123, 191, - 124, 196, 433, 434, 533, 321, 438, 194, 432, 529, - 633, 601, 217, 926, 834, 121, 627, 628, 629, 630, - 708, 34, 107, 108, 631, 705, 35, 36, 37, 38, - 39, 40, 41, 245, 453, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 715, 716, 255, 256, 257, 258, - 259, 358, 260, 261, 262, 263, 264, 806, 265, 266, - 267, 268, 269, 270, 271, 272, 378, 379, 273, 274, - 275, 276, 277, 278, 581, 582, 219, 134, 126, 117, - 131, 421, 652, 621, 622, 449 + 124, 196, 434, 435, 535, 321, 439, 194, 433, 531, + 635, 603, 217, 928, 836, 121, 629, 630, 631, 632, + 710, 34, 107, 108, 633, 707, 35, 36, 37, 38, + 39, 40, 41, 245, 455, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 717, 718, 255, 256, 257, 258, + 259, 359, 260, 261, 262, 263, 264, 808, 265, 266, + 267, 268, 269, 270, 271, 272, 379, 380, 273, 274, + 275, 276, 277, 278, 583, 584, 219, 134, 126, 117, + 131, 422, 654, 623, 624, 451 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1292,300 +1293,288 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 335, 68, 318, 114, 648, 811, 617, 334, 353, 377, - 583, 220, 357, 53, 374, 375, 619, 374, 375, 216, - 486, 122, 505, 372, 373, 54, 709, 56, 381, 710, - 222, 223, 224, 597, -493, 711, 712, 105, 713, 17, - 309, 1, 714, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 169, 68, 192, 431, 650, 11, 12, 13, - 62, 677, 589, 14, 15, 16, 1097, 118, 132, 119, - 110, 55, 111, 60, 1109, 120, 141, 1, 489, 2, - 3, 4, 5, 6, 7, 279, 9, 280, 281, 53, - 323, 142, 143, 11, 12, 13, -496, 151, 356, 14, - 15, 16, 487, 435, 436, 284, 125, 285, 286, 385, - 386, 17, 62, 118, 329, 119, 455, 165, 166, 167, - 168, 120, 678, 317, 440, 678, 229, 230, 231, 385, - 386, 913, 232, 678, 353, 490, 424, 405, 791, 465, - 466, 384, 406, 282, 420, 425, 461, 17, 199, 200, - 201, 588, 289, 17, 290, 291, 208, 209, 210, 233, - 234, 235, 47, 287, 385, 386, 480, 333, 96, 484, - 485, 20, 507, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 503, 504, 383, 330, 819, - 306, 1, 1119, 2, 3, 4, 5, 6, 7, 97, - 9, 18, 139, 221, 222, 223, 224, 11, 12, 13, - 292, 463, 706, 14, 15, 16, 243, 376, 19, 626, - 376, 534, 190, 506, 326, 144, 709, 380, 670, 710, - 1120, 63, 420, 243, 242, 711, 712, 18, 713, 527, - 385, 386, 714, 20, 112, 324, 999, 441, 283, 442, - 385, 386, 798, 592, 593, 98, 595, 827, 671, 599, - 573, 17, 523, 707, 459, 575, 576, 584, 288, 389, - 608, 524, 225, 226, 531, 532, 577, 578, 579, 20, - 1128, 407, 227, 63, 228, 99, 408, 390, 391, 392, - 393, 103, 612, 385, 386, 395, 610, 104, 385, 386, - 229, 230, 231, 385, 386, 64, 232, 678, 642, 65, - 163, 106, 303, 164, 435, 293, 439, 66, 1129, 67, - 69, 382, 385, 386, 383, 385, 386, 1077, 304, 305, - 1080, 642, 70, 233, 234, 235, 420, 464, 396, 397, - 398, 399, 400, 401, 402, 403, 71, 997, 72, 606, - 109, 18, 454, 673, 73, 236, 115, 64, 385, 386, - 116, 65, 643, 676, 644, 645, 917, 787, 404, 66, - 675, 67, 69, 668, 409, 669, 389, 672, 237, 410, - 238, 580, 239, 122, 70, 643, 411, 644, 645, 57, - 58, 412, 125, 20, 59, 686, -497, -497, 71, 825, - 72, 826, 240, 241, 242, 450, 73, 243, 451, 244, - 460, 1006, 100, 101, 102, 683, 221, 222, 223, 224, - 153, 154, 1102, 173, 174, 1104, 717, 139, 175, 221, - 222, 223, 224, 133, 468, 149, 469, 1116, 470, 1118, - 570, 804, 140, 176, 145, 586, -497, -497, 399, 400, - 401, 402, 403, 177, 146, 799, 178, 179, 413, 180, - 181, 182, 812, 414, 795, 147, 719, 720, 721, 722, - 723, 609, 150, 724, 725, 183, 184, 160, 161, 162, - 726, 727, 728, 152, 295, 225, 226, 296, 297, 155, - 156, 568, 298, 299, 569, 227, 729, 228, 225, 226, - 356, 585, 157, 17, 383, 42, 43, 44, 227, 158, - 228, 45, 46, 229, 230, 231, 48, 49, 50, 232, - 170, 1081, 51, 52, 1082, 1083, 229, 230, 231, 1084, - 1085, 590, 232, 591, 366, 470, 367, 1105, 368, 369, - 427, 428, 221, 222, 223, 224, 233, 234, 235, 1117, - 237, 1121, 238, 159, 239, 820, 821, 822, 823, 233, - 234, 235, 171, 1130, 135, 136, 137, 138, 236, 698, - -239, 699, 700, 701, 702, 1138, 703, 704, 1140, 515, - 516, 236, 221, 222, 223, 224, 127, 128, 129, 130, - 682, 237, 172, 238, 602, 239, 655, 603, 662, 383, - 664, 663, 665, 663, 237, 383, 238, 685, 239, 185, - 383, 225, 226, 385, 386, 240, 241, 242, 186, 696, - 243, 227, 244, 228, 689, 604, 605, 451, 240, 241, - 242, 690, 187, 243, 691, 244, 401, 402, 403, 229, - 230, 231, 189, 693, 792, 232, 694, 451, 374, 910, - 816, 351, 352, 383, 193, 835, 906, 909, 836, 451, - 383, 227, 996, 228, 195, 694, 221, 222, 223, 224, - 1107, 1108, 233, 234, 235, 1003, 1113, 1114, 663, 229, - 230, 231, 197, 1087, 198, 232, 451, 202, 730, 731, - 732, 733, 734, 203, 236, 735, 736, 802, 920, 921, - 809, 204, 737, 738, 739, 207, 211, 206, 212, 1008, - 213, 216, 233, 234, 235, 218, 294, 237, 740, 238, - 300, 239, 301, 310, 302, 307, 312, 311, 313, 314, - 315, 319, 1007, 320, 236, 351, 327, 74, 322, 331, - 332, 240, 241, 242, 336, 227, 243, 228, 244, 337, - 359, 338, 463, 354, 355, 360, 361, 237, 362, 238, - 365, 239, 363, 229, 230, 231, 370, 75, 76, 232, - 77, 371, 404, 415, 416, 78, 79, 417, 418, 423, - 419, 240, 241, 242, 426, 420, 243, 429, 244, 1086, - 430, 447, 437, 448, 452, 17, 233, 234, 235, 1, - 457, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 389, 458, 462, 471, 476, 11, 12, 13, 236, 477, - 472, 14, 15, 16, 473, 474, 475, 478, 390, 391, - 392, 393, 479, 483, 481, 488, 395, 243, 508, 510, - 512, 237, 513, 238, 514, 239, 741, 742, 743, 744, - 745, 517, 519, 746, 747, 387, 518, 388, 520, 522, - 748, 749, 750, 521, 525, 240, 241, 242, 530, 17, - 243, 528, 244, 526, 566, 571, 751, 567, 463, 396, - 397, 398, 399, 400, 401, 402, 403, 572, 574, 594, - 800, 487, 587, 80, 81, 82, 83, 596, 84, 85, - 600, 385, 86, 87, 88, 607, 611, 89, 90, 91, - 615, 613, 614, 389, 92, 93, 616, 440, 620, 623, - 624, 625, 383, 389, 635, 636, 94, 632, 651, 657, - 95, 390, 391, 392, 393, 394, 389, 637, 638, 395, - 658, -497, -497, 392, 393, 639, 659, 640, 641, -497, - 649, 660, 654, 656, 390, 391, 392, 393, 661, 18, - 680, 605, 395, 339, 340, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 666, 19, 674, 681, 679, - 604, 684, 396, 397, 398, 399, 400, 401, 402, 403, - 687, 688, -497, 397, 398, 399, 400, 401, 402, 403, - 695, 20, 692, 697, 718, 396, 397, 398, 399, 400, - 401, 402, 403, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 786, 552, 553, 554, 555, 556, 557, 785, 787, 558, - 793, 794, 559, 560, 803, 797, 561, 562, 563, 564, - 752, 753, 754, 755, 756, 801, 810, 757, 758, 805, - 813, 815, 817, 814, 759, 760, 761, 763, 764, 765, - 766, 767, 818, 829, 768, 769, 830, 831, 832, 833, - 762, 770, 771, 772, 774, 775, 776, 777, 778, 837, - 838, 779, 780, 839, 840, 841, 842, 773, 781, 782, - 783, 843, 844, 845, 846, 847, 857, 848, 849, 868, - 850, 851, 852, 853, 784, 854, 879, 890, 855, 856, - 901, 904, 858, 905, 859, 860, 908, 678, 918, 924, - 927, 861, 862, 863, 864, 865, 925, 866, 928, 867, - 869, 870, 871, 872, 873, 874, 875, 929, 876, 877, - 878, 880, 881, 930, 882, 931, 883, 932, 884, 885, - 886, 933, 887, 888, 889, 934, 891, 892, 935, 936, - 893, 894, 895, 896, 938, 897, 898, 899, 900, 902, - 911, 912, 914, 915, 916, 922, 937, 939, 940, 941, + 336, 68, 318, 114, 650, 813, 335, 619, 354, 378, + 585, 220, 358, 122, 53, 375, 376, 621, 375, 376, + 216, 17, 507, 373, 374, 711, 385, 54, 382, 56, + 599, 432, 712, 713, 714, -494, 222, 223, 224, 105, + 309, 715, 1, 716, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 68, 110, 169, 111, 652, 11, 12, + 13, 324, 142, 143, 14, 15, 16, 118, 442, 119, + 132, 533, 534, 192, 425, 120, 421, 330, 141, 279, + 47, 280, 281, 426, 679, 303, 284, 60, 285, 286, + 488, 1, 708, 2, 3, 4, 5, 6, 7, 151, + 9, 304, 305, 436, 437, 1099, 406, 11, 12, 13, + 1111, 407, 17, 14, 15, 16, 17, 457, 408, 165, + 166, 167, 168, 409, 1121, 386, 387, 672, 357, 800, + 55, 915, 229, 230, 231, 354, 590, 282, 232, 793, + 467, 468, 317, 709, 287, 680, 289, 463, 290, 291, + 199, 200, 201, 20, 1001, 386, 387, 53, 208, 209, + 210, 17, 1122, 384, 680, 233, 234, 235, 334, 680, + 486, 487, 489, 509, 493, 494, 495, 496, 497, 498, + 499, 500, 501, 502, 503, 504, 505, 506, 331, 421, + 821, 443, 306, 444, 386, 387, 144, 386, 387, 386, + 387, 103, 18, 491, 292, 139, 591, 386, 387, 221, + 222, 223, 224, 673, 190, 680, 325, 243, 377, 19, + 628, 377, 536, 508, 96, 711, 327, 381, 112, 525, + 644, 242, 712, 713, 714, 386, 387, 1130, 526, 243, + 529, 715, 283, 716, 20, 386, 387, 62, 63, 288, + 97, 18, 577, 578, 98, 594, 595, 829, 597, 64, + 492, 601, 575, 579, 580, 581, 644, 675, 99, 586, + 461, 421, 610, 386, 387, 1131, 386, 387, 225, 226, + 386, 387, 65, 66, 645, 67, 646, 647, 227, 789, + 228, 69, 70, 20, 71, 104, 72, 73, 612, 62, + 63, 221, 222, 223, 224, 678, 229, 230, 231, 293, + 106, 64, 232, 118, -497, 119, 436, 441, 153, 154, + 645, 120, 646, 647, 125, 383, 163, 1079, 384, 164, + 1082, 57, 58, 482, 65, 66, 59, 67, 466, 233, + 234, 235, 804, 69, 70, 811, 71, 999, 72, 73, + 295, 608, 410, 296, 297, 456, 109, 411, 298, 299, + 367, 236, 368, 115, 369, 370, 919, 412, 582, 116, + 225, 226, 413, 173, 174, 670, 414, 671, 175, 674, + 227, 415, 228, 122, 237, 357, 238, 125, 239, 221, + 222, 223, 224, 822, 823, 824, 825, 688, 229, 230, + 231, 470, 133, 471, 232, 472, 155, 156, 240, 241, + 242, 452, 1008, 243, 453, 244, 462, 685, 570, 140, + 1083, 571, 1104, 1084, 1085, 1106, 139, 719, 1086, 1087, + 145, 233, 234, 235, 42, 43, 44, 1118, 146, 1120, + 45, 46, 572, 806, 48, 49, 50, 588, 386, 387, + 51, 52, 592, 236, 593, 147, 472, 801, 225, 226, + 100, 101, 102, 17, 814, 237, 797, 238, 227, 239, + 228, 587, 604, 611, 384, 605, 237, 149, 238, 657, + 239, 176, 384, 390, 517, 518, 229, 230, 231, 150, + 664, 177, 232, 665, 178, 179, 152, 180, 181, 182, + 240, 241, 242, -498, -498, 243, 157, 244, 135, 136, + 137, 138, 158, 183, 184, 221, 222, 223, 224, 233, + 234, 235, 127, 128, 129, 130, 160, 161, 162, 221, + 222, 223, 224, 428, 429, 666, 667, 1107, 665, 384, + 687, 236, 691, 384, 692, 453, 405, 693, 677, 1119, + 827, 1123, 828, -498, -498, 400, 401, 402, 403, 404, + 606, 607, 695, 1132, 237, 696, 238, 794, 239, 159, + 453, 221, 222, 223, 224, 1140, 818, 837, 1142, 384, + 838, 375, 912, 908, 225, 226, 453, 170, 240, 241, + 242, 171, 684, 243, 227, 244, 228, 911, 352, 353, + 384, 998, 1005, 1089, 696, 665, 453, 172, 227, 185, + 228, 189, 229, 230, 231, 1109, 1110, 186, 232, 922, + 923, 698, 402, 403, 404, 187, 229, 230, 231, 1115, + 1116, 193, 232, 197, 700, -240, 701, 702, 703, 704, + 352, 705, 706, 195, 198, 233, 234, 235, 202, 203, + 227, 204, 228, 206, 207, 211, 212, 213, 74, 233, + 234, 235, 216, 218, 294, 300, 301, 236, 229, 230, + 231, 302, 307, 310, 232, 311, 312, 313, 314, 315, + 319, 236, 320, 322, 323, 328, 333, 332, 75, 76, + 237, 77, 238, 337, 239, 338, 78, 79, 339, 360, + 355, 233, 234, 235, 237, 356, 238, 361, 239, 362, + 363, 1010, 405, 364, 240, 241, 242, 366, 371, 243, + 372, 244, 416, 236, 417, 418, 419, 421, 240, 241, + 242, 424, 420, 243, 1009, 244, 1, 427, 2, 3, + 4, 5, 6, 7, 430, 9, 237, 431, 238, 438, + 239, 440, 11, 12, 13, 465, 449, 450, 14, 15, + 16, 17, 454, 459, 473, 460, 464, 474, 475, 476, + 240, 241, 242, 477, 478, 243, 1, 244, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 388, 479, 389, + 483, 1088, 11, 12, 13, 480, 465, 481, 14, 15, + 16, 485, 490, 243, 519, 510, 17, 512, 514, 515, + 516, 520, 521, 390, 80, 81, 82, 83, 522, 84, + 85, 523, 524, 86, 87, 88, 530, 527, 89, 90, + 91, 391, 392, 393, 394, 92, 93, 532, 528, 396, + 568, 569, 573, 574, 576, 390, 17, 94, 489, 589, + 596, 95, 598, 602, 390, 465, 609, 386, 615, 613, + 616, 617, 618, 391, 392, 393, 394, 395, 442, 622, + 625, 396, 391, 392, 393, 394, 626, 614, 627, 384, + 396, 637, 397, 398, 399, 400, 401, 402, 403, 404, + 653, 659, 660, 802, 634, 638, 18, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 639, + 640, 661, 662, 390, 397, 398, 399, 400, 401, 402, + 403, 404, 390, 397, 398, 399, 400, 401, 402, 403, + 404, 391, 392, 393, 394, 641, 18, 642, 20, 396, + -498, -498, 393, 394, 643, 651, 663, 656, -498, 658, + 682, 668, 676, 19, 681, 683, 686, 607, 606, 690, + 721, 722, 723, 724, 725, 689, 697, 726, 727, 699, + 694, 720, 787, 788, 728, 729, 730, 795, 20, 803, + 789, 796, 397, 398, 399, 400, 401, 402, 403, 404, + 731, -498, 398, 399, 400, 401, 402, 403, 404, 537, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 799, 554, 555, 556, + 557, 558, 559, 805, 807, 560, 812, 819, 561, 562, + 815, 816, 563, 564, 565, 566, 732, 733, 734, 735, + 736, 817, 820, 737, 738, 831, 832, 833, 834, 839, + 739, 740, 741, 743, 744, 745, 746, 747, 835, 848, + 748, 749, 859, 840, 841, 842, 742, 750, 751, 752, + 754, 755, 756, 757, 758, 843, 844, 759, 760, 870, + 845, 846, 847, 753, 761, 762, 763, 765, 766, 767, + 768, 769, 849, 850, 770, 771, 851, 852, 906, 881, + 764, 772, 773, 774, 776, 777, 778, 779, 780, 853, + 854, 781, 782, 855, 856, 857, 858, 775, 783, 784, + 785, 860, 892, 861, 903, 907, 862, 863, 910, 864, + 865, 866, 867, 868, 786, 869, 871, 872, 873, 874, + 875, 876, 877, 878, 879, 880, 882, 883, 884, 885, + 886, 887, 888, 680, 889, 890, 891, 893, 894, 920, + 926, 895, 896, 897, 927, 898, 929, 899, 900, 901, + 902, 904, 913, 930, 914, 916, 917, 918, 924, 931, + 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, - 952, 953, 954, 955, 956, 957, 958, 960, 961, 959, + 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, - 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, + 973, 974, 972, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, - 992, 993, 994, 995, 998, 1000, 1001, 1002, 1009, 1010, - 1004, 1005, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, - 1019, 1020, 1021, 1022, 1023, 1024, 1030, 1025, 1026, 1027, - 1028, 1029, 1041, 1031, 1032, 1033, 1052, 1034, 1035, 1036, - 1037, 1038, 1039, 1040, 1063, 1042, 1043, 1074, 1044, 1045, - 1046, 1047, 1048, 1094, 1049, 1050, 1051, 1053, 1054, 1055, - 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1064, 1065, 1066, - 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1075, 1096, 1099, - 1111, 1076, 1078, 1079, 1088, 1089, 1090, 1091, 1092, 1093, - 1095, 1098, 1100, 1106, 1115, 1122, 1123, 1110, 1101, 1103, - 1112, 1124, 1126, 1125, 1127, 1131, 1132, 1133, 1134, 1135, - 1137, 148, 1136, 1139, 653, 667, 456, 188, 788, 325, - 113, 790, 316, 919, 482, 923, 634, 828, 467, 903, - 807, 808, 364, 0, 308, 0, 907, 796, 0, 824, - 509, 0, 0, 0, 0, 0, 0, 511, 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, 422, 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, 598 + 992, 993, 994, 995, 996, 997, 1000, 1002, 1003, 1004, + 1011, 1012, 1006, 1007, 1021, 1013, 1014, 1015, 1016, 1017, + 1018, 1019, 1020, 1022, 1023, 1024, 1025, 1026, 1027, 1028, + 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, + 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, + 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1065, 1057, + 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1066, 1067, 1068, + 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1096, 1077, + 1078, 1098, 1101, 1080, 1090, 1081, 1091, 1092, 1093, 1094, + 1095, 1097, 1100, 1102, 1108, 1113, 1103, 1105, 1112, 1114, + 1117, 1124, 1125, 1126, 1127, 1128, 1129, 1133, 1134, 1135, + 1136, 1137, 1139, 1138, 1141, 188, 148, 655, 790, 792, + 326, 458, 113, 669, 636, 921, 484, 830, 469, 925, + 423, 316, 905, 798, 308, 600, 809, 810, 0, 511, + 365, 826, 0, 513, 909 }; static const yytype_int16 yycheck[] = { - 216, 8, 194, 20, 565, 677, 517, 214, 225, 243, - 458, 143, 228, 3, 5, 6, 518, 5, 6, 65, - 74, 8, 3, 240, 241, 4, 632, 6, 244, 632, - 4, 5, 6, 3, 0, 632, 632, 16, 632, 77, - 172, 7, 632, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 61, 60, 121, 81, 567, 23, 24, 25, - 8, 4, 86, 29, 30, 31, 6, 20, 47, 22, - 14, 75, 16, 3, 6, 28, 55, 7, 72, 9, - 10, 11, 12, 13, 14, 3, 16, 5, 6, 3, - 54, 75, 76, 23, 24, 25, 61, 76, 87, 29, - 30, 31, 156, 319, 320, 3, 71, 5, 6, 153, - 154, 77, 60, 20, 38, 22, 332, 96, 97, 98, - 99, 28, 65, 190, 3, 65, 100, 101, 102, 153, - 154, 803, 106, 65, 351, 129, 40, 208, 649, 355, - 356, 54, 213, 61, 77, 49, 338, 77, 127, 128, - 129, 54, 3, 77, 5, 6, 135, 136, 137, 133, - 134, 135, 37, 61, 153, 154, 210, 213, 34, 385, - 386, 209, 406, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 213, 205, 691, - 169, 7, 125, 9, 10, 11, 12, 13, 14, 34, - 16, 167, 211, 3, 4, 5, 6, 23, 24, 25, - 61, 72, 3, 29, 30, 31, 207, 208, 184, 209, - 208, 437, 209, 204, 203, 209, 832, 244, 83, 832, - 163, 8, 77, 207, 204, 832, 832, 167, 832, 431, - 153, 154, 832, 209, 188, 209, 4, 126, 166, 128, - 153, 154, 83, 469, 470, 34, 472, 210, 86, 475, - 452, 77, 33, 54, 64, 67, 68, 459, 166, 130, - 487, 42, 72, 73, 69, 70, 78, 79, 80, 209, - 125, 208, 82, 60, 84, 34, 213, 148, 149, 150, - 151, 3, 153, 153, 154, 156, 488, 3, 153, 154, - 100, 101, 102, 153, 154, 8, 106, 65, 72, 8, - 194, 3, 10, 197, 530, 166, 323, 8, 163, 8, - 8, 210, 153, 154, 213, 153, 154, 999, 26, 27, - 1002, 72, 8, 133, 134, 135, 77, 354, 199, 200, - 201, 202, 203, 204, 205, 206, 8, 908, 8, 481, - 170, 167, 331, 213, 8, 155, 0, 60, 153, 154, - 212, 60, 126, 213, 128, 129, 814, 131, 211, 60, - 213, 60, 60, 589, 208, 591, 130, 594, 178, 213, - 180, 183, 182, 8, 60, 126, 208, 128, 129, 164, - 165, 213, 71, 209, 169, 612, 150, 151, 60, 34, - 60, 36, 202, 203, 204, 210, 60, 207, 213, 209, - 210, 922, 157, 158, 159, 607, 3, 4, 5, 6, - 171, 172, 1094, 184, 185, 1097, 633, 211, 189, 3, - 4, 5, 6, 71, 83, 209, 85, 1109, 87, 1111, - 447, 675, 14, 158, 3, 462, 200, 201, 202, 203, - 204, 205, 206, 168, 3, 671, 171, 172, 208, 174, - 175, 176, 678, 213, 656, 3, 89, 90, 91, 92, - 93, 488, 3, 96, 97, 190, 191, 193, 194, 195, - 103, 104, 105, 6, 40, 72, 73, 43, 44, 171, - 172, 210, 48, 49, 213, 82, 119, 84, 72, 73, - 87, 210, 3, 77, 213, 33, 34, 35, 82, 174, - 84, 39, 40, 100, 101, 102, 33, 34, 35, 106, - 54, 40, 39, 40, 43, 44, 100, 101, 102, 48, - 49, 83, 106, 85, 118, 87, 120, 1098, 122, 123, - 186, 187, 3, 4, 5, 6, 133, 134, 135, 1110, - 178, 1112, 180, 6, 182, 3, 4, 5, 6, 133, - 134, 135, 213, 1124, 49, 50, 51, 52, 155, 55, - 56, 57, 58, 59, 60, 1136, 62, 63, 1139, 45, - 46, 155, 3, 4, 5, 6, 43, 44, 45, 46, - 607, 178, 6, 180, 210, 182, 210, 213, 210, 213, - 210, 213, 210, 213, 178, 213, 180, 210, 182, 4, - 213, 72, 73, 153, 154, 202, 203, 204, 210, 626, - 207, 82, 209, 84, 210, 5, 6, 213, 202, 203, - 204, 210, 210, 207, 213, 209, 204, 205, 206, 100, - 101, 102, 21, 210, 210, 106, 213, 213, 5, 6, - 210, 72, 73, 213, 64, 210, 210, 210, 213, 213, - 213, 82, 210, 84, 66, 213, 3, 4, 5, 6, - 45, 46, 133, 134, 135, 210, 43, 44, 213, 100, - 101, 102, 72, 210, 3, 106, 213, 3, 89, 90, - 91, 92, 93, 61, 155, 96, 97, 673, 829, 830, - 676, 209, 103, 104, 105, 3, 3, 73, 3, 925, - 3, 65, 133, 134, 135, 4, 210, 178, 119, 180, - 3, 182, 3, 163, 4, 209, 3, 6, 6, 4, - 54, 52, 924, 67, 155, 72, 3, 3, 73, 61, - 199, 202, 203, 204, 77, 82, 207, 84, 209, 77, - 4, 209, 72, 209, 209, 4, 4, 178, 4, 180, - 209, 182, 6, 100, 101, 102, 209, 33, 34, 106, - 36, 209, 211, 3, 6, 41, 42, 47, 47, 4, - 76, 202, 203, 204, 6, 77, 207, 210, 209, 1005, - 210, 54, 68, 209, 209, 77, 133, 134, 135, 7, - 209, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 130, 209, 209, 4, 4, 23, 24, 25, 155, 4, - 209, 29, 30, 31, 209, 209, 209, 214, 148, 149, - 150, 151, 210, 3, 76, 209, 156, 207, 6, 6, - 6, 178, 5, 180, 43, 182, 89, 90, 91, 92, - 93, 209, 3, 96, 97, 72, 209, 74, 209, 6, - 103, 104, 105, 210, 163, 202, 203, 204, 213, 77, - 207, 75, 209, 163, 127, 3, 119, 209, 72, 199, - 200, 201, 202, 203, 204, 205, 206, 3, 213, 75, - 210, 156, 210, 159, 160, 161, 162, 4, 164, 165, - 213, 153, 168, 169, 170, 209, 129, 173, 174, 175, - 6, 214, 214, 130, 180, 181, 6, 3, 3, 6, - 4, 4, 213, 130, 209, 209, 192, 177, 32, 6, - 196, 148, 149, 150, 151, 152, 130, 209, 209, 156, - 6, 148, 149, 150, 151, 209, 4, 209, 209, 156, - 209, 3, 210, 209, 148, 149, 150, 151, 6, 167, - 4, 6, 156, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 210, 184, 213, 77, 210, - 5, 210, 199, 200, 201, 202, 203, 204, 205, 206, - 50, 47, 199, 200, 201, 202, 203, 204, 205, 206, - 6, 209, 199, 213, 6, 199, 200, 201, 202, 203, - 204, 205, 206, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 127, 106, 107, 108, 109, 110, 111, 129, 131, 114, - 209, 163, 117, 118, 4, 210, 121, 122, 123, 124, - 89, 90, 91, 92, 93, 207, 213, 96, 97, 207, - 210, 210, 6, 209, 103, 104, 105, 89, 90, 91, - 92, 93, 6, 56, 96, 97, 56, 3, 213, 51, + 216, 8, 194, 20, 567, 679, 214, 519, 225, 243, + 460, 143, 228, 8, 3, 5, 6, 520, 5, 6, + 65, 77, 3, 240, 241, 634, 54, 4, 244, 6, + 3, 81, 634, 634, 634, 0, 4, 5, 6, 16, + 172, 634, 7, 634, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 60, 14, 61, 16, 569, 23, 24, + 25, 54, 75, 76, 29, 30, 31, 20, 3, 22, + 47, 69, 70, 121, 40, 28, 77, 38, 55, 3, + 37, 5, 6, 49, 4, 10, 3, 3, 5, 6, + 74, 7, 3, 9, 10, 11, 12, 13, 14, 76, + 16, 26, 27, 319, 320, 6, 208, 23, 24, 25, + 6, 213, 77, 29, 30, 31, 77, 333, 208, 96, + 97, 98, 99, 213, 125, 153, 154, 83, 87, 83, + 75, 805, 100, 101, 102, 352, 54, 61, 106, 651, + 356, 357, 190, 54, 61, 65, 3, 339, 5, 6, + 127, 128, 129, 209, 4, 153, 154, 3, 135, 136, + 137, 77, 163, 213, 65, 133, 134, 135, 213, 65, + 386, 387, 156, 407, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 205, 77, + 693, 126, 169, 128, 153, 154, 209, 153, 154, 153, + 154, 3, 167, 72, 61, 211, 86, 153, 154, 3, + 4, 5, 6, 86, 209, 65, 209, 207, 208, 184, + 209, 208, 438, 204, 34, 834, 203, 244, 188, 33, + 72, 204, 834, 834, 834, 153, 154, 125, 42, 207, + 432, 834, 166, 834, 209, 153, 154, 8, 8, 166, + 34, 167, 67, 68, 34, 471, 472, 210, 474, 8, + 129, 477, 454, 78, 79, 80, 72, 213, 34, 461, + 64, 77, 489, 153, 154, 163, 153, 154, 72, 73, + 153, 154, 8, 8, 126, 8, 128, 129, 82, 131, + 84, 8, 8, 209, 8, 3, 8, 8, 490, 60, + 60, 3, 4, 5, 6, 213, 100, 101, 102, 166, + 3, 60, 106, 20, 61, 22, 532, 324, 171, 172, + 126, 28, 128, 129, 71, 210, 194, 1001, 213, 197, + 1004, 164, 165, 210, 60, 60, 169, 60, 355, 133, + 134, 135, 675, 60, 60, 678, 60, 910, 60, 60, + 40, 483, 208, 43, 44, 332, 170, 213, 48, 49, + 118, 155, 120, 0, 122, 123, 816, 208, 183, 212, + 72, 73, 213, 184, 185, 591, 208, 593, 189, 596, + 82, 213, 84, 8, 178, 87, 180, 71, 182, 3, + 4, 5, 6, 3, 4, 5, 6, 614, 100, 101, + 102, 83, 71, 85, 106, 87, 171, 172, 202, 203, + 204, 210, 924, 207, 213, 209, 210, 609, 210, 14, + 40, 213, 1096, 43, 44, 1099, 211, 635, 48, 49, + 3, 133, 134, 135, 33, 34, 35, 1111, 3, 1113, + 39, 40, 449, 677, 33, 34, 35, 464, 153, 154, + 39, 40, 83, 155, 85, 3, 87, 673, 72, 73, + 157, 158, 159, 77, 680, 178, 658, 180, 82, 182, + 84, 210, 210, 490, 213, 213, 178, 209, 180, 210, + 182, 158, 213, 130, 45, 46, 100, 101, 102, 3, + 210, 168, 106, 213, 171, 172, 6, 174, 175, 176, + 202, 203, 204, 150, 151, 207, 3, 209, 49, 50, + 51, 52, 174, 190, 191, 3, 4, 5, 6, 133, + 134, 135, 43, 44, 45, 46, 193, 194, 195, 3, + 4, 5, 6, 186, 187, 210, 210, 1100, 213, 213, + 210, 155, 210, 213, 210, 213, 211, 213, 213, 1112, + 34, 1114, 36, 200, 201, 202, 203, 204, 205, 206, + 5, 6, 210, 1126, 178, 213, 180, 210, 182, 6, + 213, 3, 4, 5, 6, 1138, 210, 210, 1141, 213, + 213, 5, 6, 210, 72, 73, 213, 54, 202, 203, + 204, 213, 609, 207, 82, 209, 84, 210, 72, 73, + 213, 210, 210, 210, 213, 213, 213, 6, 82, 4, + 84, 21, 100, 101, 102, 45, 46, 210, 106, 831, + 832, 628, 204, 205, 206, 210, 100, 101, 102, 43, + 44, 64, 106, 72, 55, 56, 57, 58, 59, 60, + 72, 62, 63, 66, 3, 133, 134, 135, 3, 61, + 82, 209, 84, 73, 3, 3, 3, 3, 3, 133, + 134, 135, 65, 4, 210, 3, 3, 155, 100, 101, + 102, 4, 209, 163, 106, 6, 3, 6, 4, 54, + 52, 155, 67, 73, 132, 3, 199, 61, 33, 34, + 178, 36, 180, 77, 182, 77, 41, 42, 209, 4, + 209, 133, 134, 135, 178, 209, 180, 4, 182, 4, + 4, 927, 211, 6, 202, 203, 204, 209, 209, 207, + 209, 209, 3, 155, 6, 47, 47, 77, 202, 203, + 204, 4, 76, 207, 926, 209, 7, 6, 9, 10, + 11, 12, 13, 14, 210, 16, 178, 210, 180, 68, + 182, 4, 23, 24, 25, 72, 54, 209, 29, 30, + 31, 77, 209, 209, 4, 209, 209, 209, 209, 209, + 202, 203, 204, 209, 4, 207, 7, 209, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 72, 4, 74, + 76, 1007, 23, 24, 25, 214, 72, 210, 29, 30, + 31, 3, 209, 207, 209, 6, 77, 6, 6, 5, + 43, 209, 3, 130, 159, 160, 161, 162, 209, 164, + 165, 210, 6, 168, 169, 170, 75, 163, 173, 174, + 175, 148, 149, 150, 151, 180, 181, 213, 163, 156, + 127, 209, 3, 3, 213, 130, 77, 192, 156, 210, + 75, 196, 4, 213, 130, 72, 209, 153, 214, 129, + 214, 6, 6, 148, 149, 150, 151, 152, 3, 3, + 6, 156, 148, 149, 150, 151, 4, 153, 4, 213, + 156, 209, 199, 200, 201, 202, 203, 204, 205, 206, + 32, 6, 6, 210, 177, 209, 167, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 209, + 209, 4, 3, 130, 199, 200, 201, 202, 203, 204, + 205, 206, 130, 199, 200, 201, 202, 203, 204, 205, + 206, 148, 149, 150, 151, 209, 167, 209, 209, 156, + 148, 149, 150, 151, 209, 209, 6, 210, 156, 209, + 4, 210, 213, 184, 210, 77, 210, 6, 5, 47, + 89, 90, 91, 92, 93, 50, 6, 96, 97, 213, + 199, 6, 129, 127, 103, 104, 105, 209, 209, 207, + 131, 163, 199, 200, 201, 202, 203, 204, 205, 206, + 119, 199, 200, 201, 202, 203, 204, 205, 206, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 210, 106, 107, 108, + 109, 110, 111, 4, 207, 114, 213, 6, 117, 118, + 210, 209, 121, 122, 123, 124, 89, 90, 91, 92, + 93, 210, 6, 96, 97, 56, 56, 3, 213, 213, + 103, 104, 105, 89, 90, 91, 92, 93, 51, 91, + 96, 97, 91, 213, 213, 213, 119, 103, 104, 105, + 89, 90, 91, 92, 93, 213, 213, 96, 97, 91, + 213, 213, 213, 119, 103, 104, 105, 89, 90, 91, + 92, 93, 213, 213, 96, 97, 213, 213, 132, 91, 119, 103, 104, 105, 89, 90, 91, 92, 93, 213, 213, 96, 97, 213, 213, 213, 213, 119, 103, 104, - 105, 213, 213, 213, 91, 213, 91, 213, 213, 91, - 213, 213, 213, 213, 119, 213, 91, 91, 213, 213, - 91, 132, 213, 132, 213, 213, 3, 65, 6, 52, - 6, 213, 213, 213, 213, 213, 53, 213, 6, 213, - 213, 213, 213, 213, 213, 213, 213, 6, 213, 213, - 213, 213, 213, 6, 213, 6, 213, 6, 213, 213, - 213, 6, 213, 213, 213, 6, 213, 213, 6, 6, - 213, 213, 213, 213, 6, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 210, 209, 213, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 213, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 213, + 105, 213, 91, 213, 91, 132, 213, 213, 3, 213, + 213, 213, 213, 213, 119, 213, 213, 213, 213, 213, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 65, 213, 213, 213, 213, 213, 6, + 52, 213, 213, 213, 53, 213, 6, 213, 213, 213, + 213, 213, 213, 6, 213, 213, 213, 210, 209, 6, + 6, 6, 6, 6, 6, 6, 6, 213, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 213, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 213, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 213, 6, 4, 4, 4, 210, 4, 4, 210, 210, - 6, 61, 210, 210, 210, 210, 210, 210, 210, 210, - 6, 210, 210, 210, 210, 210, 6, 210, 210, 210, - 210, 210, 6, 210, 210, 210, 6, 210, 210, 210, - 210, 210, 210, 210, 6, 210, 210, 6, 210, 210, - 210, 210, 210, 4, 210, 210, 210, 210, 210, 210, + 6, 6, 213, 6, 6, 6, 6, 6, 6, 6, + 6, 213, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 213, 6, 4, 4, 4, 210, 4, 4, + 210, 210, 6, 61, 6, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 4, 6, - 4, 213, 213, 213, 210, 210, 210, 210, 210, 210, - 210, 210, 6, 6, 6, 6, 48, 210, 213, 213, - 210, 210, 40, 210, 40, 209, 40, 40, 3, 209, - 3, 60, 210, 210, 569, 588, 333, 116, 646, 201, - 20, 648, 190, 827, 383, 832, 530, 697, 357, 787, - 676, 676, 235, -1, 171, -1, 793, 663, -1, 694, - 408, -1, -1, -1, -1, -1, -1, 410, -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, -1, -1, 307, -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, 474 + 210, 210, 210, 6, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 6, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 6, 210, 210, 6, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 6, 4, 210, + 213, 4, 6, 213, 210, 213, 210, 210, 210, 210, + 210, 210, 210, 6, 6, 4, 213, 213, 210, 210, + 6, 6, 48, 210, 210, 40, 40, 209, 40, 40, + 3, 209, 3, 210, 210, 116, 60, 571, 648, 650, + 201, 334, 20, 590, 532, 829, 384, 699, 358, 834, + 307, 190, 789, 665, 171, 476, 678, 678, -1, 409, + 235, 696, -1, 411, 795 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of @@ -1624,89 +1613,89 @@ static const yytype_int16 yystos[] = 5, 6, 61, 166, 210, 40, 43, 44, 48, 49, 3, 3, 4, 10, 26, 27, 264, 209, 268, 321, 163, 6, 3, 6, 4, 54, 244, 245, 278, 52, - 67, 250, 73, 54, 209, 233, 264, 3, 230, 38, - 242, 61, 199, 213, 257, 281, 77, 77, 209, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 72, 73, 282, 209, 209, 87, 281, 296, 4, - 4, 4, 4, 6, 318, 209, 118, 120, 122, 123, - 209, 209, 282, 282, 5, 6, 208, 301, 311, 312, - 242, 281, 210, 213, 54, 153, 154, 72, 74, 130, - 148, 149, 150, 151, 152, 156, 199, 200, 201, 202, - 203, 204, 205, 206, 211, 208, 213, 208, 213, 208, - 213, 208, 213, 208, 213, 3, 6, 47, 47, 76, - 77, 326, 243, 4, 40, 49, 6, 186, 187, 210, - 210, 81, 253, 247, 248, 281, 281, 68, 251, 240, - 3, 126, 128, 221, 223, 224, 229, 54, 209, 330, - 210, 213, 209, 279, 264, 281, 237, 209, 209, 64, - 210, 278, 209, 72, 242, 281, 281, 296, 83, 85, - 87, 4, 209, 209, 209, 209, 4, 4, 214, 210, - 210, 76, 280, 3, 281, 281, 74, 156, 209, 72, - 129, 282, 282, 282, 282, 282, 282, 282, 282, 282, - 282, 282, 282, 282, 282, 3, 204, 301, 6, 311, - 6, 312, 6, 5, 43, 45, 46, 209, 209, 3, - 209, 210, 6, 33, 42, 163, 163, 278, 75, 254, - 213, 69, 70, 249, 281, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 106, 107, 108, 109, 110, 111, 114, 117, - 118, 121, 122, 123, 124, 225, 127, 209, 210, 213, - 240, 3, 3, 278, 213, 67, 68, 78, 79, 80, - 183, 319, 320, 319, 278, 210, 242, 210, 54, 86, - 83, 85, 281, 281, 75, 281, 4, 3, 299, 281, - 213, 256, 210, 213, 5, 6, 321, 209, 282, 242, - 278, 129, 153, 214, 214, 6, 6, 230, 222, 224, - 3, 328, 329, 6, 4, 4, 209, 261, 262, 263, - 264, 269, 177, 255, 248, 209, 209, 209, 209, 209, - 209, 209, 72, 126, 128, 129, 226, 227, 326, 209, - 230, 32, 327, 223, 210, 210, 209, 6, 6, 4, - 3, 6, 210, 213, 210, 210, 210, 225, 281, 281, - 83, 86, 282, 213, 213, 213, 213, 4, 65, 210, - 4, 77, 242, 278, 210, 210, 282, 50, 47, 210, - 210, 213, 199, 210, 213, 6, 240, 213, 55, 57, - 58, 59, 60, 62, 63, 270, 3, 54, 265, 283, - 284, 285, 286, 287, 288, 289, 290, 257, 6, 89, - 90, 91, 92, 93, 96, 97, 103, 104, 105, 119, - 89, 90, 91, 92, 93, 96, 97, 103, 104, 105, - 119, 89, 90, 91, 92, 93, 96, 97, 103, 104, + 67, 250, 73, 132, 54, 209, 233, 264, 3, 230, + 38, 242, 61, 199, 213, 257, 281, 77, 77, 209, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 72, 73, 282, 209, 209, 87, 281, 296, + 4, 4, 4, 4, 6, 318, 209, 118, 120, 122, + 123, 209, 209, 282, 282, 5, 6, 208, 301, 311, + 312, 242, 281, 210, 213, 54, 153, 154, 72, 74, + 130, 148, 149, 150, 151, 152, 156, 199, 200, 201, + 202, 203, 204, 205, 206, 211, 208, 213, 208, 213, + 208, 213, 208, 213, 208, 213, 3, 6, 47, 47, + 76, 77, 326, 243, 4, 40, 49, 6, 186, 187, + 210, 210, 81, 253, 247, 248, 281, 281, 68, 251, + 4, 240, 3, 126, 128, 221, 223, 224, 229, 54, + 209, 330, 210, 213, 209, 279, 264, 281, 237, 209, + 209, 64, 210, 278, 209, 72, 242, 281, 281, 296, + 83, 85, 87, 4, 209, 209, 209, 209, 4, 4, + 214, 210, 210, 76, 280, 3, 281, 281, 74, 156, + 209, 72, 129, 282, 282, 282, 282, 282, 282, 282, + 282, 282, 282, 282, 282, 282, 282, 3, 204, 301, + 6, 311, 6, 312, 6, 5, 43, 45, 46, 209, + 209, 3, 209, 210, 6, 33, 42, 163, 163, 278, + 75, 254, 213, 69, 70, 249, 281, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 106, 107, 108, 109, 110, 111, + 114, 117, 118, 121, 122, 123, 124, 225, 127, 209, + 210, 213, 240, 3, 3, 278, 213, 67, 68, 78, + 79, 80, 183, 319, 320, 319, 278, 210, 242, 210, + 54, 86, 83, 85, 281, 281, 75, 281, 4, 3, + 299, 281, 213, 256, 210, 213, 5, 6, 321, 209, + 282, 242, 278, 129, 153, 214, 214, 6, 6, 230, + 222, 224, 3, 328, 329, 6, 4, 4, 209, 261, + 262, 263, 264, 269, 177, 255, 248, 209, 209, 209, + 209, 209, 209, 209, 72, 126, 128, 129, 226, 227, + 326, 209, 230, 32, 327, 223, 210, 210, 209, 6, + 6, 4, 3, 6, 210, 213, 210, 210, 210, 225, + 281, 281, 83, 86, 282, 213, 213, 213, 213, 4, + 65, 210, 4, 77, 242, 278, 210, 210, 282, 50, + 47, 210, 210, 213, 199, 210, 213, 6, 240, 213, + 55, 57, 58, 59, 60, 62, 63, 270, 3, 54, + 265, 283, 284, 285, 286, 287, 288, 289, 290, 257, + 6, 89, 90, 91, 92, 93, 96, 97, 103, 104, 105, 119, 89, 90, 91, 92, 93, 96, 97, 103, 104, 105, 119, 89, 90, 91, 92, 93, 96, 97, 103, 104, 105, 119, 89, 90, 91, 92, 93, 96, - 97, 103, 104, 105, 119, 129, 127, 131, 227, 228, - 228, 230, 210, 209, 163, 278, 320, 210, 83, 281, - 210, 207, 313, 4, 301, 207, 302, 305, 310, 313, - 213, 256, 281, 210, 209, 210, 210, 6, 6, 224, - 3, 4, 5, 6, 329, 34, 36, 210, 262, 56, - 56, 3, 213, 51, 259, 210, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 91, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 91, 213, 213, + 97, 103, 104, 105, 119, 89, 90, 91, 92, 93, + 96, 97, 103, 104, 105, 119, 89, 90, 91, 92, + 93, 96, 97, 103, 104, 105, 119, 129, 127, 131, + 227, 228, 228, 230, 210, 209, 163, 278, 320, 210, + 83, 281, 210, 207, 313, 4, 301, 207, 302, 305, + 310, 313, 213, 256, 281, 210, 209, 210, 210, 6, + 6, 224, 3, 4, 5, 6, 329, 34, 36, 210, + 262, 56, 56, 3, 213, 51, 259, 210, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 91, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 91, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 91, 213, 213, 213, 213, 213, 213, 213, 213, 213, - 213, 91, 213, 300, 132, 132, 210, 328, 3, 210, - 6, 213, 213, 256, 213, 213, 210, 319, 6, 265, - 263, 263, 209, 289, 52, 53, 258, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 213, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 213, 6, + 213, 91, 213, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 91, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 91, 213, 300, 132, 132, 210, 328, + 3, 210, 6, 213, 213, 256, 213, 213, 210, 319, + 6, 265, 263, 263, 209, 289, 52, 53, 258, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 213, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 213, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 213, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 213, 6, 4, 4, 210, 326, 4, 4, - 210, 4, 4, 210, 6, 61, 230, 278, 281, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 6, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 6, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 6, 6, 213, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 213, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 213, 6, 4, 4, 210, 326, + 4, 4, 210, 4, 4, 210, 6, 61, 230, 278, + 281, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 6, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 6, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 6, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 6, 210, 213, 256, 213, 213, - 256, 40, 43, 44, 48, 49, 281, 210, 210, 210, - 210, 210, 210, 210, 4, 210, 4, 6, 210, 6, - 6, 213, 256, 213, 256, 326, 6, 45, 46, 6, - 210, 4, 210, 43, 44, 6, 256, 326, 256, 125, - 163, 326, 6, 48, 210, 210, 40, 40, 125, 163, - 326, 209, 40, 40, 3, 209, 210, 3, 326, 210, - 326 + 210, 210, 210, 210, 6, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 6, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 6, 210, 213, 256, + 213, 213, 256, 40, 43, 44, 48, 49, 281, 210, + 210, 210, 210, 210, 210, 210, 4, 210, 4, 6, + 210, 6, 6, 213, 256, 213, 256, 326, 6, 45, + 46, 6, 210, 4, 210, 43, 44, 6, 256, 326, + 256, 125, 163, 326, 6, 48, 210, 210, 40, 40, + 125, 163, 326, 209, 40, 40, 3, 209, 210, 3, + 326, 210, 326 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ @@ -1715,8 +1704,8 @@ static const yytype_int16 yyr1[] = 0, 215, 216, 217, 217, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, - 219, 219, 220, 220, 220, 220, 220, 220, 221, 221, - 222, 222, 223, 223, 224, 224, 224, 224, 225, 225, + 219, 219, 220, 220, 220, 220, 220, 220, 220, 221, + 221, 222, 222, 223, 223, 224, 224, 224, 224, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, @@ -1726,43 +1715,44 @@ static const yytype_int16 yyr1[] = 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, - 226, 226, 227, 227, 227, 227, 228, 228, 229, 229, - 230, 230, 231, 232, 232, 233, 233, 234, 234, 235, - 236, 236, 237, 238, 238, 238, 238, 238, 239, 239, - 239, 240, 240, 240, 240, 241, 241, 242, 243, 244, - 244, 245, 246, 246, 247, 247, 248, 249, 249, 249, - 250, 250, 251, 251, 252, 252, 253, 253, 254, 254, - 255, 255, 256, 256, 257, 257, 258, 258, 259, 259, - 260, 260, 260, 260, 261, 261, 262, 262, 263, 263, - 264, 264, 265, 265, 265, 265, 266, 266, 267, 267, - 268, 269, 269, 270, 270, 270, 270, 270, 270, 270, - 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 225, 226, 226, 227, 227, 227, 227, 228, 228, 229, + 229, 230, 230, 231, 232, 232, 233, 233, 234, 234, + 235, 236, 236, 237, 238, 238, 238, 238, 238, 239, + 239, 239, 240, 240, 240, 240, 241, 241, 242, 243, + 244, 244, 245, 246, 246, 247, 247, 248, 249, 249, + 249, 250, 250, 251, 251, 252, 252, 253, 253, 254, + 254, 255, 255, 256, 256, 257, 257, 258, 258, 259, + 259, 260, 260, 260, 260, 261, 261, 262, 262, 263, + 263, 264, 264, 265, 265, 265, 265, 266, 266, 267, + 267, 268, 269, 269, 270, 270, 270, 270, 270, 270, + 270, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, - 271, 271, 271, 271, 271, 271, 271, 271, 272, 272, - 272, 273, 273, 274, 274, 274, 274, 274, 274, 274, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 272, + 272, 272, 273, 273, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, - 274, 274, 275, 276, 276, 276, 276, 276, 276, 276, + 274, 274, 274, 275, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, - 276, 276, 276, 276, 277, 277, 277, 278, 278, 279, - 279, 280, 280, 281, 281, 281, 281, 281, 282, 282, + 276, 276, 276, 276, 276, 277, 277, 277, 278, 278, + 279, 279, 280, 280, 281, 281, 281, 281, 281, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, - 282, 283, 284, 284, 284, 284, 285, 285, 285, 285, - 286, 286, 287, 287, 288, 288, 289, 289, 289, 289, - 289, 289, 290, 290, 291, 291, 291, 291, 291, 291, + 282, 282, 283, 284, 284, 284, 284, 285, 285, 285, + 285, 286, 286, 287, 287, 288, 288, 289, 289, 289, + 289, 289, 289, 290, 290, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 292, 292, 293, - 294, 294, 295, 295, 295, 295, 296, 296, 297, 298, - 298, 298, 298, 299, 299, 299, 299, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 301, - 301, 301, 301, 302, 302, 302, 303, 304, 304, 305, - 305, 306, 307, 307, 308, 309, 309, 310, 311, 312, - 313, 313, 314, 315, 315, 316, 317, 317, 318, 318, + 291, 291, 291, 291, 291, 291, 291, 291, 292, 292, + 293, 294, 294, 295, 295, 295, 295, 296, 296, 297, + 298, 298, 298, 298, 299, 299, 299, 299, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, + 301, 301, 301, 301, 302, 302, 302, 303, 304, 304, + 305, 305, 306, 307, 307, 308, 309, 309, 310, 311, + 312, 313, 313, 314, 315, 315, 316, 317, 317, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 319, 319, 320, 320, 320, 320, 320, 320, 321, 322, - 322, 323, 323, 324, 324, 325, 325, 326, 326, 327, - 327, 328, 328, 329, 329, 329, 329, 329, 330, 330 + 318, 319, 319, 320, 320, 320, 320, 320, 320, 321, + 322, 322, 323, 323, 324, 324, 325, 325, 326, 326, + 327, 327, 328, 328, 329, 329, 329, 329, 329, 330, + 330 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ @@ -1771,54 +1761,55 @@ static const yytype_int8 yyr2[] = 0, 2, 2, 1, 3, 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, 4, 4, 8, 6, 7, 6, 1, 3, - 1, 3, 1, 1, 4, 4, 6, 6, 1, 1, + 1, 1, 6, 4, 4, 8, 6, 7, 6, 1, + 3, 1, 3, 1, 1, 4, 4, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 6, 4, 1, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, + 1, 1, 6, 4, 1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, - 1, 2, 2, 1, 1, 2, 2, 0, 5, 4, - 1, 3, 4, 6, 5, 3, 0, 3, 2, 5, - 1, 3, 3, 4, 4, 4, 4, 6, 8, 11, - 8, 1, 1, 3, 3, 3, 3, 2, 4, 3, - 3, 9, 3, 0, 1, 3, 2, 1, 1, 0, - 2, 0, 2, 0, 1, 0, 2, 0, 2, 0, - 2, 0, 3, 0, 2, 0, 2, 0, 3, 0, - 1, 2, 1, 1, 1, 3, 1, 1, 2, 4, - 1, 3, 2, 1, 5, 0, 2, 0, 1, 3, - 5, 4, 6, 1, 1, 1, 1, 1, 1, 0, - 2, 2, 2, 2, 3, 2, 2, 2, 2, 3, - 2, 3, 3, 3, 4, 4, 3, 3, 4, 4, - 5, 6, 7, 9, 4, 5, 7, 9, 2, 3, - 2, 3, 3, 4, 2, 3, 3, 4, 2, 2, - 2, 2, 5, 2, 4, 4, 4, 4, 4, 4, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 7, 1, 2, 2, 1, 1, 2, 2, 0, 5, + 4, 1, 3, 4, 6, 5, 3, 0, 3, 2, + 5, 1, 3, 3, 4, 4, 4, 4, 6, 8, + 11, 8, 1, 1, 3, 3, 3, 3, 2, 4, + 3, 3, 9, 3, 0, 1, 3, 2, 1, 1, + 0, 2, 0, 2, 0, 1, 0, 2, 0, 2, + 0, 2, 0, 3, 0, 2, 0, 2, 0, 3, + 0, 1, 2, 1, 1, 1, 3, 1, 1, 2, + 4, 1, 3, 2, 1, 5, 0, 2, 0, 1, + 3, 5, 4, 6, 1, 1, 1, 1, 1, 1, + 0, 2, 2, 2, 2, 3, 2, 2, 2, 2, + 3, 2, 3, 3, 3, 4, 4, 3, 3, 4, + 4, 5, 6, 7, 9, 4, 5, 7, 9, 2, + 3, 2, 3, 3, 4, 2, 3, 3, 4, 2, + 2, 2, 2, 5, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 3, 3, 3, 3, 4, 6, 7, 9, 10, 12, - 12, 13, 14, 15, 16, 12, 13, 15, 16, 3, - 4, 5, 6, 3, 3, 4, 3, 4, 3, 3, - 3, 5, 7, 7, 6, 8, 8, 1, 3, 3, - 5, 3, 1, 1, 1, 1, 1, 1, 3, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 14, 20, 16, 15, 13, 18, 14, 13, 11, - 8, 10, 5, 7, 4, 6, 1, 1, 1, 1, - 1, 1, 1, 3, 3, 4, 5, 4, 3, 2, - 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 6, 3, 4, 3, 3, 5, - 5, 6, 4, 6, 3, 5, 4, 5, 6, 4, - 5, 5, 6, 1, 3, 1, 3, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 3, 1, - 1, 2, 2, 3, 2, 2, 3, 2, 3, 3, - 1, 1, 2, 2, 3, 2, 2, 3, 2, 2, + 4, 3, 3, 3, 3, 4, 6, 7, 9, 10, + 12, 12, 13, 14, 15, 16, 12, 13, 15, 16, + 3, 4, 5, 6, 3, 3, 4, 3, 4, 3, + 3, 3, 5, 7, 7, 6, 8, 8, 1, 3, + 3, 5, 3, 1, 1, 1, 1, 1, 1, 3, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 14, 20, 16, 15, 13, 18, 14, 13, + 11, 8, 10, 5, 7, 4, 6, 1, 1, 1, + 1, 1, 1, 1, 3, 3, 4, 5, 4, 3, + 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 6, 3, 4, 3, 3, + 5, 5, 6, 4, 6, 3, 5, 4, 5, 6, + 4, 5, 5, 6, 1, 3, 1, 3, 1, 1, + 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, + 1, 1, 2, 2, 3, 2, 2, 3, 2, 3, + 3, 1, 1, 2, 2, 3, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 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, 3, 6, 3 + 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, 3, 6, + 3 }; @@ -2386,7 +2377,7 @@ yydestruct (const char *yymsg, { free(((*yyvaluep).str_value)); } -#line 2390 "parser.cpp" +#line 2381 "parser.cpp" break; case YYSYMBOL_STRING: /* STRING */ @@ -2394,7 +2385,7 @@ yydestruct (const char *yymsg, { free(((*yyvaluep).str_value)); } -#line 2398 "parser.cpp" +#line 2389 "parser.cpp" break; case YYSYMBOL_statement_list: /* statement_list */ @@ -2408,7 +2399,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).stmt_array)); } } -#line 2412 "parser.cpp" +#line 2403 "parser.cpp" break; case YYSYMBOL_table_element_array: /* table_element_array */ @@ -2422,7 +2413,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).table_element_array_t)); } } -#line 2426 "parser.cpp" +#line 2417 "parser.cpp" break; case YYSYMBOL_column_def_array: /* column_def_array */ @@ -2436,7 +2427,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).column_def_array_t)); } } -#line 2440 "parser.cpp" +#line 2431 "parser.cpp" break; case YYSYMBOL_column_constraints: /* column_constraints */ @@ -2447,7 +2438,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).column_constraints_t)); } } -#line 2451 "parser.cpp" +#line 2442 "parser.cpp" break; case YYSYMBOL_default_expr: /* default_expr */ @@ -2455,7 +2446,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 2459 "parser.cpp" +#line 2450 "parser.cpp" break; case YYSYMBOL_identifier_array: /* identifier_array */ @@ -2464,7 +2455,7 @@ yydestruct (const char *yymsg, fprintf(stderr, "destroy identifier array\n"); delete (((*yyvaluep).identifier_array_t)); } -#line 2468 "parser.cpp" +#line 2459 "parser.cpp" break; case YYSYMBOL_optional_identifier_array: /* optional_identifier_array */ @@ -2473,7 +2464,7 @@ yydestruct (const char *yymsg, fprintf(stderr, "destroy identifier array\n"); delete (((*yyvaluep).identifier_array_t)); } -#line 2477 "parser.cpp" +#line 2468 "parser.cpp" break; case YYSYMBOL_update_expr_array: /* update_expr_array */ @@ -2487,7 +2478,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).update_expr_array_t)); } } -#line 2491 "parser.cpp" +#line 2482 "parser.cpp" break; case YYSYMBOL_update_expr: /* update_expr */ @@ -2498,7 +2489,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).update_expr_t); } } -#line 2502 "parser.cpp" +#line 2493 "parser.cpp" break; case YYSYMBOL_select_statement: /* select_statement */ @@ -2508,7 +2499,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).select_stmt); } } -#line 2512 "parser.cpp" +#line 2503 "parser.cpp" break; case YYSYMBOL_select_with_paren: /* select_with_paren */ @@ -2518,7 +2509,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).select_stmt); } } -#line 2522 "parser.cpp" +#line 2513 "parser.cpp" break; case YYSYMBOL_select_without_paren: /* select_without_paren */ @@ -2528,7 +2519,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).select_stmt); } } -#line 2532 "parser.cpp" +#line 2523 "parser.cpp" break; case YYSYMBOL_select_clause_with_modifier: /* select_clause_with_modifier */ @@ -2538,7 +2529,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).select_stmt); } } -#line 2542 "parser.cpp" +#line 2533 "parser.cpp" break; case YYSYMBOL_select_clause_without_modifier_paren: /* select_clause_without_modifier_paren */ @@ -2548,7 +2539,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).select_stmt); } } -#line 2552 "parser.cpp" +#line 2543 "parser.cpp" break; case YYSYMBOL_select_clause_without_modifier: /* select_clause_without_modifier */ @@ -2558,7 +2549,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).select_stmt); } } -#line 2562 "parser.cpp" +#line 2553 "parser.cpp" break; case YYSYMBOL_order_by_clause: /* order_by_clause */ @@ -2572,7 +2563,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).order_by_expr_list_t)); } } -#line 2576 "parser.cpp" +#line 2567 "parser.cpp" break; case YYSYMBOL_order_by_expr_list: /* order_by_expr_list */ @@ -2586,7 +2577,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).order_by_expr_list_t)); } } -#line 2590 "parser.cpp" +#line 2581 "parser.cpp" break; case YYSYMBOL_order_by_expr: /* order_by_expr */ @@ -2596,7 +2587,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).order_by_expr_t)->expr_; delete ((*yyvaluep).order_by_expr_t); } -#line 2600 "parser.cpp" +#line 2591 "parser.cpp" break; case YYSYMBOL_limit_expr: /* limit_expr */ @@ -2604,7 +2595,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2608 "parser.cpp" +#line 2599 "parser.cpp" break; case YYSYMBOL_offset_expr: /* offset_expr */ @@ -2612,7 +2603,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2616 "parser.cpp" +#line 2607 "parser.cpp" break; case YYSYMBOL_highlight_clause: /* highlight_clause */ @@ -2626,7 +2617,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).expr_array_t)); } } -#line 2630 "parser.cpp" +#line 2621 "parser.cpp" break; case YYSYMBOL_from_clause: /* from_clause */ @@ -2635,7 +2626,7 @@ yydestruct (const char *yymsg, fprintf(stderr, "destroy table reference\n"); delete (((*yyvaluep).table_reference_t)); } -#line 2639 "parser.cpp" +#line 2630 "parser.cpp" break; case YYSYMBOL_search_clause: /* search_clause */ @@ -2643,7 +2634,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2647 "parser.cpp" +#line 2638 "parser.cpp" break; case YYSYMBOL_optional_search_filter_expr: /* optional_search_filter_expr */ @@ -2651,7 +2642,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2655 "parser.cpp" +#line 2646 "parser.cpp" break; case YYSYMBOL_where_clause: /* where_clause */ @@ -2659,7 +2650,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2663 "parser.cpp" +#line 2654 "parser.cpp" break; case YYSYMBOL_having_clause: /* having_clause */ @@ -2667,7 +2658,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2671 "parser.cpp" +#line 2662 "parser.cpp" break; case YYSYMBOL_group_by_clause: /* group_by_clause */ @@ -2681,7 +2672,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).expr_array_t)); } } -#line 2685 "parser.cpp" +#line 2676 "parser.cpp" break; case YYSYMBOL_table_reference: /* table_reference */ @@ -2690,7 +2681,7 @@ yydestruct (const char *yymsg, fprintf(stderr, "destroy table reference\n"); delete (((*yyvaluep).table_reference_t)); } -#line 2694 "parser.cpp" +#line 2685 "parser.cpp" break; case YYSYMBOL_table_reference_unit: /* table_reference_unit */ @@ -2699,7 +2690,7 @@ yydestruct (const char *yymsg, fprintf(stderr, "destroy table reference\n"); delete (((*yyvaluep).table_reference_t)); } -#line 2703 "parser.cpp" +#line 2694 "parser.cpp" break; case YYSYMBOL_table_reference_name: /* table_reference_name */ @@ -2708,7 +2699,7 @@ yydestruct (const char *yymsg, fprintf(stderr, "destroy table reference\n"); delete (((*yyvaluep).table_reference_t)); } -#line 2712 "parser.cpp" +#line 2703 "parser.cpp" break; case YYSYMBOL_table_name: /* table_name */ @@ -2721,7 +2712,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).table_name_t)); } } -#line 2725 "parser.cpp" +#line 2716 "parser.cpp" break; case YYSYMBOL_table_alias: /* table_alias */ @@ -2730,7 +2721,7 @@ yydestruct (const char *yymsg, fprintf(stderr, "destroy table alias\n"); delete (((*yyvaluep).table_alias_t)); } -#line 2734 "parser.cpp" +#line 2725 "parser.cpp" break; case YYSYMBOL_with_clause: /* with_clause */ @@ -2744,7 +2735,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).with_expr_list_t)); } } -#line 2748 "parser.cpp" +#line 2739 "parser.cpp" break; case YYSYMBOL_with_expr_list: /* with_expr_list */ @@ -2758,7 +2749,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).with_expr_list_t)); } } -#line 2762 "parser.cpp" +#line 2753 "parser.cpp" break; case YYSYMBOL_with_expr: /* with_expr */ @@ -2768,7 +2759,7 @@ yydestruct (const char *yymsg, delete ((*yyvaluep).with_expr_t)->select_; delete ((*yyvaluep).with_expr_t); } -#line 2772 "parser.cpp" +#line 2763 "parser.cpp" break; case YYSYMBOL_join_clause: /* join_clause */ @@ -2777,7 +2768,7 @@ yydestruct (const char *yymsg, fprintf(stderr, "destroy table reference\n"); delete (((*yyvaluep).table_reference_t)); } -#line 2781 "parser.cpp" +#line 2772 "parser.cpp" break; case YYSYMBOL_expr_array: /* expr_array */ @@ -2791,7 +2782,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).expr_array_t)); } } -#line 2795 "parser.cpp" +#line 2786 "parser.cpp" break; case YYSYMBOL_expr_array_list: /* expr_array_list */ @@ -2808,7 +2799,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).expr_array_list_t)); } } -#line 2812 "parser.cpp" +#line 2803 "parser.cpp" break; case YYSYMBOL_expr_alias: /* expr_alias */ @@ -2816,7 +2807,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2820 "parser.cpp" +#line 2811 "parser.cpp" break; case YYSYMBOL_expr: /* expr */ @@ -2824,7 +2815,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2828 "parser.cpp" +#line 2819 "parser.cpp" break; case YYSYMBOL_operand: /* operand */ @@ -2832,7 +2823,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2836 "parser.cpp" +#line 2827 "parser.cpp" break; case YYSYMBOL_match_tensor_expr: /* match_tensor_expr */ @@ -2840,7 +2831,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2844 "parser.cpp" +#line 2835 "parser.cpp" break; case YYSYMBOL_match_vector_expr: /* match_vector_expr */ @@ -2848,7 +2839,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2852 "parser.cpp" +#line 2843 "parser.cpp" break; case YYSYMBOL_match_sparse_expr: /* match_sparse_expr */ @@ -2856,7 +2847,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2860 "parser.cpp" +#line 2851 "parser.cpp" break; case YYSYMBOL_match_text_expr: /* match_text_expr */ @@ -2864,7 +2855,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2868 "parser.cpp" +#line 2859 "parser.cpp" break; case YYSYMBOL_query_expr: /* query_expr */ @@ -2872,7 +2863,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2876 "parser.cpp" +#line 2867 "parser.cpp" break; case YYSYMBOL_fusion_expr: /* fusion_expr */ @@ -2880,7 +2871,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2884 "parser.cpp" +#line 2875 "parser.cpp" break; case YYSYMBOL_sub_search: /* sub_search */ @@ -2888,7 +2879,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2892 "parser.cpp" +#line 2883 "parser.cpp" break; case YYSYMBOL_sub_search_array: /* sub_search_array */ @@ -2902,7 +2893,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).expr_array_t)); } } -#line 2906 "parser.cpp" +#line 2897 "parser.cpp" break; case YYSYMBOL_function_expr: /* function_expr */ @@ -2910,7 +2901,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2914 "parser.cpp" +#line 2905 "parser.cpp" break; case YYSYMBOL_conjunction_expr: /* conjunction_expr */ @@ -2918,7 +2909,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2922 "parser.cpp" +#line 2913 "parser.cpp" break; case YYSYMBOL_between_expr: /* between_expr */ @@ -2926,7 +2917,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2930 "parser.cpp" +#line 2921 "parser.cpp" break; case YYSYMBOL_in_expr: /* in_expr */ @@ -2934,7 +2925,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2938 "parser.cpp" +#line 2929 "parser.cpp" break; case YYSYMBOL_case_expr: /* case_expr */ @@ -2942,7 +2933,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2946 "parser.cpp" +#line 2937 "parser.cpp" break; case YYSYMBOL_case_check_array: /* case_check_array */ @@ -2955,7 +2946,7 @@ yydestruct (const char *yymsg, } } } -#line 2959 "parser.cpp" +#line 2950 "parser.cpp" break; case YYSYMBOL_cast_expr: /* cast_expr */ @@ -2963,7 +2954,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2967 "parser.cpp" +#line 2958 "parser.cpp" break; case YYSYMBOL_subquery_expr: /* subquery_expr */ @@ -2971,7 +2962,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2975 "parser.cpp" +#line 2966 "parser.cpp" break; case YYSYMBOL_column_expr: /* column_expr */ @@ -2979,7 +2970,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).expr_t)); } -#line 2983 "parser.cpp" +#line 2974 "parser.cpp" break; case YYSYMBOL_constant_expr: /* constant_expr */ @@ -2987,7 +2978,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 2991 "parser.cpp" +#line 2982 "parser.cpp" break; case YYSYMBOL_common_array_expr: /* common_array_expr */ @@ -2995,7 +2986,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 2999 "parser.cpp" +#line 2990 "parser.cpp" break; case YYSYMBOL_common_sparse_array_expr: /* common_sparse_array_expr */ @@ -3003,7 +2994,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 3007 "parser.cpp" +#line 2998 "parser.cpp" break; case YYSYMBOL_subarray_array_expr: /* subarray_array_expr */ @@ -3011,7 +3002,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 3015 "parser.cpp" +#line 3006 "parser.cpp" break; case YYSYMBOL_unclosed_subarray_array_expr: /* unclosed_subarray_array_expr */ @@ -3019,7 +3010,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 3023 "parser.cpp" +#line 3014 "parser.cpp" break; case YYSYMBOL_sparse_array_expr: /* sparse_array_expr */ @@ -3027,7 +3018,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 3031 "parser.cpp" +#line 3022 "parser.cpp" break; case YYSYMBOL_long_sparse_array_expr: /* long_sparse_array_expr */ @@ -3035,7 +3026,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 3039 "parser.cpp" +#line 3030 "parser.cpp" break; case YYSYMBOL_unclosed_long_sparse_array_expr: /* unclosed_long_sparse_array_expr */ @@ -3043,7 +3034,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 3047 "parser.cpp" +#line 3038 "parser.cpp" break; case YYSYMBOL_double_sparse_array_expr: /* double_sparse_array_expr */ @@ -3051,7 +3042,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 3055 "parser.cpp" +#line 3046 "parser.cpp" break; case YYSYMBOL_unclosed_double_sparse_array_expr: /* unclosed_double_sparse_array_expr */ @@ -3059,7 +3050,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 3063 "parser.cpp" +#line 3054 "parser.cpp" break; case YYSYMBOL_empty_array_expr: /* empty_array_expr */ @@ -3067,7 +3058,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 3071 "parser.cpp" +#line 3062 "parser.cpp" break; case YYSYMBOL_int_sparse_ele: /* int_sparse_ele */ @@ -3075,7 +3066,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).int_sparse_ele_t)); } -#line 3079 "parser.cpp" +#line 3070 "parser.cpp" break; case YYSYMBOL_float_sparse_ele: /* float_sparse_ele */ @@ -3083,7 +3074,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).float_sparse_ele_t)); } -#line 3087 "parser.cpp" +#line 3078 "parser.cpp" break; case YYSYMBOL_array_expr: /* array_expr */ @@ -3091,7 +3082,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 3095 "parser.cpp" +#line 3086 "parser.cpp" break; case YYSYMBOL_long_array_expr: /* long_array_expr */ @@ -3099,7 +3090,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 3103 "parser.cpp" +#line 3094 "parser.cpp" break; case YYSYMBOL_unclosed_long_array_expr: /* unclosed_long_array_expr */ @@ -3107,7 +3098,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 3111 "parser.cpp" +#line 3102 "parser.cpp" break; case YYSYMBOL_double_array_expr: /* double_array_expr */ @@ -3115,7 +3106,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 3119 "parser.cpp" +#line 3110 "parser.cpp" break; case YYSYMBOL_unclosed_double_array_expr: /* unclosed_double_array_expr */ @@ -3123,7 +3114,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 3127 "parser.cpp" +#line 3118 "parser.cpp" break; case YYSYMBOL_interval_expr: /* interval_expr */ @@ -3131,7 +3122,7 @@ yydestruct (const char *yymsg, { delete (((*yyvaluep).const_expr_t)); } -#line 3135 "parser.cpp" +#line 3126 "parser.cpp" break; case YYSYMBOL_file_path: /* file_path */ @@ -3139,7 +3130,7 @@ yydestruct (const char *yymsg, { free(((*yyvaluep).str_value)); } -#line 3143 "parser.cpp" +#line 3134 "parser.cpp" break; case YYSYMBOL_if_not_exists_info: /* if_not_exists_info */ @@ -3150,7 +3141,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).if_not_exists_info_t)); } } -#line 3154 "parser.cpp" +#line 3145 "parser.cpp" break; case YYSYMBOL_with_index_param_list: /* with_index_param_list */ @@ -3164,7 +3155,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).with_index_param_list_t)); } } -#line 3168 "parser.cpp" +#line 3159 "parser.cpp" break; case YYSYMBOL_optional_table_properties_list: /* optional_table_properties_list */ @@ -3178,7 +3169,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).with_index_param_list_t)); } } -#line 3182 "parser.cpp" +#line 3173 "parser.cpp" break; case YYSYMBOL_index_info: /* index_info */ @@ -3189,7 +3180,7 @@ yydestruct (const char *yymsg, delete (((*yyvaluep).index_info_t)); } } -#line 3193 "parser.cpp" +#line 3184 "parser.cpp" break; default: @@ -3297,7 +3288,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.string_length = 0; } -#line 3301 "parser.cpp" +#line 3292 "parser.cpp" yylsp[0] = yylloc; goto yysetstate; @@ -3512,7 +3503,7 @@ YYLTYPE yylloc = yyloc_default; { result->statements_ptr_ = (yyvsp[-1].stmt_array); } -#line 3516 "parser.cpp" +#line 3507 "parser.cpp" break; case 3: /* statement_list: statement */ @@ -3523,7 +3514,7 @@ YYLTYPE yylloc = yyloc_default; (yyval.stmt_array) = new std::vector(); (yyval.stmt_array)->push_back((yyvsp[0].base_stmt)); } -#line 3527 "parser.cpp" +#line 3518 "parser.cpp" break; case 4: /* statement_list: statement_list ';' statement */ @@ -3534,174 +3525,196 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-2].stmt_array)->push_back((yyvsp[0].base_stmt)); (yyval.stmt_array) = (yyvsp[-2].stmt_array); } -#line 3538 "parser.cpp" +#line 3529 "parser.cpp" break; case 5: /* statement: create_statement */ #line 523 "parser.y" { (yyval.base_stmt) = (yyvsp[0].create_stmt); } -#line 3544 "parser.cpp" +#line 3535 "parser.cpp" break; case 6: /* statement: drop_statement */ #line 524 "parser.y" { (yyval.base_stmt) = (yyvsp[0].drop_stmt); } -#line 3550 "parser.cpp" +#line 3541 "parser.cpp" break; case 7: /* statement: copy_statement */ #line 525 "parser.y" { (yyval.base_stmt) = (yyvsp[0].copy_stmt); } -#line 3556 "parser.cpp" +#line 3547 "parser.cpp" break; case 8: /* statement: show_statement */ #line 526 "parser.y" { (yyval.base_stmt) = (yyvsp[0].show_stmt); } -#line 3562 "parser.cpp" +#line 3553 "parser.cpp" break; case 9: /* statement: select_statement */ #line 527 "parser.y" { (yyval.base_stmt) = (yyvsp[0].select_stmt); } -#line 3568 "parser.cpp" +#line 3559 "parser.cpp" break; case 10: /* statement: delete_statement */ #line 528 "parser.y" { (yyval.base_stmt) = (yyvsp[0].delete_stmt); } -#line 3574 "parser.cpp" +#line 3565 "parser.cpp" break; case 11: /* statement: update_statement */ #line 529 "parser.y" { (yyval.base_stmt) = (yyvsp[0].update_stmt); } -#line 3580 "parser.cpp" +#line 3571 "parser.cpp" break; case 12: /* statement: insert_statement */ #line 530 "parser.y" { (yyval.base_stmt) = (yyvsp[0].insert_stmt); } -#line 3586 "parser.cpp" +#line 3577 "parser.cpp" break; case 13: /* statement: explain_statement */ #line 531 "parser.y" { (yyval.base_stmt) = (yyvsp[0].explain_stmt); } -#line 3592 "parser.cpp" +#line 3583 "parser.cpp" break; case 14: /* statement: flush_statement */ #line 532 "parser.y" { (yyval.base_stmt) = (yyvsp[0].flush_stmt); } -#line 3598 "parser.cpp" +#line 3589 "parser.cpp" break; case 15: /* statement: optimize_statement */ #line 533 "parser.y" { (yyval.base_stmt) = (yyvsp[0].optimize_stmt); } -#line 3604 "parser.cpp" +#line 3595 "parser.cpp" break; case 16: /* statement: command_statement */ #line 534 "parser.y" { (yyval.base_stmt) = (yyvsp[0].command_stmt); } -#line 3610 "parser.cpp" +#line 3601 "parser.cpp" break; case 17: /* statement: compact_statement */ #line 535 "parser.y" { (yyval.base_stmt) = (yyvsp[0].compact_stmt); } -#line 3616 "parser.cpp" +#line 3607 "parser.cpp" break; case 18: /* statement: admin_statement */ #line 536 "parser.y" { (yyval.base_stmt) = (yyvsp[0].admin_stmt); } -#line 3622 "parser.cpp" +#line 3613 "parser.cpp" break; case 19: /* statement: alter_statement */ #line 537 "parser.y" { (yyval.base_stmt) = (yyvsp[0].alter_stmt); } -#line 3628 "parser.cpp" +#line 3619 "parser.cpp" break; case 20: /* explainable_statement: create_statement */ #line 539 "parser.y" { (yyval.base_stmt) = (yyvsp[0].create_stmt); } -#line 3634 "parser.cpp" +#line 3625 "parser.cpp" break; case 21: /* explainable_statement: drop_statement */ #line 540 "parser.y" { (yyval.base_stmt) = (yyvsp[0].drop_stmt); } -#line 3640 "parser.cpp" +#line 3631 "parser.cpp" break; case 22: /* explainable_statement: copy_statement */ #line 541 "parser.y" { (yyval.base_stmt) = (yyvsp[0].copy_stmt); } -#line 3646 "parser.cpp" +#line 3637 "parser.cpp" break; case 23: /* explainable_statement: show_statement */ #line 542 "parser.y" { (yyval.base_stmt) = (yyvsp[0].show_stmt); } -#line 3652 "parser.cpp" +#line 3643 "parser.cpp" break; case 24: /* explainable_statement: select_statement */ #line 543 "parser.y" { (yyval.base_stmt) = (yyvsp[0].select_stmt); } -#line 3658 "parser.cpp" +#line 3649 "parser.cpp" break; case 25: /* explainable_statement: delete_statement */ #line 544 "parser.y" { (yyval.base_stmt) = (yyvsp[0].delete_stmt); } -#line 3664 "parser.cpp" +#line 3655 "parser.cpp" break; case 26: /* explainable_statement: update_statement */ #line 545 "parser.y" { (yyval.base_stmt) = (yyvsp[0].update_stmt); } -#line 3670 "parser.cpp" +#line 3661 "parser.cpp" break; case 27: /* explainable_statement: insert_statement */ #line 546 "parser.y" { (yyval.base_stmt) = (yyvsp[0].insert_stmt); } -#line 3676 "parser.cpp" +#line 3667 "parser.cpp" break; case 28: /* explainable_statement: flush_statement */ #line 547 "parser.y" { (yyval.base_stmt) = (yyvsp[0].flush_stmt); } -#line 3682 "parser.cpp" +#line 3673 "parser.cpp" break; case 29: /* explainable_statement: optimize_statement */ #line 548 "parser.y" { (yyval.base_stmt) = (yyvsp[0].optimize_stmt); } -#line 3688 "parser.cpp" +#line 3679 "parser.cpp" break; case 30: /* explainable_statement: command_statement */ #line 549 "parser.y" { (yyval.base_stmt) = (yyvsp[0].command_stmt); } -#line 3694 "parser.cpp" +#line 3685 "parser.cpp" break; case 31: /* explainable_statement: compact_statement */ #line 550 "parser.y" { (yyval.base_stmt) = (yyvsp[0].compact_stmt); } -#line 3700 "parser.cpp" +#line 3691 "parser.cpp" break; - case 32: /* create_statement: CREATE DATABASE if_not_exists IDENTIFIER */ + case 32: /* create_statement: CREATE DATABASE if_not_exists IDENTIFIER COMMENT STRING */ #line 557 "parser.y" - { + { + (yyval.create_stmt) = new infinity::CreateStatement(); + std::shared_ptr create_schema_info = std::make_shared(); + + ParserHelper::ToLower((yyvsp[-2].str_value)); + create_schema_info->schema_name_ = (yyvsp[-2].str_value); + free((yyvsp[-2].str_value)); + if(create_schema_info->schema_name_.empty()) { + yyerror(&yyloc, scanner, result, "Empty database name is given."); + YYERROR; + } + + (yyval.create_stmt)->create_info_ = create_schema_info; + (yyval.create_stmt)->create_info_->conflict_type_ = (yyvsp[-3].bool_value) ? infinity::ConflictType::kIgnore : infinity::ConflictType::kError; + (yyval.create_stmt)->create_info_->comment_ = (yyvsp[0].str_value); + free((yyvsp[0].str_value)); +} +#line 3713 "parser.cpp" + break; + + case 33: /* create_statement: CREATE DATABASE if_not_exists IDENTIFIER */ +#line 574 "parser.y" + { (yyval.create_stmt) = new infinity::CreateStatement(); std::shared_ptr create_schema_info = std::make_shared(); @@ -3716,11 +3729,11 @@ 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 3720 "parser.cpp" +#line 3733 "parser.cpp" break; - case 33: /* create_statement: CREATE COLLECTION if_not_exists table_name */ -#line 574 "parser.y" + case 34: /* create_statement: CREATE COLLECTION if_not_exists table_name */ +#line 591 "parser.y" { (yyval.create_stmt) = new infinity::CreateStatement(); std::shared_ptr create_collection_info = std::make_shared(); @@ -3734,11 +3747,11 @@ 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 3738 "parser.cpp" +#line 3751 "parser.cpp" break; - case 34: /* create_statement: CREATE TABLE if_not_exists table_name '(' table_element_array ')' optional_table_properties_list */ -#line 590 "parser.y" + case 35: /* create_statement: CREATE TABLE if_not_exists table_name '(' table_element_array ')' optional_table_properties_list */ +#line 607 "parser.y" { (yyval.create_stmt) = new infinity::CreateStatement(); std::shared_ptr create_table_info = std::make_shared(); @@ -3767,11 +3780,11 @@ 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 3771 "parser.cpp" +#line 3784 "parser.cpp" break; - case 35: /* create_statement: CREATE TABLE if_not_exists table_name AS select_statement */ -#line 619 "parser.y" + case 36: /* create_statement: CREATE TABLE if_not_exists table_name AS select_statement */ +#line 636 "parser.y" { (yyval.create_stmt) = new infinity::CreateStatement(); std::shared_ptr create_table_info = std::make_shared(); @@ -3787,11 +3800,11 @@ YYLTYPE yylloc = yyloc_default; create_table_info->select_ = (yyvsp[0].select_stmt); (yyval.create_stmt)->create_info_ = create_table_info; } -#line 3791 "parser.cpp" +#line 3804 "parser.cpp" break; - case 36: /* create_statement: CREATE VIEW if_not_exists table_name optional_identifier_array AS select_statement */ -#line 635 "parser.y" + case 37: /* create_statement: CREATE VIEW if_not_exists table_name optional_identifier_array AS select_statement */ +#line 652 "parser.y" { (yyval.create_stmt) = new infinity::CreateStatement(); std::shared_ptr create_view_info = std::make_shared(); @@ -3808,11 +3821,11 @@ 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 3812 "parser.cpp" +#line 3825 "parser.cpp" break; - case 37: /* create_statement: CREATE INDEX if_not_exists_info ON table_name index_info */ -#line 653 "parser.y" + case 38: /* create_statement: CREATE INDEX if_not_exists_info ON table_name index_info */ +#line 670 "parser.y" { std::shared_ptr create_index_info = std::make_shared(); if((yyvsp[-1].table_name_t)->schema_name_ptr_ != nullptr) { @@ -3841,63 +3854,63 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt) = new infinity::CreateStatement(); (yyval.create_stmt)->create_info_ = create_index_info; } -#line 3845 "parser.cpp" +#line 3858 "parser.cpp" break; - case 38: /* table_element_array: table_element */ -#line 682 "parser.y" + case 39: /* table_element_array: table_element */ +#line 699 "parser.y" { (yyval.table_element_array_t) = new std::vector(); (yyval.table_element_array_t)->push_back((yyvsp[0].table_element_t)); } -#line 3854 "parser.cpp" +#line 3867 "parser.cpp" break; - case 39: /* table_element_array: table_element_array ',' table_element */ -#line 686 "parser.y" + case 40: /* table_element_array: table_element_array ',' table_element */ +#line 703 "parser.y" { (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 3863 "parser.cpp" +#line 3876 "parser.cpp" break; - case 40: /* column_def_array: table_column */ -#line 691 "parser.y" + case 41: /* column_def_array: table_column */ +#line 708 "parser.y" { (yyval.column_def_array_t) = new std::vector(); (yyval.column_def_array_t)->push_back((yyvsp[0].table_column_t)); } -#line 3872 "parser.cpp" +#line 3885 "parser.cpp" break; - case 41: /* column_def_array: column_def_array ',' table_column */ -#line 695 "parser.y" + case 42: /* column_def_array: column_def_array ',' table_column */ +#line 712 "parser.y" { (yyvsp[-2].column_def_array_t)->push_back((yyvsp[0].table_column_t)); (yyval.column_def_array_t) = (yyvsp[-2].column_def_array_t); } -#line 3881 "parser.cpp" +#line 3894 "parser.cpp" break; - case 42: /* table_element: table_column */ -#line 701 "parser.y" + case 43: /* table_element: table_column */ +#line 718 "parser.y" { (yyval.table_element_t) = (yyvsp[0].table_column_t); } -#line 3889 "parser.cpp" +#line 3902 "parser.cpp" break; - case 43: /* table_element: table_constraint */ -#line 704 "parser.y" + case 44: /* table_element: table_constraint */ +#line 721 "parser.y" { (yyval.table_element_t) = (yyvsp[0].table_constraint_t); } -#line 3897 "parser.cpp" +#line 3910 "parser.cpp" break; - case 44: /* table_column: IDENTIFIER column_type with_index_param_list default_expr */ -#line 711 "parser.y" + case 45: /* table_column: IDENTIFIER column_type with_index_param_list default_expr */ +#line 728 "parser.y" { std::shared_ptr type_info_ptr{nullptr}; std::vector> index_param_list = infinity::InitParameter::MakeInitParameterList((yyvsp[-1].with_index_param_list_t)); @@ -3949,11 +3962,11 @@ YYLTYPE yylloc = yyloc_default; } */ } -#line 3953 "parser.cpp" +#line 3966 "parser.cpp" break; - case 45: /* table_column: IDENTIFIER column_type column_constraints default_expr */ -#line 762 "parser.y" + case 46: /* table_column: IDENTIFIER column_type column_constraints default_expr */ +#line 779 "parser.y" { std::shared_ptr type_info_ptr{nullptr}; switch((yyvsp[-2].column_type_t).logical_type_) { @@ -3991,11 +4004,11 @@ YYLTYPE yylloc = yyloc_default; } */ } -#line 3995 "parser.cpp" +#line 4008 "parser.cpp" break; - case 46: /* table_column: IDENTIFIER column_type with_index_param_list default_expr COMMENT STRING */ -#line 799 "parser.y" + case 47: /* table_column: IDENTIFIER column_type with_index_param_list default_expr COMMENT STRING */ +#line 816 "parser.y" { std::shared_ptr type_info_ptr{nullptr}; std::vector> index_param_list = infinity::InitParameter::MakeInitParameterList((yyvsp[-3].with_index_param_list_t)); @@ -4048,11 +4061,11 @@ YYLTYPE yylloc = yyloc_default; } */ } -#line 4052 "parser.cpp" +#line 4065 "parser.cpp" break; - case 47: /* table_column: IDENTIFIER column_type column_constraints default_expr COMMENT STRING */ -#line 851 "parser.y" + case 48: /* table_column: IDENTIFIER column_type column_constraints default_expr COMMENT STRING */ +#line 868 "parser.y" { std::shared_ptr type_info_ptr{nullptr}; switch((yyvsp[-4].column_type_t).logical_type_) { @@ -4091,572 +4104,572 @@ YYLTYPE yylloc = yyloc_default; } */ } -#line 4095 "parser.cpp" +#line 4108 "parser.cpp" break; - case 48: /* column_type: BOOLEAN */ -#line 891 "parser.y" + case 49: /* column_type: BOOLEAN */ +#line 908 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kBoolean, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4101 "parser.cpp" +#line 4114 "parser.cpp" break; - case 49: /* column_type: TINYINT */ -#line 892 "parser.y" + case 50: /* column_type: TINYINT */ +#line 909 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTinyInt, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4107 "parser.cpp" +#line 4120 "parser.cpp" break; - case 50: /* column_type: SMALLINT */ -#line 893 "parser.y" + case 51: /* column_type: SMALLINT */ +#line 910 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kSmallInt, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4113 "parser.cpp" +#line 4126 "parser.cpp" break; - case 51: /* column_type: INTEGER */ -#line 894 "parser.y" + case 52: /* column_type: INTEGER */ +#line 911 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kInteger, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4119 "parser.cpp" +#line 4132 "parser.cpp" break; - case 52: /* column_type: INT */ -#line 895 "parser.y" + case 53: /* column_type: INT */ +#line 912 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kInteger, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4125 "parser.cpp" +#line 4138 "parser.cpp" break; - case 53: /* column_type: BIGINT */ -#line 896 "parser.y" + case 54: /* column_type: BIGINT */ +#line 913 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kBigInt, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4131 "parser.cpp" +#line 4144 "parser.cpp" break; - case 54: /* column_type: HUGEINT */ -#line 897 "parser.y" + case 55: /* column_type: HUGEINT */ +#line 914 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kHugeInt, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4137 "parser.cpp" +#line 4150 "parser.cpp" break; - case 55: /* column_type: FLOAT */ -#line 898 "parser.y" + case 56: /* column_type: FLOAT */ +#line 915 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kFloat, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4143 "parser.cpp" +#line 4156 "parser.cpp" break; - case 56: /* column_type: REAL */ -#line 899 "parser.y" + case 57: /* column_type: REAL */ +#line 916 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kFloat, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4149 "parser.cpp" +#line 4162 "parser.cpp" break; - case 57: /* column_type: DOUBLE */ -#line 900 "parser.y" + case 58: /* column_type: DOUBLE */ +#line 917 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kDouble, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4155 "parser.cpp" +#line 4168 "parser.cpp" break; - case 58: /* column_type: FLOAT16 */ -#line 901 "parser.y" + case 59: /* column_type: FLOAT16 */ +#line 918 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kFloat16, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4161 "parser.cpp" +#line 4174 "parser.cpp" break; - case 59: /* column_type: BFLOAT16 */ -#line 902 "parser.y" + case 60: /* column_type: BFLOAT16 */ +#line 919 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kBFloat16, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4167 "parser.cpp" +#line 4180 "parser.cpp" break; - case 60: /* column_type: DATE */ -#line 903 "parser.y" + case 61: /* column_type: DATE */ +#line 920 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kDate, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4173 "parser.cpp" +#line 4186 "parser.cpp" break; - case 61: /* column_type: TIME */ -#line 904 "parser.y" + case 62: /* column_type: TIME */ +#line 921 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTime, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4179 "parser.cpp" +#line 4192 "parser.cpp" break; - case 62: /* column_type: DATETIME */ -#line 905 "parser.y" + case 63: /* column_type: DATETIME */ +#line 922 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kDateTime, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4185 "parser.cpp" +#line 4198 "parser.cpp" break; - case 63: /* column_type: TIMESTAMP */ -#line 906 "parser.y" + case 64: /* column_type: TIMESTAMP */ +#line 923 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTimestamp, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4191 "parser.cpp" +#line 4204 "parser.cpp" break; - case 64: /* column_type: UUID */ -#line 907 "parser.y" + case 65: /* column_type: UUID */ +#line 924 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kUuid, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4197 "parser.cpp" +#line 4210 "parser.cpp" break; - case 65: /* column_type: POINT */ -#line 908 "parser.y" + case 66: /* column_type: POINT */ +#line 925 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kPoint, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4203 "parser.cpp" +#line 4216 "parser.cpp" break; - case 66: /* column_type: LINE */ -#line 909 "parser.y" + case 67: /* column_type: LINE */ +#line 926 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kLine, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4209 "parser.cpp" +#line 4222 "parser.cpp" break; - case 67: /* column_type: LSEG */ -#line 910 "parser.y" + case 68: /* column_type: LSEG */ +#line 927 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kLineSeg, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4215 "parser.cpp" +#line 4228 "parser.cpp" break; - case 68: /* column_type: BOX */ -#line 911 "parser.y" + case 69: /* column_type: BOX */ +#line 928 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kBox, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4221 "parser.cpp" +#line 4234 "parser.cpp" break; - case 69: /* column_type: CIRCLE */ -#line 914 "parser.y" + case 70: /* column_type: CIRCLE */ +#line 931 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kCircle, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4227 "parser.cpp" +#line 4240 "parser.cpp" break; - case 70: /* column_type: VARCHAR */ -#line 916 "parser.y" + case 71: /* column_type: VARCHAR */ +#line 933 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kVarchar, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4233 "parser.cpp" +#line 4246 "parser.cpp" break; - case 71: /* column_type: DECIMAL '(' LONG_VALUE ',' LONG_VALUE ')' */ -#line 917 "parser.y" + case 72: /* column_type: DECIMAL '(' LONG_VALUE ',' LONG_VALUE ')' */ +#line 934 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kDecimal, 0, (yyvsp[-3].long_value), (yyvsp[-1].long_value), infinity::EmbeddingDataType::kElemInvalid}; } -#line 4239 "parser.cpp" +#line 4252 "parser.cpp" break; - case 72: /* column_type: DECIMAL '(' LONG_VALUE ')' */ -#line 918 "parser.y" + case 73: /* column_type: DECIMAL '(' LONG_VALUE ')' */ +#line 935 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kDecimal, 0, (yyvsp[-1].long_value), 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4245 "parser.cpp" +#line 4258 "parser.cpp" break; - case 73: /* column_type: DECIMAL */ -#line 919 "parser.y" + case 74: /* column_type: DECIMAL */ +#line 936 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kDecimal, 0, 0, 0, infinity::EmbeddingDataType::kElemInvalid}; } -#line 4251 "parser.cpp" +#line 4264 "parser.cpp" break; - case 74: /* column_type: EMBEDDING '(' BIT ',' LONG_VALUE ')' */ -#line 922 "parser.y" + case 75: /* column_type: EMBEDDING '(' BIT ',' LONG_VALUE ')' */ +#line 939 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemBit}; } -#line 4257 "parser.cpp" +#line 4270 "parser.cpp" break; - case 75: /* column_type: EMBEDDING '(' TINYINT ',' LONG_VALUE ')' */ -#line 923 "parser.y" + case 76: /* column_type: EMBEDDING '(' TINYINT ',' LONG_VALUE ')' */ +#line 940 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt8}; } -#line 4263 "parser.cpp" +#line 4276 "parser.cpp" break; - case 76: /* column_type: EMBEDDING '(' SMALLINT ',' LONG_VALUE ')' */ -#line 924 "parser.y" + case 77: /* column_type: EMBEDDING '(' SMALLINT ',' LONG_VALUE ')' */ +#line 941 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt16}; } -#line 4269 "parser.cpp" +#line 4282 "parser.cpp" break; - case 77: /* column_type: EMBEDDING '(' INTEGER ',' LONG_VALUE ')' */ -#line 925 "parser.y" + case 78: /* column_type: EMBEDDING '(' INTEGER ',' LONG_VALUE ')' */ +#line 942 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt32}; } -#line 4275 "parser.cpp" +#line 4288 "parser.cpp" break; - case 78: /* column_type: EMBEDDING '(' INT ',' LONG_VALUE ')' */ -#line 926 "parser.y" + case 79: /* column_type: EMBEDDING '(' INT ',' LONG_VALUE ')' */ +#line 943 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt32}; } -#line 4281 "parser.cpp" +#line 4294 "parser.cpp" break; - case 79: /* column_type: EMBEDDING '(' BIGINT ',' LONG_VALUE ')' */ -#line 927 "parser.y" + case 80: /* column_type: EMBEDDING '(' BIGINT ',' LONG_VALUE ')' */ +#line 944 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt64}; } -#line 4287 "parser.cpp" +#line 4300 "parser.cpp" break; - case 80: /* column_type: EMBEDDING '(' FLOAT ',' LONG_VALUE ')' */ -#line 928 "parser.y" + case 81: /* column_type: EMBEDDING '(' FLOAT ',' LONG_VALUE ')' */ +#line 945 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemFloat}; } -#line 4293 "parser.cpp" +#line 4306 "parser.cpp" break; - case 81: /* column_type: EMBEDDING '(' DOUBLE ',' LONG_VALUE ')' */ -#line 929 "parser.y" + case 82: /* column_type: EMBEDDING '(' DOUBLE ',' LONG_VALUE ')' */ +#line 946 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemDouble}; } -#line 4299 "parser.cpp" +#line 4312 "parser.cpp" break; - case 82: /* column_type: EMBEDDING '(' FLOAT16 ',' LONG_VALUE ')' */ -#line 930 "parser.y" + case 83: /* column_type: EMBEDDING '(' FLOAT16 ',' LONG_VALUE ')' */ +#line 947 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemFloat16}; } -#line 4305 "parser.cpp" +#line 4318 "parser.cpp" break; - case 83: /* column_type: EMBEDDING '(' BFLOAT16 ',' LONG_VALUE ')' */ -#line 931 "parser.y" + case 84: /* column_type: EMBEDDING '(' BFLOAT16 ',' LONG_VALUE ')' */ +#line 948 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemBFloat16}; } -#line 4311 "parser.cpp" +#line 4324 "parser.cpp" break; - case 84: /* column_type: EMBEDDING '(' UNSIGNED TINYINT ',' LONG_VALUE ')' */ -#line 932 "parser.y" + case 85: /* column_type: EMBEDDING '(' UNSIGNED TINYINT ',' LONG_VALUE ')' */ +#line 949 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemUInt8}; } -#line 4317 "parser.cpp" +#line 4330 "parser.cpp" break; - case 85: /* column_type: MULTIVECTOR '(' BIT ',' LONG_VALUE ')' */ -#line 933 "parser.y" + case 86: /* column_type: MULTIVECTOR '(' BIT ',' LONG_VALUE ')' */ +#line 950 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kMultiVector, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemBit}; } -#line 4323 "parser.cpp" +#line 4336 "parser.cpp" break; - case 86: /* column_type: MULTIVECTOR '(' TINYINT ',' LONG_VALUE ')' */ -#line 934 "parser.y" + case 87: /* column_type: MULTIVECTOR '(' TINYINT ',' LONG_VALUE ')' */ +#line 951 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kMultiVector, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt8}; } -#line 4329 "parser.cpp" +#line 4342 "parser.cpp" break; - case 87: /* column_type: MULTIVECTOR '(' SMALLINT ',' LONG_VALUE ')' */ -#line 935 "parser.y" + case 88: /* column_type: MULTIVECTOR '(' SMALLINT ',' LONG_VALUE ')' */ +#line 952 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kMultiVector, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt16}; } -#line 4335 "parser.cpp" +#line 4348 "parser.cpp" break; - case 88: /* column_type: MULTIVECTOR '(' INTEGER ',' LONG_VALUE ')' */ -#line 936 "parser.y" + case 89: /* column_type: MULTIVECTOR '(' INTEGER ',' LONG_VALUE ')' */ +#line 953 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kMultiVector, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt32}; } -#line 4341 "parser.cpp" +#line 4354 "parser.cpp" break; - case 89: /* column_type: MULTIVECTOR '(' INT ',' LONG_VALUE ')' */ -#line 937 "parser.y" + case 90: /* column_type: MULTIVECTOR '(' INT ',' LONG_VALUE ')' */ +#line 954 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kMultiVector, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt32}; } -#line 4347 "parser.cpp" +#line 4360 "parser.cpp" break; - case 90: /* column_type: MULTIVECTOR '(' BIGINT ',' LONG_VALUE ')' */ -#line 938 "parser.y" + case 91: /* column_type: MULTIVECTOR '(' BIGINT ',' LONG_VALUE ')' */ +#line 955 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kMultiVector, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt64}; } -#line 4353 "parser.cpp" +#line 4366 "parser.cpp" break; - case 91: /* column_type: MULTIVECTOR '(' FLOAT ',' LONG_VALUE ')' */ -#line 939 "parser.y" + case 92: /* column_type: MULTIVECTOR '(' FLOAT ',' LONG_VALUE ')' */ +#line 956 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kMultiVector, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemFloat}; } -#line 4359 "parser.cpp" +#line 4372 "parser.cpp" break; - case 92: /* column_type: MULTIVECTOR '(' DOUBLE ',' LONG_VALUE ')' */ -#line 940 "parser.y" + case 93: /* column_type: MULTIVECTOR '(' DOUBLE ',' LONG_VALUE ')' */ +#line 957 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kMultiVector, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemDouble}; } -#line 4365 "parser.cpp" +#line 4378 "parser.cpp" break; - case 93: /* column_type: MULTIVECTOR '(' FLOAT16 ',' LONG_VALUE ')' */ -#line 941 "parser.y" + case 94: /* column_type: MULTIVECTOR '(' FLOAT16 ',' LONG_VALUE ')' */ +#line 958 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kMultiVector, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemFloat16}; } -#line 4371 "parser.cpp" +#line 4384 "parser.cpp" break; - case 94: /* column_type: MULTIVECTOR '(' BFLOAT16 ',' LONG_VALUE ')' */ -#line 942 "parser.y" + case 95: /* column_type: MULTIVECTOR '(' BFLOAT16 ',' LONG_VALUE ')' */ +#line 959 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kMultiVector, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemBFloat16}; } -#line 4377 "parser.cpp" +#line 4390 "parser.cpp" break; - case 95: /* column_type: MULTIVECTOR '(' UNSIGNED TINYINT ',' LONG_VALUE ')' */ -#line 943 "parser.y" + case 96: /* column_type: MULTIVECTOR '(' UNSIGNED TINYINT ',' LONG_VALUE ')' */ +#line 960 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kMultiVector, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemUInt8}; } -#line 4383 "parser.cpp" +#line 4396 "parser.cpp" break; - case 96: /* column_type: TENSOR '(' BIT ',' LONG_VALUE ')' */ -#line 944 "parser.y" + case 97: /* column_type: TENSOR '(' BIT ',' LONG_VALUE ')' */ +#line 961 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemBit}; } -#line 4389 "parser.cpp" +#line 4402 "parser.cpp" break; - case 97: /* column_type: TENSOR '(' TINYINT ',' LONG_VALUE ')' */ -#line 945 "parser.y" + case 98: /* column_type: TENSOR '(' TINYINT ',' LONG_VALUE ')' */ +#line 962 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt8}; } -#line 4395 "parser.cpp" +#line 4408 "parser.cpp" break; - case 98: /* column_type: TENSOR '(' SMALLINT ',' LONG_VALUE ')' */ -#line 946 "parser.y" + case 99: /* column_type: TENSOR '(' SMALLINT ',' LONG_VALUE ')' */ +#line 963 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt16}; } -#line 4401 "parser.cpp" +#line 4414 "parser.cpp" break; - case 99: /* column_type: TENSOR '(' INTEGER ',' LONG_VALUE ')' */ -#line 947 "parser.y" + case 100: /* column_type: TENSOR '(' INTEGER ',' LONG_VALUE ')' */ +#line 964 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt32}; } -#line 4407 "parser.cpp" +#line 4420 "parser.cpp" break; - case 100: /* column_type: TENSOR '(' INT ',' LONG_VALUE ')' */ -#line 948 "parser.y" + case 101: /* column_type: TENSOR '(' INT ',' LONG_VALUE ')' */ +#line 965 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt32}; } -#line 4413 "parser.cpp" +#line 4426 "parser.cpp" break; - case 101: /* column_type: TENSOR '(' BIGINT ',' LONG_VALUE ')' */ -#line 949 "parser.y" + case 102: /* column_type: TENSOR '(' BIGINT ',' LONG_VALUE ')' */ +#line 966 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt64}; } -#line 4419 "parser.cpp" +#line 4432 "parser.cpp" break; - case 102: /* column_type: TENSOR '(' FLOAT ',' LONG_VALUE ')' */ -#line 950 "parser.y" + case 103: /* column_type: TENSOR '(' FLOAT ',' LONG_VALUE ')' */ +#line 967 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemFloat}; } -#line 4425 "parser.cpp" +#line 4438 "parser.cpp" break; - case 103: /* column_type: TENSOR '(' DOUBLE ',' LONG_VALUE ')' */ -#line 951 "parser.y" + case 104: /* column_type: TENSOR '(' DOUBLE ',' LONG_VALUE ')' */ +#line 968 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemDouble}; } -#line 4431 "parser.cpp" +#line 4444 "parser.cpp" break; - case 104: /* column_type: TENSOR '(' FLOAT16 ',' LONG_VALUE ')' */ -#line 952 "parser.y" + case 105: /* column_type: TENSOR '(' FLOAT16 ',' LONG_VALUE ')' */ +#line 969 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemFloat16}; } -#line 4437 "parser.cpp" +#line 4450 "parser.cpp" break; - case 105: /* column_type: TENSOR '(' BFLOAT16 ',' LONG_VALUE ')' */ -#line 953 "parser.y" + case 106: /* column_type: TENSOR '(' BFLOAT16 ',' LONG_VALUE ')' */ +#line 970 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemBFloat16}; } -#line 4443 "parser.cpp" +#line 4456 "parser.cpp" break; - case 106: /* column_type: TENSOR '(' UNSIGNED TINYINT ',' LONG_VALUE ')' */ -#line 954 "parser.y" + case 107: /* column_type: TENSOR '(' UNSIGNED TINYINT ',' LONG_VALUE ')' */ +#line 971 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensor, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemUInt8}; } -#line 4449 "parser.cpp" +#line 4462 "parser.cpp" break; - case 107: /* column_type: TENSORARRAY '(' BIT ',' LONG_VALUE ')' */ -#line 955 "parser.y" + case 108: /* column_type: TENSORARRAY '(' BIT ',' LONG_VALUE ')' */ +#line 972 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensorArray, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemBit}; } -#line 4455 "parser.cpp" +#line 4468 "parser.cpp" break; - case 108: /* column_type: TENSORARRAY '(' TINYINT ',' LONG_VALUE ')' */ -#line 956 "parser.y" + case 109: /* column_type: TENSORARRAY '(' TINYINT ',' LONG_VALUE ')' */ +#line 973 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensorArray, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt8}; } -#line 4461 "parser.cpp" +#line 4474 "parser.cpp" break; - case 109: /* column_type: TENSORARRAY '(' SMALLINT ',' LONG_VALUE ')' */ -#line 957 "parser.y" + case 110: /* column_type: TENSORARRAY '(' SMALLINT ',' LONG_VALUE ')' */ +#line 974 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensorArray, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt16}; } -#line 4467 "parser.cpp" +#line 4480 "parser.cpp" break; - case 110: /* column_type: TENSORARRAY '(' INTEGER ',' LONG_VALUE ')' */ -#line 958 "parser.y" + case 111: /* column_type: TENSORARRAY '(' INTEGER ',' LONG_VALUE ')' */ +#line 975 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensorArray, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt32}; } -#line 4473 "parser.cpp" +#line 4486 "parser.cpp" break; - case 111: /* column_type: TENSORARRAY '(' INT ',' LONG_VALUE ')' */ -#line 959 "parser.y" + case 112: /* column_type: TENSORARRAY '(' INT ',' LONG_VALUE ')' */ +#line 976 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensorArray, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt32}; } -#line 4479 "parser.cpp" +#line 4492 "parser.cpp" break; - case 112: /* column_type: TENSORARRAY '(' BIGINT ',' LONG_VALUE ')' */ -#line 960 "parser.y" + case 113: /* column_type: TENSORARRAY '(' BIGINT ',' LONG_VALUE ')' */ +#line 977 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensorArray, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt64}; } -#line 4485 "parser.cpp" +#line 4498 "parser.cpp" break; - case 113: /* column_type: TENSORARRAY '(' FLOAT ',' LONG_VALUE ')' */ -#line 961 "parser.y" + case 114: /* column_type: TENSORARRAY '(' FLOAT ',' LONG_VALUE ')' */ +#line 978 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensorArray, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemFloat}; } -#line 4491 "parser.cpp" +#line 4504 "parser.cpp" break; - case 114: /* column_type: TENSORARRAY '(' DOUBLE ',' LONG_VALUE ')' */ -#line 962 "parser.y" + case 115: /* column_type: TENSORARRAY '(' DOUBLE ',' LONG_VALUE ')' */ +#line 979 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensorArray, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemDouble}; } -#line 4497 "parser.cpp" +#line 4510 "parser.cpp" break; - case 115: /* column_type: TENSORARRAY '(' FLOAT16 ',' LONG_VALUE ')' */ -#line 963 "parser.y" + case 116: /* column_type: TENSORARRAY '(' FLOAT16 ',' LONG_VALUE ')' */ +#line 980 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensorArray, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemFloat16}; } -#line 4503 "parser.cpp" +#line 4516 "parser.cpp" break; - case 116: /* column_type: TENSORARRAY '(' BFLOAT16 ',' LONG_VALUE ')' */ -#line 964 "parser.y" + case 117: /* column_type: TENSORARRAY '(' BFLOAT16 ',' LONG_VALUE ')' */ +#line 981 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensorArray, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemBFloat16}; } -#line 4509 "parser.cpp" +#line 4522 "parser.cpp" break; - case 117: /* column_type: TENSORARRAY '(' UNSIGNED TINYINT ',' LONG_VALUE ')' */ -#line 965 "parser.y" + case 118: /* column_type: TENSORARRAY '(' UNSIGNED TINYINT ',' LONG_VALUE ')' */ +#line 982 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kTensorArray, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemUInt8}; } -#line 4515 "parser.cpp" +#line 4528 "parser.cpp" break; - case 118: /* column_type: VECTOR '(' BIT ',' LONG_VALUE ')' */ -#line 966 "parser.y" + case 119: /* column_type: VECTOR '(' BIT ',' LONG_VALUE ')' */ +#line 983 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemBit}; } -#line 4521 "parser.cpp" +#line 4534 "parser.cpp" break; - case 119: /* column_type: VECTOR '(' TINYINT ',' LONG_VALUE ')' */ -#line 967 "parser.y" + case 120: /* column_type: VECTOR '(' TINYINT ',' LONG_VALUE ')' */ +#line 984 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt8}; } -#line 4527 "parser.cpp" +#line 4540 "parser.cpp" break; - case 120: /* column_type: VECTOR '(' SMALLINT ',' LONG_VALUE ')' */ -#line 968 "parser.y" + case 121: /* column_type: VECTOR '(' SMALLINT ',' LONG_VALUE ')' */ +#line 985 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt16}; } -#line 4533 "parser.cpp" +#line 4546 "parser.cpp" break; - case 121: /* column_type: VECTOR '(' INTEGER ',' LONG_VALUE ')' */ -#line 969 "parser.y" + case 122: /* column_type: VECTOR '(' INTEGER ',' LONG_VALUE ')' */ +#line 986 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt32}; } -#line 4539 "parser.cpp" +#line 4552 "parser.cpp" break; - case 122: /* column_type: VECTOR '(' INT ',' LONG_VALUE ')' */ -#line 970 "parser.y" + case 123: /* column_type: VECTOR '(' INT ',' LONG_VALUE ')' */ +#line 987 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt32}; } -#line 4545 "parser.cpp" +#line 4558 "parser.cpp" break; - case 123: /* column_type: VECTOR '(' BIGINT ',' LONG_VALUE ')' */ -#line 971 "parser.y" + case 124: /* column_type: VECTOR '(' BIGINT ',' LONG_VALUE ')' */ +#line 988 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt64}; } -#line 4551 "parser.cpp" +#line 4564 "parser.cpp" break; - case 124: /* column_type: VECTOR '(' FLOAT ',' LONG_VALUE ')' */ -#line 972 "parser.y" + case 125: /* column_type: VECTOR '(' FLOAT ',' LONG_VALUE ')' */ +#line 989 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemFloat}; } -#line 4557 "parser.cpp" +#line 4570 "parser.cpp" break; - case 125: /* column_type: VECTOR '(' DOUBLE ',' LONG_VALUE ')' */ -#line 973 "parser.y" + case 126: /* column_type: VECTOR '(' DOUBLE ',' LONG_VALUE ')' */ +#line 990 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemDouble}; } -#line 4563 "parser.cpp" +#line 4576 "parser.cpp" break; - case 126: /* column_type: VECTOR '(' FLOAT16 ',' LONG_VALUE ')' */ -#line 974 "parser.y" + case 127: /* column_type: VECTOR '(' FLOAT16 ',' LONG_VALUE ')' */ +#line 991 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemFloat16}; } -#line 4569 "parser.cpp" +#line 4582 "parser.cpp" break; - case 127: /* column_type: VECTOR '(' BFLOAT16 ',' LONG_VALUE ')' */ -#line 975 "parser.y" + case 128: /* column_type: VECTOR '(' BFLOAT16 ',' LONG_VALUE ')' */ +#line 992 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemBFloat16}; } -#line 4575 "parser.cpp" +#line 4588 "parser.cpp" break; - case 128: /* column_type: VECTOR '(' UNSIGNED TINYINT ',' LONG_VALUE ')' */ -#line 976 "parser.y" + case 129: /* column_type: VECTOR '(' UNSIGNED TINYINT ',' LONG_VALUE ')' */ +#line 993 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kEmbedding, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemUInt8}; } -#line 4581 "parser.cpp" +#line 4594 "parser.cpp" break; - case 129: /* column_type: SPARSE '(' BIT ',' LONG_VALUE ')' */ -#line 977 "parser.y" + case 130: /* column_type: SPARSE '(' BIT ',' LONG_VALUE ')' */ +#line 994 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kSparse, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemBit}; } -#line 4587 "parser.cpp" +#line 4600 "parser.cpp" break; - case 130: /* column_type: SPARSE '(' TINYINT ',' LONG_VALUE ')' */ -#line 978 "parser.y" + case 131: /* column_type: SPARSE '(' TINYINT ',' LONG_VALUE ')' */ +#line 995 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kSparse, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt8}; } -#line 4593 "parser.cpp" +#line 4606 "parser.cpp" break; - case 131: /* column_type: SPARSE '(' SMALLINT ',' LONG_VALUE ')' */ -#line 979 "parser.y" + case 132: /* column_type: SPARSE '(' SMALLINT ',' LONG_VALUE ')' */ +#line 996 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kSparse, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt16}; } -#line 4599 "parser.cpp" +#line 4612 "parser.cpp" break; - case 132: /* column_type: SPARSE '(' INTEGER ',' LONG_VALUE ')' */ -#line 980 "parser.y" + case 133: /* column_type: SPARSE '(' INTEGER ',' LONG_VALUE ')' */ +#line 997 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kSparse, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt32}; } -#line 4605 "parser.cpp" +#line 4618 "parser.cpp" break; - case 133: /* column_type: SPARSE '(' INT ',' LONG_VALUE ')' */ -#line 981 "parser.y" + case 134: /* column_type: SPARSE '(' INT ',' LONG_VALUE ')' */ +#line 998 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kSparse, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt32}; } -#line 4611 "parser.cpp" +#line 4624 "parser.cpp" break; - case 134: /* column_type: SPARSE '(' BIGINT ',' LONG_VALUE ')' */ -#line 982 "parser.y" + case 135: /* column_type: SPARSE '(' BIGINT ',' LONG_VALUE ')' */ +#line 999 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kSparse, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemInt64}; } -#line 4617 "parser.cpp" +#line 4630 "parser.cpp" break; - case 135: /* column_type: SPARSE '(' FLOAT ',' LONG_VALUE ')' */ -#line 983 "parser.y" + case 136: /* column_type: SPARSE '(' FLOAT ',' LONG_VALUE ')' */ +#line 1000 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kSparse, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemFloat}; } -#line 4623 "parser.cpp" +#line 4636 "parser.cpp" break; - case 136: /* column_type: SPARSE '(' DOUBLE ',' LONG_VALUE ')' */ -#line 984 "parser.y" + case 137: /* column_type: SPARSE '(' DOUBLE ',' LONG_VALUE ')' */ +#line 1001 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kSparse, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemDouble}; } -#line 4629 "parser.cpp" +#line 4642 "parser.cpp" break; - case 137: /* column_type: SPARSE '(' FLOAT16 ',' LONG_VALUE ')' */ -#line 985 "parser.y" + case 138: /* column_type: SPARSE '(' FLOAT16 ',' LONG_VALUE ')' */ +#line 1002 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kSparse, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemFloat16}; } -#line 4635 "parser.cpp" +#line 4648 "parser.cpp" break; - case 138: /* column_type: SPARSE '(' BFLOAT16 ',' LONG_VALUE ')' */ -#line 986 "parser.y" + case 139: /* column_type: SPARSE '(' BFLOAT16 ',' LONG_VALUE ')' */ +#line 1003 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kSparse, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemBFloat16}; } -#line 4641 "parser.cpp" +#line 4654 "parser.cpp" break; - case 139: /* column_type: SPARSE '(' UNSIGNED TINYINT ',' LONG_VALUE ')' */ -#line 987 "parser.y" + case 140: /* column_type: SPARSE '(' UNSIGNED TINYINT ',' LONG_VALUE ')' */ +#line 1004 "parser.y" { (yyval.column_type_t) = infinity::ColumnType{infinity::LogicalType::kSparse, (yyvsp[-1].long_value), 0, 0, infinity::EmbeddingDataType::kElemUInt8}; } -#line 4647 "parser.cpp" +#line 4660 "parser.cpp" break; - case 140: /* column_constraints: column_constraint */ -#line 1006 "parser.y" + case 141: /* column_constraints: column_constraint */ +#line 1023 "parser.y" { (yyval.column_constraints_t) = new std::set(); (yyval.column_constraints_t)->insert((yyvsp[0].column_constraint_t)); } -#line 4656 "parser.cpp" +#line 4669 "parser.cpp" break; - case 141: /* column_constraints: column_constraints column_constraint */ -#line 1010 "parser.y" + case 142: /* column_constraints: column_constraints column_constraint */ +#line 1027 "parser.y" { if((yyvsp[-1].column_constraints_t)->contains((yyvsp[0].column_constraint_t))) { yyerror(&yyloc, scanner, result, "Duplicate column constraint."); @@ -4666,101 +4679,101 @@ 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 4670 "parser.cpp" +#line 4683 "parser.cpp" break; - case 142: /* column_constraint: PRIMARY KEY */ -#line 1020 "parser.y" + case 143: /* column_constraint: PRIMARY KEY */ +#line 1037 "parser.y" { (yyval.column_constraint_t) = infinity::ConstraintType::kPrimaryKey; } -#line 4678 "parser.cpp" +#line 4691 "parser.cpp" break; - case 143: /* column_constraint: UNIQUE */ -#line 1023 "parser.y" + case 144: /* column_constraint: UNIQUE */ +#line 1040 "parser.y" { (yyval.column_constraint_t) = infinity::ConstraintType::kUnique; } -#line 4686 "parser.cpp" +#line 4699 "parser.cpp" break; - case 144: /* column_constraint: NULLABLE */ -#line 1026 "parser.y" + case 145: /* column_constraint: NULLABLE */ +#line 1043 "parser.y" { (yyval.column_constraint_t) = infinity::ConstraintType::kNull; } -#line 4694 "parser.cpp" +#line 4707 "parser.cpp" break; - case 145: /* column_constraint: NOT NULLABLE */ -#line 1029 "parser.y" + case 146: /* column_constraint: NOT NULLABLE */ +#line 1046 "parser.y" { (yyval.column_constraint_t) = infinity::ConstraintType::kNotNull; } -#line 4702 "parser.cpp" +#line 4715 "parser.cpp" break; - case 146: /* default_expr: DEFAULT constant_expr */ -#line 1033 "parser.y" + case 147: /* default_expr: DEFAULT constant_expr */ +#line 1050 "parser.y" { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 4710 "parser.cpp" +#line 4723 "parser.cpp" break; - case 147: /* default_expr: %empty */ -#line 1036 "parser.y" + case 148: /* default_expr: %empty */ +#line 1053 "parser.y" { (yyval.const_expr_t) = nullptr; } -#line 4718 "parser.cpp" +#line 4731 "parser.cpp" break; - case 148: /* table_constraint: PRIMARY KEY '(' identifier_array ')' */ -#line 1041 "parser.y" + case 149: /* table_constraint: PRIMARY KEY '(' identifier_array ')' */ +#line 1058 "parser.y" { (yyval.table_constraint_t) = new infinity::TableConstraint(); (yyval.table_constraint_t)->names_ptr_ = (yyvsp[-1].identifier_array_t); (yyval.table_constraint_t)->constraint_ = infinity::ConstraintType::kPrimaryKey; } -#line 4728 "parser.cpp" +#line 4741 "parser.cpp" break; - case 149: /* table_constraint: UNIQUE '(' identifier_array ')' */ -#line 1046 "parser.y" + case 150: /* table_constraint: UNIQUE '(' identifier_array ')' */ +#line 1063 "parser.y" { (yyval.table_constraint_t) = new infinity::TableConstraint(); (yyval.table_constraint_t)->names_ptr_ = (yyvsp[-1].identifier_array_t); (yyval.table_constraint_t)->constraint_ = infinity::ConstraintType::kUnique; } -#line 4738 "parser.cpp" +#line 4751 "parser.cpp" break; - case 150: /* identifier_array: IDENTIFIER */ -#line 1053 "parser.y" + case 151: /* identifier_array: IDENTIFIER */ +#line 1070 "parser.y" { (yyval.identifier_array_t) = new std::vector(); ParserHelper::ToLower((yyvsp[0].str_value)); (yyval.identifier_array_t)->emplace_back((yyvsp[0].str_value)); free((yyvsp[0].str_value)); } -#line 4749 "parser.cpp" +#line 4762 "parser.cpp" break; - case 151: /* identifier_array: identifier_array ',' IDENTIFIER */ -#line 1059 "parser.y" + case 152: /* identifier_array: identifier_array ',' IDENTIFIER */ +#line 1076 "parser.y" { ParserHelper::ToLower((yyvsp[0].str_value)); (yyvsp[-2].identifier_array_t)->emplace_back((yyvsp[0].str_value)); free((yyvsp[0].str_value)); (yyval.identifier_array_t) = (yyvsp[-2].identifier_array_t); } -#line 4760 "parser.cpp" +#line 4773 "parser.cpp" break; - case 152: /* delete_statement: DELETE FROM table_name where_clause */ -#line 1069 "parser.y" + case 153: /* delete_statement: DELETE FROM table_name where_clause */ +#line 1086 "parser.y" { (yyval.delete_stmt) = new infinity::DeleteStatement(); @@ -4773,11 +4786,11 @@ YYLTYPE yylloc = yyloc_default; delete (yyvsp[-1].table_name_t); (yyval.delete_stmt)->where_expr_ = (yyvsp[0].expr_t); } -#line 4777 "parser.cpp" +#line 4790 "parser.cpp" break; - case 153: /* insert_statement: INSERT INTO table_name optional_identifier_array VALUES expr_array_list */ -#line 1085 "parser.y" + case 154: /* insert_statement: INSERT INTO table_name optional_identifier_array VALUES expr_array_list */ +#line 1102 "parser.y" { bool is_error{false}; for (auto expr_array : *(yyvsp[0].expr_array_list_t)) { @@ -4812,11 +4825,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns_ = (yyvsp[-2].identifier_array_t); (yyval.insert_stmt)->values_ = (yyvsp[0].expr_array_list_t); } -#line 4816 "parser.cpp" +#line 4829 "parser.cpp" break; - case 154: /* insert_statement: INSERT INTO table_name optional_identifier_array select_without_paren */ -#line 1119 "parser.y" + case 155: /* insert_statement: INSERT INTO table_name optional_identifier_array select_without_paren */ +#line 1136 "parser.y" { (yyval.insert_stmt) = new infinity::InsertStatement(); if((yyvsp[-2].table_name_t)->schema_name_ptr_ != nullptr) { @@ -4829,27 +4842,27 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns_ = (yyvsp[-1].identifier_array_t); (yyval.insert_stmt)->select_ = (yyvsp[0].select_stmt); } -#line 4833 "parser.cpp" +#line 4846 "parser.cpp" break; - case 155: /* optional_identifier_array: '(' identifier_array ')' */ -#line 1132 "parser.y" + case 156: /* optional_identifier_array: '(' identifier_array ')' */ +#line 1149 "parser.y" { (yyval.identifier_array_t) = (yyvsp[-1].identifier_array_t); } -#line 4841 "parser.cpp" +#line 4854 "parser.cpp" break; - case 156: /* optional_identifier_array: %empty */ -#line 1135 "parser.y" + case 157: /* optional_identifier_array: %empty */ +#line 1152 "parser.y" { (yyval.identifier_array_t) = nullptr; } -#line 4849 "parser.cpp" +#line 4862 "parser.cpp" break; - case 157: /* explain_statement: EXPLAIN IDENTIFIER explainable_statement */ -#line 1142 "parser.y" + case 158: /* explain_statement: EXPLAIN IDENTIFIER explainable_statement */ +#line 1159 "parser.y" { (yyval.explain_stmt) = new infinity::ExplainStatement(); ParserHelper::ToLower((yyvsp[-1].str_value)); @@ -4863,21 +4876,21 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].str_value)); (yyval.explain_stmt)->statement_ = (yyvsp[0].base_stmt); } -#line 4867 "parser.cpp" +#line 4880 "parser.cpp" break; - case 158: /* explain_statement: EXPLAIN explainable_statement */ -#line 1154 "parser.y" + case 159: /* explain_statement: EXPLAIN explainable_statement */ +#line 1171 "parser.y" { (yyval.explain_stmt) = new infinity::ExplainStatement(); (yyval.explain_stmt)->type_ =infinity::ExplainType::kPhysical; (yyval.explain_stmt)->statement_ = (yyvsp[0].base_stmt); } -#line 4877 "parser.cpp" +#line 4890 "parser.cpp" break; - case 159: /* update_statement: UPDATE table_name SET update_expr_array where_clause */ -#line 1163 "parser.y" + case 160: /* update_statement: UPDATE table_name SET update_expr_array where_clause */ +#line 1180 "parser.y" { (yyval.update_stmt) = new infinity::UpdateStatement(); if((yyvsp[-3].table_name_t)->schema_name_ptr_ != nullptr) { @@ -4890,29 +4903,29 @@ 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 4894 "parser.cpp" +#line 4907 "parser.cpp" break; - case 160: /* update_expr_array: update_expr */ -#line 1176 "parser.y" + case 161: /* update_expr_array: update_expr */ +#line 1193 "parser.y" { (yyval.update_expr_array_t) = new std::vector(); (yyval.update_expr_array_t)->emplace_back((yyvsp[0].update_expr_t)); } -#line 4903 "parser.cpp" +#line 4916 "parser.cpp" break; - case 161: /* update_expr_array: update_expr_array ',' update_expr */ -#line 1180 "parser.y" + case 162: /* update_expr_array: update_expr_array ',' update_expr */ +#line 1197 "parser.y" { (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 4912 "parser.cpp" +#line 4925 "parser.cpp" break; - case 162: /* update_expr: IDENTIFIER '=' expr */ -#line 1185 "parser.y" + case 163: /* update_expr: IDENTIFIER '=' expr */ +#line 1202 "parser.y" { (yyval.update_expr_t) = new infinity::UpdateExpr(); ParserHelper::ToLower((yyvsp[-2].str_value)); @@ -4920,11 +4933,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-2].str_value)); (yyval.update_expr_t)->value = (yyvsp[0].expr_t); } -#line 4924 "parser.cpp" +#line 4937 "parser.cpp" break; - case 163: /* drop_statement: DROP DATABASE if_exists IDENTIFIER */ -#line 1198 "parser.y" + case 164: /* drop_statement: DROP DATABASE if_exists IDENTIFIER */ +#line 1215 "parser.y" { (yyval.drop_stmt) = new infinity::DropStatement(); std::shared_ptr drop_schema_info = std::make_shared(); @@ -4936,11 +4949,11 @@ 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 4940 "parser.cpp" +#line 4953 "parser.cpp" break; - case 164: /* drop_statement: DROP COLLECTION if_exists table_name */ -#line 1211 "parser.y" + case 165: /* drop_statement: DROP COLLECTION if_exists table_name */ +#line 1228 "parser.y" { (yyval.drop_stmt) = new infinity::DropStatement(); std::shared_ptr drop_collection_info = std::make_unique(); @@ -4954,11 +4967,11 @@ 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 4958 "parser.cpp" +#line 4971 "parser.cpp" break; - case 165: /* drop_statement: DROP TABLE if_exists table_name */ -#line 1226 "parser.y" + case 166: /* drop_statement: DROP TABLE if_exists table_name */ +#line 1243 "parser.y" { (yyval.drop_stmt) = new infinity::DropStatement(); std::shared_ptr drop_table_info = std::make_unique(); @@ -4972,11 +4985,11 @@ 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 4976 "parser.cpp" +#line 4989 "parser.cpp" break; - case 166: /* drop_statement: DROP VIEW if_exists table_name */ -#line 1241 "parser.y" + case 167: /* drop_statement: DROP VIEW if_exists table_name */ +#line 1258 "parser.y" { (yyval.drop_stmt) = new infinity::DropStatement(); std::shared_ptr drop_view_info = std::make_unique(); @@ -4990,11 +5003,11 @@ 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 4994 "parser.cpp" +#line 5007 "parser.cpp" break; - case 167: /* drop_statement: DROP INDEX if_exists IDENTIFIER ON table_name */ -#line 1256 "parser.y" + case 168: /* drop_statement: DROP INDEX if_exists IDENTIFIER ON table_name */ +#line 1273 "parser.y" { (yyval.drop_stmt) = new infinity::DropStatement(); std::shared_ptr drop_index_info = std::make_shared(); @@ -5013,11 +5026,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[0].table_name_t)->table_name_ptr_); delete (yyvsp[0].table_name_t); } -#line 5017 "parser.cpp" +#line 5030 "parser.cpp" break; - case 168: /* copy_statement: COPY table_name TO file_path WITH '(' copy_option_list ')' */ -#line 1279 "parser.y" + case 169: /* copy_statement: COPY table_name TO file_path WITH '(' copy_option_list ')' */ +#line 1296 "parser.y" { (yyval.copy_stmt) = new infinity::CopyStatement(); @@ -5071,11 +5084,11 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[-1].copy_option_array); } -#line 5075 "parser.cpp" +#line 5088 "parser.cpp" break; - case 169: /* copy_statement: COPY table_name '(' expr_array ')' TO file_path WITH '(' copy_option_list ')' */ -#line 1332 "parser.y" + case 170: /* copy_statement: COPY table_name '(' expr_array ')' TO file_path WITH '(' copy_option_list ')' */ +#line 1349 "parser.y" { (yyval.copy_stmt) = new infinity::CopyStatement(); @@ -5131,11 +5144,11 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[-1].copy_option_array); } -#line 5135 "parser.cpp" +#line 5148 "parser.cpp" break; - case 170: /* copy_statement: COPY table_name FROM file_path WITH '(' copy_option_list ')' */ -#line 1387 "parser.y" + case 171: /* copy_statement: COPY table_name FROM file_path WITH '(' copy_option_list ')' */ +#line 1404 "parser.y" { (yyval.copy_stmt) = new infinity::CopyStatement(); @@ -5183,27 +5196,27 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[-1].copy_option_array); } -#line 5187 "parser.cpp" +#line 5200 "parser.cpp" break; - case 171: /* select_statement: select_without_paren */ -#line 1438 "parser.y" + case 172: /* select_statement: select_without_paren */ +#line 1455 "parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); } -#line 5195 "parser.cpp" +#line 5208 "parser.cpp" break; - case 172: /* select_statement: select_with_paren */ -#line 1441 "parser.y" + case 173: /* select_statement: select_with_paren */ +#line 1458 "parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); } -#line 5203 "parser.cpp" +#line 5216 "parser.cpp" break; - case 173: /* select_statement: select_statement set_operator select_clause_without_modifier_paren */ -#line 1444 "parser.y" + case 174: /* select_statement: select_statement set_operator select_clause_without_modifier_paren */ +#line 1461 "parser.y" { infinity::SelectStatement* node = (yyvsp[-2].select_stmt); while(node->nested_select_ != nullptr) { @@ -5213,11 +5226,11 @@ YYLTYPE yylloc = yyloc_default; node->nested_select_ = (yyvsp[0].select_stmt); (yyval.select_stmt) = (yyvsp[-2].select_stmt); } -#line 5217 "parser.cpp" +#line 5230 "parser.cpp" break; - case 174: /* select_statement: select_statement set_operator select_clause_without_modifier */ -#line 1453 "parser.y" + case 175: /* select_statement: select_statement set_operator select_clause_without_modifier */ +#line 1470 "parser.y" { infinity::SelectStatement* node = (yyvsp[-2].select_stmt); while(node->nested_select_ != nullptr) { @@ -5227,36 +5240,36 @@ YYLTYPE yylloc = yyloc_default; node->nested_select_ = (yyvsp[0].select_stmt); (yyval.select_stmt) = (yyvsp[-2].select_stmt); } -#line 5231 "parser.cpp" +#line 5244 "parser.cpp" break; - case 175: /* select_with_paren: '(' select_without_paren ')' */ -#line 1463 "parser.y" + case 176: /* select_with_paren: '(' select_without_paren ')' */ +#line 1480 "parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 5239 "parser.cpp" +#line 5252 "parser.cpp" break; - case 176: /* select_with_paren: '(' select_with_paren ')' */ -#line 1466 "parser.y" + case 177: /* select_with_paren: '(' select_with_paren ')' */ +#line 1483 "parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 5247 "parser.cpp" +#line 5260 "parser.cpp" break; - case 177: /* select_without_paren: with_clause select_clause_with_modifier */ -#line 1470 "parser.y" + case 178: /* select_without_paren: with_clause select_clause_with_modifier */ +#line 1487 "parser.y" { (yyvsp[0].select_stmt)->with_exprs_ = (yyvsp[-1].with_expr_list_t); (yyval.select_stmt) = (yyvsp[0].select_stmt); } -#line 5256 "parser.cpp" +#line 5269 "parser.cpp" break; - case 178: /* select_clause_with_modifier: select_clause_without_modifier order_by_clause limit_expr offset_expr */ -#line 1475 "parser.y" + case 179: /* select_clause_with_modifier: select_clause_without_modifier order_by_clause limit_expr offset_expr */ +#line 1492 "parser.y" { if((yyvsp[-1].expr_t) == nullptr and (yyvsp[0].expr_t) != nullptr) { delete (yyvsp[-3].select_stmt); @@ -5283,27 +5296,27 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-3].select_stmt)->offset_expr_ = (yyvsp[0].expr_t); (yyval.select_stmt) = (yyvsp[-3].select_stmt); } -#line 5287 "parser.cpp" +#line 5300 "parser.cpp" break; - case 179: /* select_clause_without_modifier_paren: '(' select_clause_without_modifier ')' */ -#line 1502 "parser.y" + case 180: /* select_clause_without_modifier_paren: '(' select_clause_without_modifier ')' */ +#line 1519 "parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 5295 "parser.cpp" +#line 5308 "parser.cpp" break; - case 180: /* select_clause_without_modifier_paren: '(' select_clause_without_modifier_paren ')' */ -#line 1505 "parser.y" + case 181: /* select_clause_without_modifier_paren: '(' select_clause_without_modifier_paren ')' */ +#line 1522 "parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 5303 "parser.cpp" +#line 5316 "parser.cpp" break; - case 181: /* select_clause_without_modifier: SELECT distinct expr_array highlight_clause from_clause search_clause where_clause group_by_clause having_clause */ -#line 1510 "parser.y" + case 182: /* select_clause_without_modifier: SELECT distinct expr_array highlight_clause from_clause search_clause where_clause group_by_clause having_clause */ +#line 1527 "parser.y" { (yyval.select_stmt) = new infinity::SelectStatement(); (yyval.select_stmt)->select_distinct_ = (yyvsp[-7].bool_value); @@ -5320,277 +5333,277 @@ YYLTYPE yylloc = yyloc_default; YYERROR; } } -#line 5324 "parser.cpp" +#line 5337 "parser.cpp" break; - case 182: /* order_by_clause: ORDER BY order_by_expr_list */ -#line 1527 "parser.y" + case 183: /* order_by_clause: ORDER BY order_by_expr_list */ +#line 1544 "parser.y" { (yyval.order_by_expr_list_t) = (yyvsp[0].order_by_expr_list_t); } -#line 5332 "parser.cpp" +#line 5345 "parser.cpp" break; - case 183: /* order_by_clause: %empty */ -#line 1530 "parser.y" + case 184: /* order_by_clause: %empty */ +#line 1547 "parser.y" { (yyval.order_by_expr_list_t) = nullptr; } -#line 5340 "parser.cpp" +#line 5353 "parser.cpp" break; - case 184: /* order_by_expr_list: order_by_expr */ -#line 1534 "parser.y" + case 185: /* order_by_expr_list: order_by_expr */ +#line 1551 "parser.y" { (yyval.order_by_expr_list_t) = new std::vector(); (yyval.order_by_expr_list_t)->emplace_back((yyvsp[0].order_by_expr_t)); } -#line 5349 "parser.cpp" +#line 5362 "parser.cpp" break; - case 185: /* order_by_expr_list: order_by_expr_list ',' order_by_expr */ -#line 1538 "parser.y" + case 186: /* order_by_expr_list: order_by_expr_list ',' order_by_expr */ +#line 1555 "parser.y" { (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 5358 "parser.cpp" +#line 5371 "parser.cpp" break; - case 186: /* order_by_expr: expr order_by_type */ -#line 1543 "parser.y" + case 187: /* order_by_expr: expr order_by_type */ +#line 1560 "parser.y" { (yyval.order_by_expr_t) = new infinity::OrderByExpr(); (yyval.order_by_expr_t)->expr_ = (yyvsp[-1].expr_t); (yyval.order_by_expr_t)->type_ = (yyvsp[0].order_by_type_t); } -#line 5368 "parser.cpp" +#line 5381 "parser.cpp" break; - case 187: /* order_by_type: ASC */ -#line 1549 "parser.y" + case 188: /* order_by_type: ASC */ +#line 1566 "parser.y" { (yyval.order_by_type_t) = infinity::kAsc; } -#line 5376 "parser.cpp" +#line 5389 "parser.cpp" break; - case 188: /* order_by_type: DESC */ -#line 1552 "parser.y" + case 189: /* order_by_type: DESC */ +#line 1569 "parser.y" { (yyval.order_by_type_t) = infinity::kDesc; } -#line 5384 "parser.cpp" +#line 5397 "parser.cpp" break; - case 189: /* order_by_type: %empty */ -#line 1555 "parser.y" + case 190: /* order_by_type: %empty */ +#line 1572 "parser.y" { (yyval.order_by_type_t) = infinity::kAsc; } -#line 5392 "parser.cpp" +#line 5405 "parser.cpp" break; - case 190: /* limit_expr: LIMIT expr */ -#line 1559 "parser.y" + case 191: /* limit_expr: LIMIT expr */ +#line 1576 "parser.y" { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 5400 "parser.cpp" +#line 5413 "parser.cpp" break; - case 191: /* limit_expr: %empty */ -#line 1563 "parser.y" + case 192: /* limit_expr: %empty */ +#line 1580 "parser.y" { (yyval.expr_t) = nullptr; } -#line 5406 "parser.cpp" +#line 5419 "parser.cpp" break; - case 192: /* offset_expr: OFFSET expr */ -#line 1565 "parser.y" + case 193: /* offset_expr: OFFSET expr */ +#line 1582 "parser.y" { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 5414 "parser.cpp" +#line 5427 "parser.cpp" break; - case 193: /* offset_expr: %empty */ -#line 1569 "parser.y" + case 194: /* offset_expr: %empty */ +#line 1586 "parser.y" { (yyval.expr_t) = nullptr; } -#line 5420 "parser.cpp" +#line 5433 "parser.cpp" break; - case 194: /* distinct: DISTINCT */ -#line 1571 "parser.y" + case 195: /* distinct: DISTINCT */ +#line 1588 "parser.y" { (yyval.bool_value) = true; } -#line 5428 "parser.cpp" +#line 5441 "parser.cpp" break; - case 195: /* distinct: %empty */ -#line 1574 "parser.y" + case 196: /* distinct: %empty */ +#line 1591 "parser.y" { (yyval.bool_value) = false; } -#line 5436 "parser.cpp" +#line 5449 "parser.cpp" break; - case 196: /* highlight_clause: HIGHLIGHT expr_array */ -#line 1578 "parser.y" + case 197: /* highlight_clause: HIGHLIGHT expr_array */ +#line 1595 "parser.y" { (yyval.expr_array_t) = (yyvsp[0].expr_array_t); } -#line 5444 "parser.cpp" +#line 5457 "parser.cpp" break; - case 197: /* highlight_clause: %empty */ -#line 1581 "parser.y" + case 198: /* highlight_clause: %empty */ +#line 1598 "parser.y" { (yyval.expr_array_t) = nullptr; } -#line 5452 "parser.cpp" +#line 5465 "parser.cpp" break; - case 198: /* from_clause: FROM table_reference */ -#line 1585 "parser.y" + case 199: /* from_clause: FROM table_reference */ +#line 1602 "parser.y" { (yyval.table_reference_t) = (yyvsp[0].table_reference_t); } -#line 5460 "parser.cpp" +#line 5473 "parser.cpp" break; - case 199: /* from_clause: %empty */ -#line 1588 "parser.y" + case 200: /* from_clause: %empty */ +#line 1605 "parser.y" { (yyval.table_reference_t) = nullptr; } -#line 5468 "parser.cpp" +#line 5481 "parser.cpp" break; - case 200: /* search_clause: SEARCH sub_search_array */ -#line 1592 "parser.y" + case 201: /* search_clause: SEARCH sub_search_array */ +#line 1609 "parser.y" { infinity::SearchExpr* search_expr = new infinity::SearchExpr(); search_expr->SetExprs((yyvsp[0].expr_array_t)); (yyval.expr_t) = search_expr; } -#line 5478 "parser.cpp" +#line 5491 "parser.cpp" break; - case 201: /* search_clause: %empty */ -#line 1597 "parser.y" + case 202: /* search_clause: %empty */ +#line 1614 "parser.y" { (yyval.expr_t) = nullptr; } -#line 5486 "parser.cpp" +#line 5499 "parser.cpp" break; - case 202: /* optional_search_filter_expr: ',' WHERE expr */ -#line 1601 "parser.y" + case 203: /* optional_search_filter_expr: ',' WHERE expr */ +#line 1618 "parser.y" { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 5494 "parser.cpp" +#line 5507 "parser.cpp" break; - case 203: /* optional_search_filter_expr: %empty */ -#line 1604 "parser.y" + case 204: /* optional_search_filter_expr: %empty */ +#line 1621 "parser.y" { (yyval.expr_t) = nullptr; } -#line 5502 "parser.cpp" +#line 5515 "parser.cpp" break; - case 204: /* where_clause: WHERE expr */ -#line 1608 "parser.y" + case 205: /* where_clause: WHERE expr */ +#line 1625 "parser.y" { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 5510 "parser.cpp" +#line 5523 "parser.cpp" break; - case 205: /* where_clause: %empty */ -#line 1611 "parser.y" + case 206: /* where_clause: %empty */ +#line 1628 "parser.y" { (yyval.expr_t) = nullptr; } -#line 5518 "parser.cpp" +#line 5531 "parser.cpp" break; - case 206: /* having_clause: HAVING expr */ -#line 1615 "parser.y" + case 207: /* having_clause: HAVING expr */ +#line 1632 "parser.y" { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 5526 "parser.cpp" +#line 5539 "parser.cpp" break; - case 207: /* having_clause: %empty */ -#line 1618 "parser.y" + case 208: /* having_clause: %empty */ +#line 1635 "parser.y" { (yyval.expr_t) = nullptr; } -#line 5534 "parser.cpp" +#line 5547 "parser.cpp" break; - case 208: /* group_by_clause: GROUP BY expr_array */ -#line 1622 "parser.y" + case 209: /* group_by_clause: GROUP BY expr_array */ +#line 1639 "parser.y" { (yyval.expr_array_t) = (yyvsp[0].expr_array_t); } -#line 5542 "parser.cpp" +#line 5555 "parser.cpp" break; - case 209: /* group_by_clause: %empty */ -#line 1625 "parser.y" + case 210: /* group_by_clause: %empty */ +#line 1642 "parser.y" { (yyval.expr_array_t) = nullptr; } -#line 5550 "parser.cpp" +#line 5563 "parser.cpp" break; - case 210: /* set_operator: UNION */ -#line 1629 "parser.y" + case 211: /* set_operator: UNION */ +#line 1646 "parser.y" { (yyval.set_operator_t) = infinity::SetOperatorType::kUnion; } -#line 5558 "parser.cpp" +#line 5571 "parser.cpp" break; - case 211: /* set_operator: UNION ALL */ -#line 1632 "parser.y" + case 212: /* set_operator: UNION ALL */ +#line 1649 "parser.y" { (yyval.set_operator_t) = infinity::SetOperatorType::kUnionAll; } -#line 5566 "parser.cpp" +#line 5579 "parser.cpp" break; - case 212: /* set_operator: INTERSECT */ -#line 1635 "parser.y" + case 213: /* set_operator: INTERSECT */ +#line 1652 "parser.y" { (yyval.set_operator_t) = infinity::SetOperatorType::kIntersect; } -#line 5574 "parser.cpp" +#line 5587 "parser.cpp" break; - case 213: /* set_operator: EXCEPT */ -#line 1638 "parser.y" + case 214: /* set_operator: EXCEPT */ +#line 1655 "parser.y" { (yyval.set_operator_t) = infinity::SetOperatorType::kExcept; } -#line 5582 "parser.cpp" +#line 5595 "parser.cpp" break; - case 214: /* table_reference: table_reference_unit */ -#line 1646 "parser.y" + case 215: /* table_reference: table_reference_unit */ +#line 1663 "parser.y" { (yyval.table_reference_t) = (yyvsp[0].table_reference_t); } -#line 5590 "parser.cpp" +#line 5603 "parser.cpp" break; - case 215: /* table_reference: table_reference ',' table_reference_unit */ -#line 1649 "parser.y" + case 216: /* table_reference: table_reference ',' table_reference_unit */ +#line 1666 "parser.y" { infinity::CrossProductReference* cross_product_ref = nullptr; if((yyvsp[-2].table_reference_t)->type_ == infinity::TableRefType::kCrossProduct) { @@ -5604,11 +5617,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table_reference_t) = cross_product_ref; } -#line 5608 "parser.cpp" +#line 5621 "parser.cpp" break; - case 218: /* table_reference_name: table_name table_alias */ -#line 1666 "parser.y" + case 219: /* table_reference_name: table_name table_alias */ +#line 1683 "parser.y" { infinity::TableReference* table_ref = new infinity::TableReference(); if((yyvsp[-1].table_name_t)->schema_name_ptr_ != nullptr) { @@ -5622,32 +5635,32 @@ YYLTYPE yylloc = yyloc_default; table_ref->alias_ = (yyvsp[0].table_alias_t); (yyval.table_reference_t) = table_ref; } -#line 5626 "parser.cpp" +#line 5639 "parser.cpp" break; - case 219: /* table_reference_name: '(' select_statement ')' table_alias */ -#line 1680 "parser.y" + case 220: /* table_reference_name: '(' select_statement ')' table_alias */ +#line 1697 "parser.y" { infinity::SubqueryReference* subquery_reference = new infinity::SubqueryReference(); subquery_reference->select_statement_ = (yyvsp[-2].select_stmt); subquery_reference->alias_ = (yyvsp[0].table_alias_t); (yyval.table_reference_t) = subquery_reference; } -#line 5637 "parser.cpp" +#line 5650 "parser.cpp" break; - case 220: /* table_name: IDENTIFIER */ -#line 1689 "parser.y" + case 221: /* table_name: IDENTIFIER */ +#line 1706 "parser.y" { (yyval.table_name_t) = new infinity::TableName(); ParserHelper::ToLower((yyvsp[0].str_value)); (yyval.table_name_t)->table_name_ptr_ = (yyvsp[0].str_value); } -#line 5647 "parser.cpp" +#line 5660 "parser.cpp" break; - case 221: /* table_name: IDENTIFIER '.' IDENTIFIER */ -#line 1694 "parser.y" + case 222: /* table_name: IDENTIFIER '.' IDENTIFIER */ +#line 1711 "parser.y" { (yyval.table_name_t) = new infinity::TableName(); ParserHelper::ToLower((yyvsp[-2].str_value)); @@ -5655,84 +5668,84 @@ 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 5659 "parser.cpp" +#line 5672 "parser.cpp" break; - case 222: /* table_alias: AS IDENTIFIER */ -#line 1703 "parser.y" + case 223: /* table_alias: AS IDENTIFIER */ +#line 1720 "parser.y" { (yyval.table_alias_t) = new infinity::TableAlias(); ParserHelper::ToLower((yyvsp[0].str_value)); (yyval.table_alias_t)->alias_ = (yyvsp[0].str_value); } -#line 5669 "parser.cpp" +#line 5682 "parser.cpp" break; - case 223: /* table_alias: IDENTIFIER */ -#line 1708 "parser.y" + case 224: /* table_alias: IDENTIFIER */ +#line 1725 "parser.y" { (yyval.table_alias_t) = new infinity::TableAlias(); ParserHelper::ToLower((yyvsp[0].str_value)); (yyval.table_alias_t)->alias_ = (yyvsp[0].str_value); } -#line 5679 "parser.cpp" +#line 5692 "parser.cpp" break; - case 224: /* table_alias: AS IDENTIFIER '(' identifier_array ')' */ -#line 1713 "parser.y" + case 225: /* table_alias: AS IDENTIFIER '(' identifier_array ')' */ +#line 1730 "parser.y" { (yyval.table_alias_t) = new infinity::TableAlias(); ParserHelper::ToLower((yyvsp[-3].str_value)); (yyval.table_alias_t)->alias_ = (yyvsp[-3].str_value); (yyval.table_alias_t)->column_alias_array_ = (yyvsp[-1].identifier_array_t); } -#line 5690 "parser.cpp" +#line 5703 "parser.cpp" break; - case 225: /* table_alias: %empty */ -#line 1719 "parser.y" + case 226: /* table_alias: %empty */ +#line 1736 "parser.y" { (yyval.table_alias_t) = nullptr; } -#line 5698 "parser.cpp" +#line 5711 "parser.cpp" break; - case 226: /* with_clause: WITH with_expr_list */ -#line 1726 "parser.y" + case 227: /* with_clause: WITH with_expr_list */ +#line 1743 "parser.y" { (yyval.with_expr_list_t) = (yyvsp[0].with_expr_list_t); } -#line 5706 "parser.cpp" +#line 5719 "parser.cpp" break; - case 227: /* with_clause: %empty */ -#line 1729 "parser.y" + case 228: /* with_clause: %empty */ +#line 1746 "parser.y" { (yyval.with_expr_list_t) = nullptr; } -#line 5714 "parser.cpp" +#line 5727 "parser.cpp" break; - case 228: /* with_expr_list: with_expr */ -#line 1733 "parser.y" + case 229: /* with_expr_list: with_expr */ +#line 1750 "parser.y" { (yyval.with_expr_list_t) = new std::vector(); (yyval.with_expr_list_t)->emplace_back((yyvsp[0].with_expr_t)); } -#line 5723 "parser.cpp" +#line 5736 "parser.cpp" break; - case 229: /* with_expr_list: with_expr_list ',' with_expr */ -#line 1736 "parser.y" + case 230: /* with_expr_list: with_expr_list ',' with_expr */ +#line 1753 "parser.y" { (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 5732 "parser.cpp" +#line 5745 "parser.cpp" break; - case 230: /* with_expr: IDENTIFIER AS '(' select_clause_with_modifier ')' */ -#line 1741 "parser.y" + case 231: /* with_expr: IDENTIFIER AS '(' select_clause_with_modifier ')' */ +#line 1758 "parser.y" { (yyval.with_expr_t) = new infinity::WithExpr(); ParserHelper::ToLower((yyvsp[-4].str_value)); @@ -5740,11 +5753,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-4].str_value)); (yyval.with_expr_t)->select_ = (yyvsp[-1].select_stmt); } -#line 5744 "parser.cpp" +#line 5757 "parser.cpp" break; - case 231: /* join_clause: table_reference_unit NATURAL JOIN table_reference_name */ -#line 1753 "parser.y" + case 232: /* join_clause: table_reference_unit NATURAL JOIN table_reference_name */ +#line 1770 "parser.y" { infinity::JoinReference* join_reference = new infinity::JoinReference(); join_reference->left_ = (yyvsp[-3].table_reference_t); @@ -5752,11 +5765,11 @@ YYLTYPE yylloc = yyloc_default; join_reference->join_type_ = infinity::JoinType::kNatural; (yyval.table_reference_t) = join_reference; } -#line 5756 "parser.cpp" +#line 5769 "parser.cpp" break; - case 232: /* join_clause: table_reference_unit join_type JOIN table_reference_name ON expr */ -#line 1760 "parser.y" + case 233: /* join_clause: table_reference_unit join_type JOIN table_reference_name ON expr */ +#line 1777 "parser.y" { infinity::JoinReference* join_reference = new infinity::JoinReference(); join_reference->left_ = (yyvsp[-5].table_reference_t); @@ -5765,102 +5778,102 @@ YYLTYPE yylloc = yyloc_default; join_reference->condition_ = (yyvsp[0].expr_t); (yyval.table_reference_t) = join_reference; } -#line 5769 "parser.cpp" +#line 5782 "parser.cpp" break; - case 233: /* join_type: INNER */ -#line 1774 "parser.y" + case 234: /* join_type: INNER */ +#line 1791 "parser.y" { (yyval.join_type_t) = infinity::JoinType::kInner; } -#line 5777 "parser.cpp" +#line 5790 "parser.cpp" break; - case 234: /* join_type: LEFT */ -#line 1777 "parser.y" + case 235: /* join_type: LEFT */ +#line 1794 "parser.y" { (yyval.join_type_t) = infinity::JoinType::kLeft; } -#line 5785 "parser.cpp" +#line 5798 "parser.cpp" break; - case 235: /* join_type: RIGHT */ -#line 1780 "parser.y" + case 236: /* join_type: RIGHT */ +#line 1797 "parser.y" { (yyval.join_type_t) = infinity::JoinType::kRight; } -#line 5793 "parser.cpp" +#line 5806 "parser.cpp" break; - case 236: /* join_type: OUTER */ -#line 1783 "parser.y" + case 237: /* join_type: OUTER */ +#line 1800 "parser.y" { (yyval.join_type_t) = infinity::JoinType::kFull; } -#line 5801 "parser.cpp" +#line 5814 "parser.cpp" break; - case 237: /* join_type: FULL */ -#line 1786 "parser.y" + case 238: /* join_type: FULL */ +#line 1803 "parser.y" { (yyval.join_type_t) = infinity::JoinType::kFull; } -#line 5809 "parser.cpp" +#line 5822 "parser.cpp" break; - case 238: /* join_type: CROSS */ -#line 1789 "parser.y" + case 239: /* join_type: CROSS */ +#line 1806 "parser.y" { (yyval.join_type_t) = infinity::JoinType::kCross; } -#line 5817 "parser.cpp" +#line 5830 "parser.cpp" break; - case 239: /* join_type: %empty */ -#line 1792 "parser.y" + case 240: /* join_type: %empty */ +#line 1809 "parser.y" { } -#line 5824 "parser.cpp" +#line 5837 "parser.cpp" break; - case 240: /* show_statement: SHOW DATABASES */ -#line 1798 "parser.y" + case 241: /* show_statement: SHOW DATABASES */ +#line 1815 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kDatabases; } -#line 5833 "parser.cpp" +#line 5846 "parser.cpp" break; - case 241: /* show_statement: SHOW TABLES */ -#line 1802 "parser.y" + case 242: /* show_statement: SHOW TABLES */ +#line 1819 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kTables; } -#line 5842 "parser.cpp" +#line 5855 "parser.cpp" break; - case 242: /* show_statement: SHOW VIEWS */ -#line 1806 "parser.y" + case 243: /* show_statement: SHOW VIEWS */ +#line 1823 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kViews; } -#line 5851 "parser.cpp" +#line 5864 "parser.cpp" break; - case 243: /* show_statement: SHOW CONFIGS */ -#line 1810 "parser.y" + case 244: /* show_statement: SHOW CONFIGS */ +#line 1827 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kConfigs; } -#line 5860 "parser.cpp" +#line 5873 "parser.cpp" break; - case 244: /* show_statement: SHOW CONFIG IDENTIFIER */ -#line 1814 "parser.y" + case 245: /* show_statement: SHOW CONFIG IDENTIFIER */ +#line 1831 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kConfig; @@ -5868,127 +5881,127 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->var_name_ = std::string((yyvsp[0].str_value)); free((yyvsp[0].str_value)); } -#line 5872 "parser.cpp" +#line 5885 "parser.cpp" break; - case 245: /* show_statement: SHOW PROFILES */ -#line 1821 "parser.y" + case 246: /* show_statement: SHOW PROFILES */ +#line 1838 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kProfiles; } -#line 5881 "parser.cpp" +#line 5894 "parser.cpp" break; - case 246: /* show_statement: SHOW BUFFER */ -#line 1825 "parser.y" + case 247: /* show_statement: SHOW BUFFER */ +#line 1842 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kBuffer; } -#line 5890 "parser.cpp" +#line 5903 "parser.cpp" break; - case 247: /* show_statement: SHOW MEMINDEX */ -#line 1829 "parser.y" + case 248: /* show_statement: SHOW MEMINDEX */ +#line 1846 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kMemIndex; } -#line 5899 "parser.cpp" +#line 5912 "parser.cpp" break; - case 248: /* show_statement: SHOW QUERIES */ -#line 1833 "parser.y" + case 249: /* show_statement: SHOW QUERIES */ +#line 1850 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kQueries; } -#line 5908 "parser.cpp" +#line 5921 "parser.cpp" break; - case 249: /* show_statement: SHOW QUERY LONG_VALUE */ -#line 1837 "parser.y" + case 250: /* show_statement: SHOW QUERY LONG_VALUE */ +#line 1854 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kQuery; (yyval.show_stmt)->session_id_ = (yyvsp[0].long_value); } -#line 5918 "parser.cpp" +#line 5931 "parser.cpp" break; - case 250: /* show_statement: SHOW TRANSACTIONS */ -#line 1842 "parser.y" + case 251: /* show_statement: SHOW TRANSACTIONS */ +#line 1859 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kTransactions; } -#line 5927 "parser.cpp" +#line 5940 "parser.cpp" break; - case 251: /* show_statement: SHOW TRANSACTION LONG_VALUE */ -#line 1846 "parser.y" + case 252: /* show_statement: SHOW TRANSACTION LONG_VALUE */ +#line 1863 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kTransaction; (yyval.show_stmt)->txn_id_ = (yyvsp[0].long_value); } -#line 5937 "parser.cpp" +#line 5950 "parser.cpp" break; - case 252: /* show_statement: SHOW SESSION VARIABLES */ -#line 1851 "parser.y" + case 253: /* show_statement: SHOW SESSION VARIABLES */ +#line 1868 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kSessionVariables; } -#line 5946 "parser.cpp" +#line 5959 "parser.cpp" break; - case 253: /* show_statement: SHOW GLOBAL VARIABLES */ -#line 1855 "parser.y" + case 254: /* show_statement: SHOW GLOBAL VARIABLES */ +#line 1872 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kGlobalVariables; } -#line 5955 "parser.cpp" +#line 5968 "parser.cpp" break; - case 254: /* show_statement: SHOW SESSION VARIABLE IDENTIFIER */ -#line 1859 "parser.y" + case 255: /* show_statement: SHOW SESSION VARIABLE IDENTIFIER */ +#line 1876 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kSessionVariable; (yyval.show_stmt)->var_name_ = std::string((yyvsp[0].str_value)); free((yyvsp[0].str_value)); } -#line 5966 "parser.cpp" +#line 5979 "parser.cpp" break; - case 255: /* show_statement: SHOW GLOBAL VARIABLE IDENTIFIER */ -#line 1865 "parser.y" + case 256: /* show_statement: SHOW GLOBAL VARIABLE IDENTIFIER */ +#line 1882 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kGlobalVariable; (yyval.show_stmt)->var_name_ = std::string((yyvsp[0].str_value)); free((yyvsp[0].str_value)); } -#line 5977 "parser.cpp" +#line 5990 "parser.cpp" break; - case 256: /* show_statement: SHOW DATABASE IDENTIFIER */ -#line 1871 "parser.y" + case 257: /* show_statement: SHOW DATABASE IDENTIFIER */ +#line 1888 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kDatabase; (yyval.show_stmt)->schema_name_ = (yyvsp[0].str_value); free((yyvsp[0].str_value)); } -#line 5988 "parser.cpp" +#line 6001 "parser.cpp" break; - case 257: /* show_statement: SHOW TABLE table_name */ -#line 1877 "parser.y" + case 258: /* show_statement: SHOW TABLE table_name */ +#line 1894 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kTable; @@ -6000,11 +6013,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[0].table_name_t)->table_name_ptr_); delete (yyvsp[0].table_name_t); } -#line 6004 "parser.cpp" +#line 6017 "parser.cpp" break; - case 258: /* show_statement: SHOW TABLE table_name COLUMNS */ -#line 1888 "parser.y" + case 259: /* show_statement: SHOW TABLE table_name COLUMNS */ +#line 1905 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kColumns; @@ -6016,11 +6029,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].table_name_t)->table_name_ptr_); delete (yyvsp[-1].table_name_t); } -#line 6020 "parser.cpp" +#line 6033 "parser.cpp" break; - case 259: /* show_statement: SHOW TABLE table_name SEGMENTS */ -#line 1899 "parser.y" + case 260: /* show_statement: SHOW TABLE table_name SEGMENTS */ +#line 1916 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kSegments; @@ -6032,11 +6045,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].table_name_t)->table_name_ptr_); delete (yyvsp[-1].table_name_t); } -#line 6036 "parser.cpp" +#line 6049 "parser.cpp" break; - case 260: /* show_statement: SHOW TABLE table_name SEGMENT LONG_VALUE */ -#line 1910 "parser.y" + case 261: /* show_statement: SHOW TABLE table_name SEGMENT LONG_VALUE */ +#line 1927 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kSegment; @@ -6049,11 +6062,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->segment_id_ = (yyvsp[0].long_value); delete (yyvsp[-2].table_name_t); } -#line 6053 "parser.cpp" +#line 6066 "parser.cpp" break; - case 261: /* show_statement: SHOW TABLE table_name SEGMENT LONG_VALUE BLOCKS */ -#line 1922 "parser.y" + case 262: /* show_statement: SHOW TABLE table_name SEGMENT LONG_VALUE BLOCKS */ +#line 1939 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kBlocks; @@ -6066,11 +6079,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->segment_id_ = (yyvsp[-1].long_value); delete (yyvsp[-3].table_name_t); } -#line 6070 "parser.cpp" +#line 6083 "parser.cpp" break; - case 262: /* show_statement: SHOW TABLE table_name SEGMENT LONG_VALUE BLOCK LONG_VALUE */ -#line 1934 "parser.y" + case 263: /* show_statement: SHOW TABLE table_name SEGMENT LONG_VALUE BLOCK LONG_VALUE */ +#line 1951 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kBlock; @@ -6084,11 +6097,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->block_id_ = (yyvsp[0].long_value); delete (yyvsp[-4].table_name_t); } -#line 6088 "parser.cpp" +#line 6101 "parser.cpp" break; - case 263: /* show_statement: SHOW TABLE table_name SEGMENT LONG_VALUE BLOCK LONG_VALUE COLUMN LONG_VALUE */ -#line 1947 "parser.y" + case 264: /* show_statement: SHOW TABLE table_name SEGMENT LONG_VALUE BLOCK LONG_VALUE COLUMN LONG_VALUE */ +#line 1964 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kBlockColumn; @@ -6103,11 +6116,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->column_id_ = (yyvsp[0].long_value); delete (yyvsp[-6].table_name_t); } -#line 6107 "parser.cpp" +#line 6120 "parser.cpp" break; - case 264: /* show_statement: SHOW TABLE table_name INDEXES */ -#line 1961 "parser.y" + case 265: /* show_statement: SHOW TABLE table_name INDEXES */ +#line 1978 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kIndexes; @@ -6119,11 +6132,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].table_name_t)->table_name_ptr_); delete (yyvsp[-1].table_name_t); } -#line 6123 "parser.cpp" +#line 6136 "parser.cpp" break; - case 265: /* show_statement: SHOW TABLE table_name INDEX IDENTIFIER */ -#line 1972 "parser.y" + case 266: /* show_statement: SHOW TABLE table_name INDEX IDENTIFIER */ +#line 1989 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kIndex; @@ -6138,11 +6151,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->index_name_ = (yyvsp[0].str_value); free((yyvsp[0].str_value)); } -#line 6142 "parser.cpp" +#line 6155 "parser.cpp" break; - case 266: /* show_statement: SHOW TABLE table_name INDEX IDENTIFIER SEGMENT LONG_VALUE */ -#line 1986 "parser.y" + case 267: /* show_statement: SHOW TABLE table_name INDEX IDENTIFIER SEGMENT LONG_VALUE */ +#line 2003 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kIndexSegment; @@ -6159,11 +6172,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->segment_id_ = (yyvsp[0].long_value); } -#line 6163 "parser.cpp" +#line 6176 "parser.cpp" break; - case 267: /* show_statement: SHOW TABLE table_name INDEX IDENTIFIER SEGMENT LONG_VALUE CHUNK LONG_VALUE */ -#line 2002 "parser.y" + case 268: /* show_statement: SHOW TABLE table_name INDEX IDENTIFIER SEGMENT LONG_VALUE CHUNK LONG_VALUE */ +#line 2019 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kIndexChunk; @@ -6181,132 +6194,132 @@ YYLTYPE yylloc = yyloc_default; (yyval.show_stmt)->segment_id_ = (yyvsp[-2].long_value); (yyval.show_stmt)->chunk_id_ = (yyvsp[0].long_value); } -#line 6185 "parser.cpp" +#line 6198 "parser.cpp" break; - case 268: /* show_statement: SHOW LOGS */ -#line 2019 "parser.y" + case 269: /* show_statement: SHOW LOGS */ +#line 2036 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kLogs; } -#line 6194 "parser.cpp" +#line 6207 "parser.cpp" break; - case 269: /* show_statement: SHOW DELTA LOGS */ -#line 2023 "parser.y" + case 270: /* show_statement: SHOW DELTA LOGS */ +#line 2040 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kDeltaLogs; } -#line 6203 "parser.cpp" +#line 6216 "parser.cpp" break; - case 270: /* show_statement: SHOW CATALOGS */ -#line 2027 "parser.y" + case 271: /* show_statement: SHOW CATALOGS */ +#line 2044 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kCatalogs; } -#line 6212 "parser.cpp" +#line 6225 "parser.cpp" break; - case 271: /* show_statement: SHOW PERSISTENCE FILES */ -#line 2031 "parser.y" + case 272: /* show_statement: SHOW PERSISTENCE FILES */ +#line 2048 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kPersistenceFiles; } -#line 6221 "parser.cpp" +#line 6234 "parser.cpp" break; - case 272: /* show_statement: SHOW PERSISTENCE OBJECTS */ -#line 2035 "parser.y" + case 273: /* show_statement: SHOW PERSISTENCE OBJECTS */ +#line 2052 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kPersistenceObjects; } -#line 6230 "parser.cpp" +#line 6243 "parser.cpp" break; - case 273: /* show_statement: SHOW PERSISTENCE OBJECT STRING */ -#line 2039 "parser.y" + case 274: /* show_statement: SHOW PERSISTENCE OBJECT STRING */ +#line 2056 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kPersistenceObject; (yyval.show_stmt)->file_name_ = (yyvsp[0].str_value); free((yyvsp[0].str_value)); } -#line 6241 "parser.cpp" +#line 6254 "parser.cpp" break; - case 274: /* show_statement: SHOW MEMORY */ -#line 2045 "parser.y" + case 275: /* show_statement: SHOW MEMORY */ +#line 2062 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kMemory; } -#line 6250 "parser.cpp" +#line 6263 "parser.cpp" break; - case 275: /* show_statement: SHOW MEMORY OBJECTS */ -#line 2049 "parser.y" + case 276: /* show_statement: SHOW MEMORY OBJECTS */ +#line 2066 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kMemoryObjects; } -#line 6259 "parser.cpp" +#line 6272 "parser.cpp" break; - case 276: /* show_statement: SHOW MEMORY ALLOCATION */ -#line 2053 "parser.y" + case 277: /* show_statement: SHOW MEMORY ALLOCATION */ +#line 2070 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kMemoryAllocation; } -#line 6268 "parser.cpp" +#line 6281 "parser.cpp" break; - case 277: /* show_statement: SHOW IDENTIFIER '(' ')' */ -#line 2057 "parser.y" + case 278: /* show_statement: SHOW IDENTIFIER '(' ')' */ +#line 2074 "parser.y" { (yyval.show_stmt) = new infinity::ShowStatement(); (yyval.show_stmt)->show_type_ = infinity::ShowStmtType::kFunction; (yyval.show_stmt)->function_name_ = (yyvsp[-2].str_value); free((yyvsp[-2].str_value)); } -#line 6279 "parser.cpp" +#line 6292 "parser.cpp" break; - case 278: /* flush_statement: FLUSH DATA */ -#line 2067 "parser.y" + case 279: /* flush_statement: FLUSH DATA */ +#line 2084 "parser.y" { (yyval.flush_stmt) = new infinity::FlushStatement(); (yyval.flush_stmt)->type_ = infinity::FlushType::kData; } -#line 6288 "parser.cpp" +#line 6301 "parser.cpp" break; - case 279: /* flush_statement: FLUSH LOG */ -#line 2071 "parser.y" + case 280: /* flush_statement: FLUSH LOG */ +#line 2088 "parser.y" { (yyval.flush_stmt) = new infinity::FlushStatement(); (yyval.flush_stmt)->type_ = infinity::FlushType::kLog; } -#line 6297 "parser.cpp" +#line 6310 "parser.cpp" break; - case 280: /* flush_statement: FLUSH BUFFER */ -#line 2075 "parser.y" + case 281: /* flush_statement: FLUSH BUFFER */ +#line 2092 "parser.y" { (yyval.flush_stmt) = new infinity::FlushStatement(); (yyval.flush_stmt)->type_ = infinity::FlushType::kBuffer; } -#line 6306 "parser.cpp" +#line 6319 "parser.cpp" break; - case 281: /* optimize_statement: OPTIMIZE table_name */ -#line 2083 "parser.y" + case 282: /* optimize_statement: OPTIMIZE table_name */ +#line 2100 "parser.y" { (yyval.optimize_stmt) = new infinity::OptimizeStatement(); if((yyvsp[0].table_name_t)->schema_name_ptr_ != nullptr) { @@ -6317,11 +6330,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[0].table_name_t)->table_name_ptr_); delete (yyvsp[0].table_name_t); } -#line 6321 "parser.cpp" +#line 6334 "parser.cpp" break; - case 282: /* optimize_statement: OPTIMIZE IDENTIFIER ON table_name with_index_param_list */ -#line 2094 "parser.y" + case 283: /* optimize_statement: OPTIMIZE IDENTIFIER ON table_name with_index_param_list */ +#line 2111 "parser.y" { (yyval.optimize_stmt) = new infinity::OptimizeStatement(); if((yyvsp[-1].table_name_t)->schema_name_ptr_ != nullptr) { @@ -6341,54 +6354,54 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[0].with_index_param_list_t); } -#line 6345 "parser.cpp" +#line 6358 "parser.cpp" break; - case 283: /* command_statement: USE IDENTIFIER */ -#line 2117 "parser.y" + case 284: /* command_statement: USE IDENTIFIER */ +#line 2134 "parser.y" { (yyval.command_stmt) = new infinity::CommandStatement(); ParserHelper::ToLower((yyvsp[0].str_value)); (yyval.command_stmt)->command_info_ = std::make_shared((yyvsp[0].str_value)); free((yyvsp[0].str_value)); } -#line 6356 "parser.cpp" +#line 6369 "parser.cpp" break; - case 284: /* command_statement: EXPORT PROFILES LONG_VALUE file_path */ -#line 2123 "parser.y" + case 285: /* command_statement: EXPORT PROFILES LONG_VALUE file_path */ +#line 2140 "parser.y" { (yyval.command_stmt) = new infinity::CommandStatement(); (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 6366 "parser.cpp" +#line 6379 "parser.cpp" break; - case 285: /* command_statement: SET SESSION IDENTIFIER ON */ -#line 2128 "parser.y" + case 286: /* command_statement: SET SESSION IDENTIFIER ON */ +#line 2145 "parser.y" { ParserHelper::ToLower((yyvsp[-1].str_value)); (yyval.command_stmt) = new infinity::CommandStatement(); (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 6377 "parser.cpp" +#line 6390 "parser.cpp" break; - case 286: /* command_statement: SET SESSION IDENTIFIER OFF */ -#line 2134 "parser.y" + case 287: /* command_statement: SET SESSION IDENTIFIER OFF */ +#line 2151 "parser.y" { ParserHelper::ToLower((yyvsp[-1].str_value)); (yyval.command_stmt) = new infinity::CommandStatement(); (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 6388 "parser.cpp" +#line 6401 "parser.cpp" break; - case 287: /* command_statement: SET SESSION IDENTIFIER IDENTIFIER */ -#line 2140 "parser.y" + case 288: /* command_statement: SET SESSION IDENTIFIER IDENTIFIER */ +#line 2157 "parser.y" { ParserHelper::ToLower((yyvsp[-1].str_value)); ParserHelper::ToLower((yyvsp[0].str_value)); @@ -6397,55 +6410,55 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].str_value)); free((yyvsp[0].str_value)); } -#line 6401 "parser.cpp" +#line 6414 "parser.cpp" break; - case 288: /* command_statement: SET SESSION IDENTIFIER LONG_VALUE */ -#line 2148 "parser.y" + case 289: /* command_statement: SET SESSION IDENTIFIER LONG_VALUE */ +#line 2165 "parser.y" { ParserHelper::ToLower((yyvsp[-1].str_value)); (yyval.command_stmt) = new infinity::CommandStatement(); (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 6412 "parser.cpp" +#line 6425 "parser.cpp" break; - case 289: /* command_statement: SET SESSION IDENTIFIER DOUBLE_VALUE */ -#line 2154 "parser.y" + case 290: /* command_statement: SET SESSION IDENTIFIER DOUBLE_VALUE */ +#line 2171 "parser.y" { ParserHelper::ToLower((yyvsp[-1].str_value)); (yyval.command_stmt) = new infinity::CommandStatement(); (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 6423 "parser.cpp" +#line 6436 "parser.cpp" break; - case 290: /* command_statement: SET GLOBAL IDENTIFIER ON */ -#line 2160 "parser.y" + case 291: /* command_statement: SET GLOBAL IDENTIFIER ON */ +#line 2177 "parser.y" { ParserHelper::ToLower((yyvsp[-1].str_value)); (yyval.command_stmt) = new infinity::CommandStatement(); (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 6434 "parser.cpp" +#line 6447 "parser.cpp" break; - case 291: /* command_statement: SET GLOBAL IDENTIFIER OFF */ -#line 2166 "parser.y" + case 292: /* command_statement: SET GLOBAL IDENTIFIER OFF */ +#line 2183 "parser.y" { ParserHelper::ToLower((yyvsp[-1].str_value)); (yyval.command_stmt) = new infinity::CommandStatement(); (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 6445 "parser.cpp" +#line 6458 "parser.cpp" break; - case 292: /* command_statement: SET GLOBAL IDENTIFIER IDENTIFIER */ -#line 2172 "parser.y" + case 293: /* command_statement: SET GLOBAL IDENTIFIER IDENTIFIER */ +#line 2189 "parser.y" { ParserHelper::ToLower((yyvsp[-1].str_value)); ParserHelper::ToLower((yyvsp[0].str_value)); @@ -6454,55 +6467,55 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].str_value)); free((yyvsp[0].str_value)); } -#line 6458 "parser.cpp" +#line 6471 "parser.cpp" break; - case 293: /* command_statement: SET GLOBAL IDENTIFIER LONG_VALUE */ -#line 2180 "parser.y" + case 294: /* command_statement: SET GLOBAL IDENTIFIER LONG_VALUE */ +#line 2197 "parser.y" { ParserHelper::ToLower((yyvsp[-1].str_value)); (yyval.command_stmt) = new infinity::CommandStatement(); (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 6469 "parser.cpp" +#line 6482 "parser.cpp" break; - case 294: /* command_statement: SET GLOBAL IDENTIFIER DOUBLE_VALUE */ -#line 2186 "parser.y" + case 295: /* command_statement: SET GLOBAL IDENTIFIER DOUBLE_VALUE */ +#line 2203 "parser.y" { ParserHelper::ToLower((yyvsp[-1].str_value)); (yyval.command_stmt) = new infinity::CommandStatement(); (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 6480 "parser.cpp" +#line 6493 "parser.cpp" break; - case 295: /* command_statement: SET CONFIG IDENTIFIER ON */ -#line 2192 "parser.y" + case 296: /* command_statement: SET CONFIG IDENTIFIER ON */ +#line 2209 "parser.y" { ParserHelper::ToLower((yyvsp[-1].str_value)); (yyval.command_stmt) = new infinity::CommandStatement(); (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 6491 "parser.cpp" +#line 6504 "parser.cpp" break; - case 296: /* command_statement: SET CONFIG IDENTIFIER OFF */ -#line 2198 "parser.y" + case 297: /* command_statement: SET CONFIG IDENTIFIER OFF */ +#line 2215 "parser.y" { ParserHelper::ToLower((yyvsp[-1].str_value)); (yyval.command_stmt) = new infinity::CommandStatement(); (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 6502 "parser.cpp" +#line 6515 "parser.cpp" break; - case 297: /* command_statement: SET CONFIG IDENTIFIER IDENTIFIER */ -#line 2204 "parser.y" + case 298: /* command_statement: SET CONFIG IDENTIFIER IDENTIFIER */ +#line 2221 "parser.y" { ParserHelper::ToLower((yyvsp[-1].str_value)); ParserHelper::ToLower((yyvsp[0].str_value)); @@ -6511,33 +6524,33 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].str_value)); free((yyvsp[0].str_value)); } -#line 6515 "parser.cpp" +#line 6528 "parser.cpp" break; - case 298: /* command_statement: SET CONFIG IDENTIFIER LONG_VALUE */ -#line 2212 "parser.y" + case 299: /* command_statement: SET CONFIG IDENTIFIER LONG_VALUE */ +#line 2229 "parser.y" { ParserHelper::ToLower((yyvsp[-1].str_value)); (yyval.command_stmt) = new infinity::CommandStatement(); (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 6526 "parser.cpp" +#line 6539 "parser.cpp" break; - case 299: /* command_statement: SET CONFIG IDENTIFIER DOUBLE_VALUE */ -#line 2218 "parser.y" + case 300: /* command_statement: SET CONFIG IDENTIFIER DOUBLE_VALUE */ +#line 2235 "parser.y" { ParserHelper::ToLower((yyvsp[-1].str_value)); (yyval.command_stmt) = new infinity::CommandStatement(); (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 6537 "parser.cpp" +#line 6550 "parser.cpp" break; - case 300: /* command_statement: LOCK TABLE table_name */ -#line 2224 "parser.y" + case 301: /* command_statement: LOCK TABLE table_name */ +#line 2241 "parser.y" { (yyval.command_stmt) = new infinity::CommandStatement(); ParserHelper::ToLower((yyvsp[0].table_name_t)->schema_name_ptr_); @@ -6547,11 +6560,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[0].table_name_t)->table_name_ptr_); delete (yyvsp[0].table_name_t); } -#line 6551 "parser.cpp" +#line 6564 "parser.cpp" break; - case 301: /* command_statement: UNLOCK TABLE table_name */ -#line 2233 "parser.y" + case 302: /* command_statement: UNLOCK TABLE table_name */ +#line 2250 "parser.y" { (yyval.command_stmt) = new infinity::CommandStatement(); ParserHelper::ToLower((yyvsp[0].table_name_t)->schema_name_ptr_); @@ -6561,11 +6574,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[0].table_name_t)->table_name_ptr_); delete (yyvsp[0].table_name_t); } -#line 6565 "parser.cpp" +#line 6578 "parser.cpp" break; - case 302: /* compact_statement: COMPACT TABLE table_name */ -#line 2243 "parser.y" + case 303: /* compact_statement: COMPACT TABLE table_name */ +#line 2260 "parser.y" { std::string schema_name; if ((yyvsp[0].table_name_t)->schema_name_ptr_ != nullptr) { @@ -6578,41 +6591,41 @@ 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 6582 "parser.cpp" +#line 6595 "parser.cpp" break; - case 303: /* admin_statement: ADMIN SHOW CATALOGS */ -#line 2256 "parser.y" + case 304: /* admin_statement: ADMIN SHOW CATALOGS */ +#line 2273 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kListCatalogs; } -#line 6591 "parser.cpp" +#line 6604 "parser.cpp" break; - case 304: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE */ -#line 2260 "parser.y" + case 305: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE */ +#line 2277 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kShowCatalog; (yyval.admin_stmt)->catalog_file_index_ = (yyvsp[0].long_value); } -#line 6601 "parser.cpp" +#line 6614 "parser.cpp" break; - case 305: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASES */ -#line 2265 "parser.y" + case 306: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASES */ +#line 2282 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kListDatabases; (yyval.admin_stmt)->catalog_file_start_index_ = (yyvsp[-2].long_value); (yyval.admin_stmt)->catalog_file_end_index_ = (yyvsp[-1].long_value); } -#line 6612 "parser.cpp" +#line 6625 "parser.cpp" break; - case 306: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE */ -#line 2271 "parser.y" + case 307: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE */ +#line 2288 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kShowDatabase; @@ -6620,11 +6633,11 @@ 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 6624 "parser.cpp" +#line 6637 "parser.cpp" break; - case 307: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLES */ -#line 2278 "parser.y" + case 308: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLES */ +#line 2295 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kListTables; @@ -6633,11 +6646,11 @@ 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 6637 "parser.cpp" +#line 6650 "parser.cpp" break; - case 308: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLE LONG_VALUE */ -#line 2286 "parser.y" + case 309: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLE LONG_VALUE */ +#line 2303 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kShowTable; @@ -6647,11 +6660,11 @@ 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 6651 "parser.cpp" +#line 6664 "parser.cpp" break; - case 309: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLE LONG_VALUE LONG_VALUE COLUMNS */ -#line 2295 "parser.y" + case 310: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLE LONG_VALUE LONG_VALUE COLUMNS */ +#line 2312 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kShowColumn; @@ -6662,11 +6675,11 @@ 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 6666 "parser.cpp" +#line 6679 "parser.cpp" break; - case 310: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLE LONG_VALUE LONG_VALUE SEGMENTS */ -#line 2305 "parser.y" + case 311: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLE LONG_VALUE LONG_VALUE SEGMENTS */ +#line 2322 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kListSegments; @@ -6677,11 +6690,11 @@ 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 6681 "parser.cpp" +#line 6694 "parser.cpp" break; - case 311: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLE LONG_VALUE LONG_VALUE SEGMENT LONG_VALUE */ -#line 2315 "parser.y" + case 312: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLE LONG_VALUE LONG_VALUE SEGMENT LONG_VALUE */ +#line 2332 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kShowSegment; @@ -6693,11 +6706,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt)->table_entry_index_ = (yyvsp[-2].long_value); (yyval.admin_stmt)->segment_index_ = (yyvsp[0].long_value); } -#line 6697 "parser.cpp" +#line 6710 "parser.cpp" break; - case 312: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLE LONG_VALUE LONG_VALUE SEGMENT LONG_VALUE BLOCKS */ -#line 2326 "parser.y" + case 313: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLE LONG_VALUE LONG_VALUE SEGMENT LONG_VALUE BLOCKS */ +#line 2343 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kListBlocks; @@ -6709,11 +6722,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt)->table_entry_index_ = (yyvsp[-3].long_value); (yyval.admin_stmt)->segment_index_ = (yyvsp[-1].long_value); } -#line 6713 "parser.cpp" +#line 6726 "parser.cpp" break; - case 313: /* 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 */ -#line 2337 "parser.y" + case 314: /* 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 */ +#line 2354 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kShowBlock; @@ -6726,11 +6739,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt)->segment_index_ = (yyvsp[-2].long_value); (yyval.admin_stmt)->block_index_ = (yyvsp[0].long_value); } -#line 6730 "parser.cpp" +#line 6743 "parser.cpp" break; - case 314: /* 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 */ -#line 2349 "parser.y" + case 315: /* 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 */ +#line 2366 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kListColumns; @@ -6743,11 +6756,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt)->segment_index_ = (yyvsp[-3].long_value); (yyval.admin_stmt)->block_index_ = (yyvsp[-1].long_value); } -#line 6747 "parser.cpp" +#line 6760 "parser.cpp" break; - case 315: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLE LONG_VALUE LONG_VALUE INDEXES */ -#line 2361 "parser.y" + case 316: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLE LONG_VALUE LONG_VALUE INDEXES */ +#line 2378 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kListIndexes; @@ -6758,11 +6771,11 @@ 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 6762 "parser.cpp" +#line 6775 "parser.cpp" break; - case 316: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLE LONG_VALUE LONG_VALUE INDEX LONG_VALUE */ -#line 2371 "parser.y" + case 317: /* admin_statement: ADMIN SHOW CATALOG LONG_VALUE LONG_VALUE DATABASE LONG_VALUE LONG_VALUE TABLE LONG_VALUE LONG_VALUE INDEX LONG_VALUE */ +#line 2388 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kShowIndex; @@ -6774,11 +6787,11 @@ 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 6778 "parser.cpp" +#line 6791 "parser.cpp" break; - case 317: /* 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 */ -#line 2382 "parser.y" + case 318: /* 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 */ +#line 2399 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kListIndexSegments; @@ -6791,11 +6804,11 @@ 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 6795 "parser.cpp" +#line 6808 "parser.cpp" break; - case 318: /* 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 */ -#line 2394 "parser.y" + case 319: /* 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 */ +#line 2411 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kShowIndexSegment; @@ -6809,129 +6822,129 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt)->index_entry_index_ = (yyvsp[-2].long_value); (yyval.admin_stmt)->segment_index_ = (yyvsp[0].long_value); } -#line 6813 "parser.cpp" +#line 6826 "parser.cpp" break; - case 319: /* admin_statement: ADMIN SHOW LOGS */ -#line 2407 "parser.y" + case 320: /* admin_statement: ADMIN SHOW LOGS */ +#line 2424 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kListLogFiles; } -#line 6822 "parser.cpp" +#line 6835 "parser.cpp" break; - case 320: /* admin_statement: ADMIN SHOW LOG LONG_VALUE */ -#line 2411 "parser.y" + case 321: /* admin_statement: ADMIN SHOW LOG LONG_VALUE */ +#line 2428 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kShowLogFile; (yyval.admin_stmt)->log_file_index_ = (yyvsp[0].long_value); } -#line 6832 "parser.cpp" +#line 6845 "parser.cpp" break; - case 321: /* admin_statement: ADMIN SHOW LOG LONG_VALUE INDEXES */ -#line 2416 "parser.y" + case 322: /* admin_statement: ADMIN SHOW LOG LONG_VALUE INDEXES */ +#line 2433 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kListLogIndexes; (yyval.admin_stmt)->log_file_index_ = (yyvsp[-1].long_value); } -#line 6842 "parser.cpp" +#line 6855 "parser.cpp" break; - case 322: /* admin_statement: ADMIN SHOW LOG LONG_VALUE INDEX LONG_VALUE */ -#line 2421 "parser.y" + case 323: /* admin_statement: ADMIN SHOW LOG LONG_VALUE INDEX LONG_VALUE */ +#line 2438 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kShowLogIndex; (yyval.admin_stmt)->log_file_index_ = (yyvsp[-2].long_value); (yyval.admin_stmt)->log_index_in_file_ = (yyvsp[0].long_value); } -#line 6853 "parser.cpp" +#line 6866 "parser.cpp" break; - case 323: /* admin_statement: ADMIN SHOW CONFIGS */ -#line 2427 "parser.y" + case 324: /* admin_statement: ADMIN SHOW CONFIGS */ +#line 2444 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kListConfigs; } -#line 6862 "parser.cpp" +#line 6875 "parser.cpp" break; - case 324: /* admin_statement: ADMIN SHOW VARIABLES */ -#line 2431 "parser.y" + case 325: /* admin_statement: ADMIN SHOW VARIABLES */ +#line 2448 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kListVariables; } -#line 6871 "parser.cpp" +#line 6884 "parser.cpp" break; - case 325: /* admin_statement: ADMIN SHOW VARIABLE IDENTIFIER */ -#line 2435 "parser.y" + case 326: /* admin_statement: ADMIN SHOW VARIABLE IDENTIFIER */ +#line 2452 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kShowVariable; (yyval.admin_stmt)->variable_name_ = (yyvsp[0].str_value); free((yyvsp[0].str_value)); } -#line 6882 "parser.cpp" +#line 6895 "parser.cpp" break; - case 326: /* admin_statement: ADMIN SHOW NODES */ -#line 2441 "parser.y" + case 327: /* admin_statement: ADMIN SHOW NODES */ +#line 2458 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kListNodes; } -#line 6891 "parser.cpp" +#line 6904 "parser.cpp" break; - case 327: /* admin_statement: ADMIN SHOW NODE STRING */ -#line 2445 "parser.y" + case 328: /* admin_statement: ADMIN SHOW NODE STRING */ +#line 2462 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kShowNode; (yyval.admin_stmt)->node_name_ = (yyvsp[0].str_value); free((yyvsp[0].str_value)); } -#line 6902 "parser.cpp" +#line 6915 "parser.cpp" break; - case 328: /* admin_statement: ADMIN SHOW NODE */ -#line 2451 "parser.y" + case 329: /* admin_statement: ADMIN SHOW NODE */ +#line 2468 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kShowCurrentNode; } -#line 6911 "parser.cpp" +#line 6924 "parser.cpp" break; - case 329: /* admin_statement: ADMIN SET ADMIN */ -#line 2455 "parser.y" + case 330: /* admin_statement: ADMIN SET ADMIN */ +#line 2472 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kSetRole; (yyval.admin_stmt)->admin_node_role_ = infinity::AdminNodeRole::kAdmin; } -#line 6921 "parser.cpp" +#line 6934 "parser.cpp" break; - case 330: /* admin_statement: ADMIN SET STANDALONE */ -#line 2460 "parser.y" + case 331: /* admin_statement: ADMIN SET STANDALONE */ +#line 2477 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kSetRole; (yyval.admin_stmt)->admin_node_role_ = infinity::AdminNodeRole::kStandalone; } -#line 6931 "parser.cpp" +#line 6944 "parser.cpp" break; - case 331: /* admin_statement: ADMIN SET LEADER USING STRING */ -#line 2465 "parser.y" + case 332: /* admin_statement: ADMIN SET LEADER USING STRING */ +#line 2482 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kSetRole; @@ -6939,11 +6952,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.admin_stmt)->node_name_ = (yyvsp[0].str_value); free((yyvsp[0].str_value)); } -#line 6943 "parser.cpp" +#line 6956 "parser.cpp" break; - case 332: /* admin_statement: ADMIN CONNECT STRING AS FOLLOWER USING STRING */ -#line 2472 "parser.y" + case 333: /* admin_statement: ADMIN CONNECT STRING AS FOLLOWER USING STRING */ +#line 2489 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kSetRole; @@ -6953,11 +6966,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-4].str_value)); free((yyvsp[0].str_value)); } -#line 6957 "parser.cpp" +#line 6970 "parser.cpp" break; - case 333: /* admin_statement: ADMIN CONNECT STRING AS LEARNER USING STRING */ -#line 2481 "parser.y" + case 334: /* admin_statement: ADMIN CONNECT STRING AS LEARNER USING STRING */ +#line 2498 "parser.y" { (yyval.admin_stmt) = new infinity::AdminStatement(); (yyval.admin_stmt)->admin_type_ = infinity::AdminStmtType::kSetRole; @@ -6967,11 +6980,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-4].str_value)); free((yyvsp[0].str_value)); } -#line 6971 "parser.cpp" +#line 6984 "parser.cpp" break; - case 334: /* alter_statement: ALTER TABLE table_name RENAME TO IDENTIFIER */ -#line 2491 "parser.y" + case 335: /* alter_statement: ALTER TABLE table_name RENAME TO IDENTIFIER */ +#line 2508 "parser.y" { auto *ret = new infinity::RenameTableStatement((yyvsp[-3].table_name_t)->schema_name_ptr_, (yyvsp[-3].table_name_t)->table_name_ptr_); (yyval.alter_stmt) = ret; @@ -6981,11 +6994,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-3].table_name_t)->table_name_ptr_); delete (yyvsp[-3].table_name_t); } -#line 6985 "parser.cpp" +#line 6998 "parser.cpp" break; - case 335: /* alter_statement: ALTER TABLE table_name ADD COLUMN '(' column_def_array ')' */ -#line 2500 "parser.y" + case 336: /* alter_statement: ALTER TABLE table_name ADD COLUMN '(' column_def_array ')' */ +#line 2517 "parser.y" { auto *ret = new infinity::AddColumnsStatement((yyvsp[-5].table_name_t)->schema_name_ptr_, (yyvsp[-5].table_name_t)->table_name_ptr_); (yyval.alter_stmt) = ret; @@ -6998,11 +7011,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-5].table_name_t)->table_name_ptr_); delete (yyvsp[-5].table_name_t); } -#line 7002 "parser.cpp" +#line 7015 "parser.cpp" break; - case 336: /* alter_statement: ALTER TABLE table_name DROP COLUMN '(' identifier_array ')' */ -#line 2512 "parser.y" + case 337: /* alter_statement: ALTER TABLE table_name DROP COLUMN '(' identifier_array ')' */ +#line 2529 "parser.y" { auto *ret = new infinity::DropColumnsStatement((yyvsp[-5].table_name_t)->schema_name_ptr_, (yyvsp[-5].table_name_t)->table_name_ptr_); (yyval.alter_stmt) = ret; @@ -7014,38 +7027,38 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-5].table_name_t)->table_name_ptr_); delete (yyvsp[-5].table_name_t); } -#line 7018 "parser.cpp" +#line 7031 "parser.cpp" break; - case 337: /* expr_array: expr_alias */ -#line 2528 "parser.y" + case 338: /* expr_array: expr_alias */ +#line 2545 "parser.y" { (yyval.expr_array_t) = new std::vector(); (yyval.expr_array_t)->emplace_back((yyvsp[0].expr_t)); } -#line 7027 "parser.cpp" +#line 7040 "parser.cpp" break; - case 338: /* expr_array: expr_array ',' expr_alias */ -#line 2532 "parser.y" + case 339: /* expr_array: expr_array ',' expr_alias */ +#line 2549 "parser.y" { (yyvsp[-2].expr_array_t)->emplace_back((yyvsp[0].expr_t)); (yyval.expr_array_t) = (yyvsp[-2].expr_array_t); } -#line 7036 "parser.cpp" +#line 7049 "parser.cpp" break; - case 339: /* expr_array_list: '(' expr_array ')' */ -#line 2537 "parser.y" + case 340: /* expr_array_list: '(' expr_array ')' */ +#line 2554 "parser.y" { (yyval.expr_array_list_t) = new std::vector*>(); (yyval.expr_array_list_t)->push_back((yyvsp[-1].expr_array_t)); } -#line 7045 "parser.cpp" +#line 7058 "parser.cpp" break; - case 340: /* expr_array_list: expr_array_list ',' '(' expr_array ')' */ -#line 2541 "parser.y" + case 341: /* expr_array_list: expr_array_list ',' '(' expr_array ')' */ +#line 2558 "parser.y" { if(!(yyvsp[-4].expr_array_list_t)->empty() && (yyvsp[-4].expr_array_list_t)->back()->size() != (yyvsp[-1].expr_array_t)->size()) { yyerror(&yyloc, scanner, result, "The expr_array in list shall have the same size."); @@ -7067,57 +7080,57 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-4].expr_array_list_t)->push_back((yyvsp[-1].expr_array_t)); (yyval.expr_array_list_t) = (yyvsp[-4].expr_array_list_t); } -#line 7071 "parser.cpp" +#line 7084 "parser.cpp" break; - case 341: /* expr_alias: expr AS IDENTIFIER */ -#line 2574 "parser.y" + case 342: /* expr_alias: expr AS IDENTIFIER */ +#line 2591 "parser.y" { (yyval.expr_t) = (yyvsp[-2].expr_t); ParserHelper::ToLower((yyvsp[0].str_value)); (yyval.expr_t)->alias_ = (yyvsp[0].str_value); free((yyvsp[0].str_value)); } -#line 7082 "parser.cpp" +#line 7095 "parser.cpp" break; - case 342: /* expr_alias: expr */ -#line 2580 "parser.y" + case 343: /* expr_alias: expr */ +#line 2597 "parser.y" { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 7090 "parser.cpp" +#line 7103 "parser.cpp" break; - case 348: /* operand: '(' expr ')' */ -#line 2590 "parser.y" + case 349: /* operand: '(' expr ')' */ +#line 2607 "parser.y" { (yyval.expr_t) = (yyvsp[-1].expr_t); } -#line 7098 "parser.cpp" +#line 7111 "parser.cpp" break; - case 349: /* operand: '(' select_without_paren ')' */ -#line 2593 "parser.y" + case 350: /* operand: '(' select_without_paren ')' */ +#line 2610 "parser.y" { infinity::SubqueryExpr* subquery_expr = new infinity::SubqueryExpr(); subquery_expr->subquery_type_ = infinity::SubqueryType::kScalar; subquery_expr->select_ = (yyvsp[-1].select_stmt); (yyval.expr_t) = subquery_expr; } -#line 7109 "parser.cpp" +#line 7122 "parser.cpp" break; - case 350: /* operand: constant_expr */ -#line 2599 "parser.y" + case 351: /* operand: constant_expr */ +#line 2616 "parser.y" { (yyval.expr_t) = (yyvsp[0].const_expr_t); } -#line 7117 "parser.cpp" +#line 7130 "parser.cpp" break; - case 361: /* match_tensor_expr: MATCH TENSOR '(' column_expr ',' common_array_expr ',' STRING ',' STRING ',' STRING optional_search_filter_expr ')' */ -#line 2615 "parser.y" + case 362: /* match_tensor_expr: MATCH TENSOR '(' column_expr ',' common_array_expr ',' STRING ',' STRING ',' STRING optional_search_filter_expr ')' */ +#line 2632 "parser.y" { auto match_tensor_expr = std::make_unique(); // search column @@ -7133,11 +7146,11 @@ YYLTYPE yylloc = yyloc_default; match_tensor_expr->SetOptionalFilter((yyvsp[-1].expr_t)); (yyval.expr_t) = match_tensor_expr.release(); } -#line 7137 "parser.cpp" +#line 7150 "parser.cpp" break; - case 362: /* match_vector_expr: MATCH VECTOR '(' expr ',' array_expr ',' STRING ',' STRING ',' LONG_VALUE optional_search_filter_expr ')' USING INDEX '(' IDENTIFIER ')' with_index_param_list */ -#line 2633 "parser.y" + case 363: /* match_vector_expr: MATCH VECTOR '(' expr ',' array_expr ',' STRING ',' STRING ',' LONG_VALUE optional_search_filter_expr ')' USING INDEX '(' IDENTIFIER ')' with_index_param_list */ +#line 2650 "parser.y" { infinity::KnnExpr* match_vector_expr = new infinity::KnnExpr(); (yyval.expr_t) = match_vector_expr; @@ -7183,11 +7196,11 @@ YYLTYPE yylloc = yyloc_default; Return1: ; } -#line 7187 "parser.cpp" +#line 7200 "parser.cpp" break; - case 363: /* match_vector_expr: MATCH VECTOR '(' expr ',' array_expr ',' STRING ',' STRING ',' LONG_VALUE optional_search_filter_expr ')' IGNORE INDEX */ -#line 2679 "parser.y" + case 364: /* match_vector_expr: MATCH VECTOR '(' expr ',' array_expr ',' STRING ',' STRING ',' LONG_VALUE optional_search_filter_expr ')' IGNORE INDEX */ +#line 2696 "parser.y" { infinity::KnnExpr* match_vector_expr = new infinity::KnnExpr(); (yyval.expr_t) = match_vector_expr; @@ -7226,11 +7239,11 @@ YYLTYPE yylloc = yyloc_default; Return2: ; } -#line 7230 "parser.cpp" +#line 7243 "parser.cpp" break; - case 364: /* match_vector_expr: MATCH VECTOR '(' expr ',' array_expr ',' STRING ',' STRING ',' LONG_VALUE optional_search_filter_expr ')' with_index_param_list */ -#line 2718 "parser.y" + case 365: /* match_vector_expr: MATCH VECTOR '(' expr ',' array_expr ',' STRING ',' STRING ',' LONG_VALUE optional_search_filter_expr ')' with_index_param_list */ +#line 2735 "parser.y" { infinity::KnnExpr* match_vector_expr = new infinity::KnnExpr(); (yyval.expr_t) = match_vector_expr; @@ -7273,11 +7286,11 @@ YYLTYPE yylloc = yyloc_default; Return3: ; } -#line 7277 "parser.cpp" +#line 7290 "parser.cpp" break; - case 365: /* match_vector_expr: MATCH VECTOR '(' expr ',' array_expr ',' STRING ',' STRING optional_search_filter_expr ')' with_index_param_list */ -#line 2761 "parser.y" + case 366: /* match_vector_expr: MATCH VECTOR '(' expr ',' array_expr ',' STRING ',' STRING optional_search_filter_expr ')' with_index_param_list */ +#line 2778 "parser.y" { infinity::KnnExpr* match_vector_expr = new infinity::KnnExpr(); (yyval.expr_t) = match_vector_expr; @@ -7321,11 +7334,11 @@ YYLTYPE yylloc = yyloc_default; Return4: ; } -#line 7325 "parser.cpp" +#line 7338 "parser.cpp" break; - case 366: /* match_sparse_expr: MATCH SPARSE '(' expr ',' common_sparse_array_expr ',' STRING ',' LONG_VALUE optional_search_filter_expr ')' USING INDEX '(' IDENTIFIER ')' with_index_param_list */ -#line 2808 "parser.y" + case 367: /* match_sparse_expr: MATCH SPARSE '(' expr ',' common_sparse_array_expr ',' STRING ',' LONG_VALUE optional_search_filter_expr ')' USING INDEX '(' IDENTIFIER ')' with_index_param_list */ +#line 2825 "parser.y" { auto match_sparse_expr = new infinity::MatchSparseExpr(); (yyval.expr_t) = match_sparse_expr; @@ -7349,11 +7362,11 @@ YYLTYPE yylloc = yyloc_default; match_sparse_expr->index_name_ = (yyvsp[-2].str_value); free((yyvsp[-2].str_value)); } -#line 7353 "parser.cpp" +#line 7366 "parser.cpp" break; - case 367: /* match_sparse_expr: MATCH SPARSE '(' expr ',' common_sparse_array_expr ',' STRING ',' LONG_VALUE optional_search_filter_expr ')' IGNORE INDEX */ -#line 2832 "parser.y" + case 368: /* match_sparse_expr: MATCH SPARSE '(' expr ',' common_sparse_array_expr ',' STRING ',' LONG_VALUE optional_search_filter_expr ')' IGNORE INDEX */ +#line 2849 "parser.y" { auto match_sparse_expr = new infinity::MatchSparseExpr(); (yyval.expr_t) = match_sparse_expr; @@ -7376,11 +7389,11 @@ YYLTYPE yylloc = yyloc_default; match_sparse_expr->ignore_index_ = true; } -#line 7380 "parser.cpp" +#line 7393 "parser.cpp" break; - case 368: /* match_sparse_expr: MATCH SPARSE '(' expr ',' common_sparse_array_expr ',' STRING ',' LONG_VALUE optional_search_filter_expr ')' with_index_param_list */ -#line 2855 "parser.y" + case 369: /* match_sparse_expr: MATCH SPARSE '(' expr ',' common_sparse_array_expr ',' STRING ',' LONG_VALUE optional_search_filter_expr ')' with_index_param_list */ +#line 2872 "parser.y" { auto match_sparse_expr = new infinity::MatchSparseExpr(); (yyval.expr_t) = match_sparse_expr; @@ -7401,11 +7414,11 @@ YYLTYPE yylloc = yyloc_default; // topn and options match_sparse_expr->SetOptParams((yyvsp[-3].long_value), (yyvsp[0].with_index_param_list_t)); } -#line 7405 "parser.cpp" +#line 7418 "parser.cpp" break; - case 369: /* match_sparse_expr: MATCH SPARSE '(' expr ',' common_sparse_array_expr ',' STRING optional_search_filter_expr ')' with_index_param_list */ -#line 2876 "parser.y" + case 370: /* match_sparse_expr: MATCH SPARSE '(' expr ',' common_sparse_array_expr ',' STRING optional_search_filter_expr ')' with_index_param_list */ +#line 2893 "parser.y" { auto match_sparse_expr = new infinity::MatchSparseExpr(); (yyval.expr_t) = match_sparse_expr; @@ -7426,11 +7439,11 @@ 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 7430 "parser.cpp" +#line 7443 "parser.cpp" break; - case 370: /* match_text_expr: MATCH TEXT '(' STRING ',' STRING optional_search_filter_expr ')' */ -#line 2897 "parser.y" + case 371: /* match_text_expr: MATCH TEXT '(' STRING ',' STRING optional_search_filter_expr ')' */ +#line 2914 "parser.y" { infinity::MatchExpr* match_text_expr = new infinity::MatchExpr(); match_text_expr->fields_ = std::string((yyvsp[-4].str_value)); @@ -7440,11 +7453,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-2].str_value)); (yyval.expr_t) = match_text_expr; } -#line 7444 "parser.cpp" +#line 7457 "parser.cpp" break; - case 371: /* match_text_expr: MATCH TEXT '(' STRING ',' STRING ',' STRING optional_search_filter_expr ')' */ -#line 2906 "parser.y" + case 372: /* match_text_expr: MATCH TEXT '(' STRING ',' STRING ',' STRING optional_search_filter_expr ')' */ +#line 2923 "parser.y" { infinity::MatchExpr* match_text_expr = new infinity::MatchExpr(); match_text_expr->fields_ = std::string((yyvsp[-6].str_value)); @@ -7456,11 +7469,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-2].str_value)); (yyval.expr_t) = match_text_expr; } -#line 7460 "parser.cpp" +#line 7473 "parser.cpp" break; - case 372: /* query_expr: QUERY '(' STRING optional_search_filter_expr ')' */ -#line 2918 "parser.y" + case 373: /* query_expr: QUERY '(' STRING optional_search_filter_expr ')' */ +#line 2935 "parser.y" { infinity::MatchExpr* match_text_expr = new infinity::MatchExpr(); match_text_expr->matching_text_ = std::string((yyvsp[-2].str_value)); @@ -7468,11 +7481,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-2].str_value)); (yyval.expr_t) = match_text_expr; } -#line 7472 "parser.cpp" +#line 7485 "parser.cpp" break; - case 373: /* query_expr: QUERY '(' STRING ',' STRING optional_search_filter_expr ')' */ -#line 2925 "parser.y" + case 374: /* query_expr: QUERY '(' STRING ',' STRING optional_search_filter_expr ')' */ +#line 2942 "parser.y" { infinity::MatchExpr* match_text_expr = new infinity::MatchExpr(); match_text_expr->matching_text_ = std::string((yyvsp[-4].str_value)); @@ -7482,22 +7495,22 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-2].str_value)); (yyval.expr_t) = match_text_expr; } -#line 7486 "parser.cpp" +#line 7499 "parser.cpp" break; - case 374: /* fusion_expr: FUSION '(' STRING ')' */ -#line 2935 "parser.y" + case 375: /* fusion_expr: FUSION '(' STRING ')' */ +#line 2952 "parser.y" { infinity::FusionExpr* fusion_expr = new infinity::FusionExpr(); fusion_expr->method_ = std::string((yyvsp[-1].str_value)); free((yyvsp[-1].str_value)); (yyval.expr_t) = fusion_expr; } -#line 7497 "parser.cpp" +#line 7510 "parser.cpp" break; - case 375: /* fusion_expr: FUSION '(' STRING ',' STRING ')' */ -#line 2941 "parser.y" + case 376: /* fusion_expr: FUSION '(' STRING ',' STRING ')' */ +#line 2958 "parser.y" { auto fusion_expr = std::make_unique(); fusion_expr->method_ = std::string((yyvsp[-3].str_value)); @@ -7509,77 +7522,77 @@ YYLTYPE yylloc = yyloc_default; fusion_expr->JobAfterParser(); (yyval.expr_t) = fusion_expr.release(); } -#line 7513 "parser.cpp" +#line 7526 "parser.cpp" break; - case 376: /* sub_search: match_vector_expr */ -#line 2953 "parser.y" + case 377: /* sub_search: match_vector_expr */ +#line 2970 "parser.y" { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 7521 "parser.cpp" +#line 7534 "parser.cpp" break; - case 377: /* sub_search: match_text_expr */ -#line 2956 "parser.y" + case 378: /* sub_search: match_text_expr */ +#line 2973 "parser.y" { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 7529 "parser.cpp" +#line 7542 "parser.cpp" break; - case 378: /* sub_search: match_tensor_expr */ -#line 2959 "parser.y" + case 379: /* sub_search: match_tensor_expr */ +#line 2976 "parser.y" { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 7537 "parser.cpp" +#line 7550 "parser.cpp" break; - case 379: /* sub_search: match_sparse_expr */ -#line 2962 "parser.y" + case 380: /* sub_search: match_sparse_expr */ +#line 2979 "parser.y" { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 7545 "parser.cpp" +#line 7558 "parser.cpp" break; - case 380: /* sub_search: query_expr */ -#line 2965 "parser.y" + case 381: /* sub_search: query_expr */ +#line 2982 "parser.y" { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 7553 "parser.cpp" +#line 7566 "parser.cpp" break; - case 381: /* sub_search: fusion_expr */ -#line 2968 "parser.y" + case 382: /* sub_search: fusion_expr */ +#line 2985 "parser.y" { (yyval.expr_t) = (yyvsp[0].expr_t); } -#line 7561 "parser.cpp" +#line 7574 "parser.cpp" break; - case 382: /* sub_search_array: sub_search */ -#line 2972 "parser.y" + case 383: /* sub_search_array: sub_search */ +#line 2989 "parser.y" { (yyval.expr_array_t) = new std::vector(); (yyval.expr_array_t)->emplace_back((yyvsp[0].expr_t)); } -#line 7570 "parser.cpp" +#line 7583 "parser.cpp" break; - case 383: /* sub_search_array: sub_search_array ',' sub_search */ -#line 2976 "parser.y" + case 384: /* sub_search_array: sub_search_array ',' sub_search */ +#line 2993 "parser.y" { (yyvsp[-2].expr_array_t)->emplace_back((yyvsp[0].expr_t)); (yyval.expr_array_t) = (yyvsp[-2].expr_array_t); } -#line 7579 "parser.cpp" +#line 7592 "parser.cpp" break; - case 384: /* function_expr: IDENTIFIER '(' ')' */ -#line 2981 "parser.y" + case 385: /* function_expr: IDENTIFIER '(' ')' */ +#line 2998 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); ParserHelper::ToLower((yyvsp[-2].str_value)); @@ -7588,11 +7601,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_ = nullptr; (yyval.expr_t) = func_expr; } -#line 7592 "parser.cpp" +#line 7605 "parser.cpp" break; - case 385: /* function_expr: IDENTIFIER '(' expr_array ')' */ -#line 2989 "parser.y" + case 386: /* function_expr: IDENTIFIER '(' expr_array ')' */ +#line 3006 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); ParserHelper::ToLower((yyvsp[-3].str_value)); @@ -7601,11 +7614,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_ = (yyvsp[-1].expr_array_t); (yyval.expr_t) = func_expr; } -#line 7605 "parser.cpp" +#line 7618 "parser.cpp" break; - case 386: /* function_expr: IDENTIFIER '(' DISTINCT expr_array ')' */ -#line 2997 "parser.y" + case 387: /* function_expr: IDENTIFIER '(' DISTINCT expr_array ')' */ +#line 3014 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); ParserHelper::ToLower((yyvsp[-4].str_value)); @@ -7615,11 +7628,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->distinct_ = true; (yyval.expr_t) = func_expr; } -#line 7619 "parser.cpp" +#line 7632 "parser.cpp" break; - case 387: /* function_expr: operand IS NOT NULLABLE */ -#line 3006 "parser.y" + case 388: /* function_expr: operand IS NOT NULLABLE */ +#line 3023 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "is_not_null"; @@ -7627,11 +7640,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[-3].expr_t)); (yyval.expr_t) = func_expr; } -#line 7631 "parser.cpp" +#line 7644 "parser.cpp" break; - case 388: /* function_expr: operand IS NULLABLE */ -#line 3013 "parser.y" + case 389: /* function_expr: operand IS NULLABLE */ +#line 3030 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "is_null"; @@ -7639,11 +7652,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[-2].expr_t)); (yyval.expr_t) = func_expr; } -#line 7643 "parser.cpp" +#line 7656 "parser.cpp" break; - case 389: /* function_expr: NOT operand */ -#line 3020 "parser.y" + case 390: /* function_expr: NOT operand */ +#line 3037 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "not"; @@ -7651,11 +7664,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7655 "parser.cpp" +#line 7668 "parser.cpp" break; - case 390: /* function_expr: '-' operand */ -#line 3027 "parser.y" + case 391: /* function_expr: '-' operand */ +#line 3044 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "-"; @@ -7663,11 +7676,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7667 "parser.cpp" +#line 7680 "parser.cpp" break; - case 391: /* function_expr: '+' operand */ -#line 3034 "parser.y" + case 392: /* function_expr: '+' operand */ +#line 3051 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "+"; @@ -7675,11 +7688,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7679 "parser.cpp" +#line 7692 "parser.cpp" break; - case 392: /* function_expr: operand '-' operand */ -#line 3041 "parser.y" + case 393: /* function_expr: operand '-' operand */ +#line 3058 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "-"; @@ -7688,11 +7701,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7692 "parser.cpp" +#line 7705 "parser.cpp" break; - case 393: /* function_expr: operand '+' operand */ -#line 3049 "parser.y" + case 394: /* function_expr: operand '+' operand */ +#line 3066 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "+"; @@ -7701,11 +7714,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7705 "parser.cpp" +#line 7718 "parser.cpp" break; - case 394: /* function_expr: operand '*' operand */ -#line 3057 "parser.y" + case 395: /* function_expr: operand '*' operand */ +#line 3074 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "*"; @@ -7714,11 +7727,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7718 "parser.cpp" +#line 7731 "parser.cpp" break; - case 395: /* function_expr: operand '/' operand */ -#line 3065 "parser.y" + case 396: /* function_expr: operand '/' operand */ +#line 3082 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "/"; @@ -7727,11 +7740,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7731 "parser.cpp" +#line 7744 "parser.cpp" break; - case 396: /* function_expr: operand '%' operand */ -#line 3073 "parser.y" + case 397: /* function_expr: operand '%' operand */ +#line 3090 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "%"; @@ -7740,11 +7753,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7744 "parser.cpp" +#line 7757 "parser.cpp" break; - case 397: /* function_expr: operand '=' operand */ -#line 3081 "parser.y" + case 398: /* function_expr: operand '=' operand */ +#line 3098 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "="; @@ -7753,11 +7766,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7757 "parser.cpp" +#line 7770 "parser.cpp" break; - case 398: /* function_expr: operand EQUAL operand */ -#line 3089 "parser.y" + case 399: /* function_expr: operand EQUAL operand */ +#line 3106 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "="; @@ -7766,11 +7779,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7770 "parser.cpp" +#line 7783 "parser.cpp" break; - case 399: /* function_expr: operand NOT_EQ operand */ -#line 3097 "parser.y" + case 400: /* function_expr: operand NOT_EQ operand */ +#line 3114 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "<>"; @@ -7779,11 +7792,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7783 "parser.cpp" +#line 7796 "parser.cpp" break; - case 400: /* function_expr: operand '<' operand */ -#line 3105 "parser.y" + case 401: /* function_expr: operand '<' operand */ +#line 3122 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "<"; @@ -7792,11 +7805,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7796 "parser.cpp" +#line 7809 "parser.cpp" break; - case 401: /* function_expr: operand '>' operand */ -#line 3113 "parser.y" + case 402: /* function_expr: operand '>' operand */ +#line 3130 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = ">"; @@ -7805,11 +7818,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7809 "parser.cpp" +#line 7822 "parser.cpp" break; - case 402: /* function_expr: operand LESS_EQ operand */ -#line 3121 "parser.y" + case 403: /* function_expr: operand LESS_EQ operand */ +#line 3138 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "<="; @@ -7818,11 +7831,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7822 "parser.cpp" +#line 7835 "parser.cpp" break; - case 403: /* function_expr: operand GREATER_EQ operand */ -#line 3129 "parser.y" + case 404: /* function_expr: operand GREATER_EQ operand */ +#line 3146 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = ">="; @@ -7831,11 +7844,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7835 "parser.cpp" +#line 7848 "parser.cpp" break; - case 404: /* function_expr: EXTRACT '(' STRING FROM operand ')' */ -#line 3137 "parser.y" + case 405: /* function_expr: EXTRACT '(' STRING FROM operand ')' */ +#line 3154 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); ParserHelper::ToLower((yyvsp[-3].str_value)); @@ -7866,11 +7879,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[-1].expr_t)); (yyval.expr_t) = func_expr; } -#line 7870 "parser.cpp" +#line 7883 "parser.cpp" break; - case 405: /* function_expr: operand LIKE operand */ -#line 3167 "parser.y" + case 406: /* function_expr: operand LIKE operand */ +#line 3184 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "like"; @@ -7879,11 +7892,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7883 "parser.cpp" +#line 7896 "parser.cpp" break; - case 406: /* function_expr: operand NOT LIKE operand */ -#line 3175 "parser.y" + case 407: /* function_expr: operand NOT LIKE operand */ +#line 3192 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "not_like"; @@ -7892,11 +7905,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7896 "parser.cpp" +#line 7909 "parser.cpp" break; - case 407: /* conjunction_expr: expr AND expr */ -#line 3184 "parser.y" + case 408: /* conjunction_expr: expr AND expr */ +#line 3201 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "and"; @@ -7905,11 +7918,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7909 "parser.cpp" +#line 7922 "parser.cpp" break; - case 408: /* conjunction_expr: expr OR expr */ -#line 3192 "parser.y" + case 409: /* conjunction_expr: expr OR expr */ +#line 3209 "parser.y" { infinity::FunctionExpr* func_expr = new infinity::FunctionExpr(); func_expr->func_name_ = "or"; @@ -7918,11 +7931,11 @@ YYLTYPE yylloc = yyloc_default; func_expr->arguments_->emplace_back((yyvsp[0].expr_t)); (yyval.expr_t) = func_expr; } -#line 7922 "parser.cpp" +#line 7935 "parser.cpp" break; - case 409: /* between_expr: operand BETWEEN operand AND operand */ -#line 3201 "parser.y" + case 410: /* between_expr: operand BETWEEN operand AND operand */ +#line 3218 "parser.y" { infinity::BetweenExpr* between_expr = new infinity::BetweenExpr(); between_expr->value_ = (yyvsp[-4].expr_t); @@ -7930,44 +7943,44 @@ YYLTYPE yylloc = yyloc_default; between_expr->upper_bound_ = (yyvsp[0].expr_t); (yyval.expr_t) = between_expr; } -#line 7934 "parser.cpp" +#line 7947 "parser.cpp" break; - case 410: /* in_expr: operand IN '(' expr_array ')' */ -#line 3209 "parser.y" + case 411: /* in_expr: operand IN '(' expr_array ')' */ +#line 3226 "parser.y" { infinity::InExpr* in_expr = new infinity::InExpr(true); in_expr->left_ = (yyvsp[-4].expr_t); in_expr->arguments_ = (yyvsp[-1].expr_array_t); (yyval.expr_t) = in_expr; } -#line 7945 "parser.cpp" +#line 7958 "parser.cpp" break; - case 411: /* in_expr: operand NOT IN '(' expr_array ')' */ -#line 3215 "parser.y" + case 412: /* in_expr: operand NOT IN '(' expr_array ')' */ +#line 3232 "parser.y" { infinity::InExpr* in_expr = new infinity::InExpr(false); in_expr->left_ = (yyvsp[-5].expr_t); in_expr->arguments_ = (yyvsp[-1].expr_array_t); (yyval.expr_t) = in_expr; } -#line 7956 "parser.cpp" +#line 7969 "parser.cpp" break; - case 412: /* case_expr: CASE expr case_check_array END */ -#line 3222 "parser.y" + case 413: /* case_expr: CASE expr case_check_array END */ +#line 3239 "parser.y" { infinity::CaseExpr* case_expr = new infinity::CaseExpr(); case_expr->expr_ = (yyvsp[-2].expr_t); case_expr->case_check_array_ = (yyvsp[-1].case_check_array_t); (yyval.expr_t) = case_expr; } -#line 7967 "parser.cpp" +#line 7980 "parser.cpp" break; - case 413: /* case_expr: CASE expr case_check_array ELSE expr END */ -#line 3228 "parser.y" + case 414: /* case_expr: CASE expr case_check_array ELSE expr END */ +#line 3245 "parser.y" { infinity::CaseExpr* case_expr = new infinity::CaseExpr(); case_expr->expr_ = (yyvsp[-4].expr_t); @@ -7975,32 +7988,32 @@ YYLTYPE yylloc = yyloc_default; case_expr->else_expr_ = (yyvsp[-1].expr_t); (yyval.expr_t) = case_expr; } -#line 7979 "parser.cpp" +#line 7992 "parser.cpp" break; - case 414: /* case_expr: CASE case_check_array END */ -#line 3235 "parser.y" + case 415: /* case_expr: CASE case_check_array END */ +#line 3252 "parser.y" { infinity::CaseExpr* case_expr = new infinity::CaseExpr(); case_expr->case_check_array_ = (yyvsp[-1].case_check_array_t); (yyval.expr_t) = case_expr; } -#line 7989 "parser.cpp" +#line 8002 "parser.cpp" break; - case 415: /* case_expr: CASE case_check_array ELSE expr END */ -#line 3240 "parser.y" + case 416: /* case_expr: CASE case_check_array ELSE expr END */ +#line 3257 "parser.y" { infinity::CaseExpr* case_expr = new infinity::CaseExpr(); case_expr->case_check_array_ = (yyvsp[-3].case_check_array_t); case_expr->else_expr_ = (yyvsp[-1].expr_t); (yyval.expr_t) = case_expr; } -#line 8000 "parser.cpp" +#line 8013 "parser.cpp" break; - case 416: /* case_check_array: WHEN expr THEN expr */ -#line 3247 "parser.y" + case 417: /* case_check_array: WHEN expr THEN expr */ +#line 3264 "parser.y" { (yyval.case_check_array_t) = new std::vector(); infinity::WhenThen* when_then_ptr = new infinity::WhenThen(); @@ -8008,11 +8021,11 @@ YYLTYPE yylloc = yyloc_default; when_then_ptr->then_ = (yyvsp[0].expr_t); (yyval.case_check_array_t)->emplace_back(when_then_ptr); } -#line 8012 "parser.cpp" +#line 8025 "parser.cpp" break; - case 417: /* case_check_array: case_check_array WHEN expr THEN expr */ -#line 3254 "parser.y" + case 418: /* case_check_array: case_check_array WHEN expr THEN expr */ +#line 3271 "parser.y" { infinity::WhenThen* when_then_ptr = new infinity::WhenThen(); when_then_ptr->when_ = (yyvsp[-2].expr_t); @@ -8020,11 +8033,11 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-4].case_check_array_t)->emplace_back(when_then_ptr); (yyval.case_check_array_t) = (yyvsp[-4].case_check_array_t); } -#line 8024 "parser.cpp" +#line 8037 "parser.cpp" break; - case 418: /* cast_expr: CAST '(' expr AS column_type ')' */ -#line 3262 "parser.y" + case 419: /* cast_expr: CAST '(' expr AS column_type ')' */ +#line 3279 "parser.y" { std::shared_ptr type_info_ptr{nullptr}; switch((yyvsp[-1].column_type_t).logical_type_) { @@ -8051,33 +8064,33 @@ YYLTYPE yylloc = yyloc_default; cast_expr->expr_ = (yyvsp[-3].expr_t); (yyval.expr_t) = cast_expr; } -#line 8055 "parser.cpp" +#line 8068 "parser.cpp" break; - case 419: /* subquery_expr: EXISTS '(' select_without_paren ')' */ -#line 3289 "parser.y" + case 420: /* subquery_expr: EXISTS '(' select_without_paren ')' */ +#line 3306 "parser.y" { infinity::SubqueryExpr* subquery_expr = new infinity::SubqueryExpr(); subquery_expr->subquery_type_ = infinity::SubqueryType::kExists; subquery_expr->select_ = (yyvsp[-1].select_stmt); (yyval.expr_t) = subquery_expr; } -#line 8066 "parser.cpp" +#line 8079 "parser.cpp" break; - case 420: /* subquery_expr: NOT EXISTS '(' select_without_paren ')' */ -#line 3295 "parser.y" + case 421: /* subquery_expr: NOT EXISTS '(' select_without_paren ')' */ +#line 3312 "parser.y" { infinity::SubqueryExpr* subquery_expr = new infinity::SubqueryExpr(); subquery_expr->subquery_type_ = infinity::SubqueryType::kNotExists; subquery_expr->select_ = (yyvsp[-1].select_stmt); (yyval.expr_t) = subquery_expr; } -#line 8077 "parser.cpp" +#line 8090 "parser.cpp" break; - case 421: /* subquery_expr: operand IN '(' select_without_paren ')' */ -#line 3301 "parser.y" + case 422: /* subquery_expr: operand IN '(' select_without_paren ')' */ +#line 3318 "parser.y" { infinity::SubqueryExpr* subquery_expr = new infinity::SubqueryExpr(); subquery_expr->subquery_type_ = infinity::SubqueryType::kIn; @@ -8085,11 +8098,11 @@ YYLTYPE yylloc = yyloc_default; subquery_expr->select_ = (yyvsp[-1].select_stmt); (yyval.expr_t) = subquery_expr; } -#line 8089 "parser.cpp" +#line 8102 "parser.cpp" break; - case 422: /* subquery_expr: operand NOT IN '(' select_without_paren ')' */ -#line 3308 "parser.y" + case 423: /* subquery_expr: operand NOT IN '(' select_without_paren ')' */ +#line 3325 "parser.y" { infinity::SubqueryExpr* subquery_expr = new infinity::SubqueryExpr(); subquery_expr->subquery_type_ = infinity::SubqueryType::kNotIn; @@ -8097,11 +8110,11 @@ YYLTYPE yylloc = yyloc_default; subquery_expr->select_ = (yyvsp[-1].select_stmt); (yyval.expr_t) = subquery_expr; } -#line 8101 "parser.cpp" +#line 8114 "parser.cpp" break; - case 423: /* column_expr: IDENTIFIER */ -#line 3316 "parser.y" + case 424: /* column_expr: IDENTIFIER */ +#line 3333 "parser.y" { infinity::ColumnExpr* column_expr = new infinity::ColumnExpr(); ParserHelper::ToLower((yyvsp[0].str_value)); @@ -8109,11 +8122,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[0].str_value)); (yyval.expr_t) = column_expr; } -#line 8113 "parser.cpp" +#line 8126 "parser.cpp" break; - case 424: /* column_expr: column_expr '.' IDENTIFIER */ -#line 3323 "parser.y" + case 425: /* column_expr: column_expr '.' IDENTIFIER */ +#line 3340 "parser.y" { infinity::ColumnExpr* column_expr = (infinity::ColumnExpr*)(yyvsp[-2].expr_t); ParserHelper::ToLower((yyvsp[0].str_value)); @@ -8121,21 +8134,21 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[0].str_value)); (yyval.expr_t) = column_expr; } -#line 8125 "parser.cpp" +#line 8138 "parser.cpp" break; - case 425: /* column_expr: '*' */ -#line 3330 "parser.y" + case 426: /* column_expr: '*' */ +#line 3347 "parser.y" { infinity::ColumnExpr* column_expr = new infinity::ColumnExpr(); column_expr->star_ = true; (yyval.expr_t) = column_expr; } -#line 8135 "parser.cpp" +#line 8148 "parser.cpp" break; - case 426: /* column_expr: column_expr '.' '*' */ -#line 3335 "parser.y" + case 427: /* column_expr: column_expr '.' '*' */ +#line 3352 "parser.y" { infinity::ColumnExpr* column_expr = (infinity::ColumnExpr*)(yyvsp[-2].expr_t); if(column_expr->star_) { @@ -8145,232 +8158,232 @@ YYLTYPE yylloc = yyloc_default; column_expr->star_ = true; (yyval.expr_t) = column_expr; } -#line 8149 "parser.cpp" +#line 8162 "parser.cpp" break; - case 427: /* constant_expr: STRING */ -#line 3345 "parser.y" + case 428: /* constant_expr: STRING */ +#line 3362 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kString); const_expr->str_value_ = (yyvsp[0].str_value); (yyval.const_expr_t) = const_expr; } -#line 8159 "parser.cpp" +#line 8172 "parser.cpp" break; - case 428: /* constant_expr: TRUE */ -#line 3350 "parser.y" + case 429: /* constant_expr: TRUE */ +#line 3367 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kBoolean); const_expr->bool_value_ = true; (yyval.const_expr_t) = const_expr; } -#line 8169 "parser.cpp" +#line 8182 "parser.cpp" break; - case 429: /* constant_expr: FALSE */ -#line 3355 "parser.y" + case 430: /* constant_expr: FALSE */ +#line 3372 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kBoolean); const_expr->bool_value_ = false; (yyval.const_expr_t) = const_expr; } -#line 8179 "parser.cpp" +#line 8192 "parser.cpp" break; - case 430: /* constant_expr: DOUBLE_VALUE */ -#line 3360 "parser.y" + case 431: /* constant_expr: DOUBLE_VALUE */ +#line 3377 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kDouble); const_expr->double_value_ = (yyvsp[0].double_value); (yyval.const_expr_t) = const_expr; } -#line 8189 "parser.cpp" +#line 8202 "parser.cpp" break; - case 431: /* constant_expr: LONG_VALUE */ -#line 3365 "parser.y" + case 432: /* constant_expr: LONG_VALUE */ +#line 3382 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInteger); const_expr->integer_value_ = (yyvsp[0].long_value); (yyval.const_expr_t) = const_expr; } -#line 8199 "parser.cpp" +#line 8212 "parser.cpp" break; - case 432: /* constant_expr: DATE STRING */ -#line 3370 "parser.y" + case 433: /* constant_expr: DATE STRING */ +#line 3387 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kDate); const_expr->date_value_ = (yyvsp[0].str_value); (yyval.const_expr_t) = const_expr; } -#line 8209 "parser.cpp" +#line 8222 "parser.cpp" break; - case 433: /* constant_expr: TIME STRING */ -#line 3375 "parser.y" + case 434: /* constant_expr: TIME STRING */ +#line 3392 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kTime); const_expr->date_value_ = (yyvsp[0].str_value); (yyval.const_expr_t) = const_expr; } -#line 8219 "parser.cpp" +#line 8232 "parser.cpp" break; - case 434: /* constant_expr: DATETIME STRING */ -#line 3380 "parser.y" + case 435: /* constant_expr: DATETIME STRING */ +#line 3397 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kDateTime); const_expr->date_value_ = (yyvsp[0].str_value); (yyval.const_expr_t) = const_expr; } -#line 8229 "parser.cpp" +#line 8242 "parser.cpp" break; - case 435: /* constant_expr: TIMESTAMP STRING */ -#line 3385 "parser.y" + case 436: /* constant_expr: TIMESTAMP STRING */ +#line 3402 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kTimestamp); const_expr->date_value_ = (yyvsp[0].str_value); (yyval.const_expr_t) = const_expr; } -#line 8239 "parser.cpp" +#line 8252 "parser.cpp" break; - case 436: /* constant_expr: INTERVAL interval_expr */ -#line 3390 "parser.y" + case 437: /* constant_expr: INTERVAL interval_expr */ +#line 3407 "parser.y" { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 8247 "parser.cpp" +#line 8260 "parser.cpp" break; - case 437: /* constant_expr: interval_expr */ -#line 3393 "parser.y" + case 438: /* constant_expr: interval_expr */ +#line 3410 "parser.y" { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 8255 "parser.cpp" +#line 8268 "parser.cpp" break; - case 438: /* constant_expr: common_array_expr */ -#line 3396 "parser.y" + case 439: /* constant_expr: common_array_expr */ +#line 3413 "parser.y" { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 8263 "parser.cpp" +#line 8276 "parser.cpp" break; - case 439: /* common_array_expr: array_expr */ -#line 3400 "parser.y" + case 440: /* common_array_expr: array_expr */ +#line 3417 "parser.y" { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 8271 "parser.cpp" +#line 8284 "parser.cpp" break; - case 440: /* common_array_expr: subarray_array_expr */ -#line 3403 "parser.y" + case 441: /* common_array_expr: subarray_array_expr */ +#line 3420 "parser.y" { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 8279 "parser.cpp" +#line 8292 "parser.cpp" break; - case 441: /* common_array_expr: sparse_array_expr */ -#line 3406 "parser.y" + case 442: /* common_array_expr: sparse_array_expr */ +#line 3423 "parser.y" { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 8287 "parser.cpp" +#line 8300 "parser.cpp" break; - case 442: /* common_array_expr: empty_array_expr */ -#line 3409 "parser.y" + case 443: /* common_array_expr: empty_array_expr */ +#line 3426 "parser.y" { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 8295 "parser.cpp" +#line 8308 "parser.cpp" break; - case 443: /* common_sparse_array_expr: sparse_array_expr */ -#line 3413 "parser.y" + case 444: /* common_sparse_array_expr: sparse_array_expr */ +#line 3430 "parser.y" { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 8303 "parser.cpp" +#line 8316 "parser.cpp" break; - case 444: /* common_sparse_array_expr: array_expr */ -#line 3416 "parser.y" + case 445: /* common_sparse_array_expr: array_expr */ +#line 3433 "parser.y" { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 8311 "parser.cpp" +#line 8324 "parser.cpp" break; - case 445: /* common_sparse_array_expr: empty_array_expr */ -#line 3419 "parser.y" + case 446: /* common_sparse_array_expr: empty_array_expr */ +#line 3436 "parser.y" { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 8319 "parser.cpp" +#line 8332 "parser.cpp" break; - case 446: /* subarray_array_expr: unclosed_subarray_array_expr ']' */ -#line 3423 "parser.y" + case 447: /* subarray_array_expr: unclosed_subarray_array_expr ']' */ +#line 3440 "parser.y" { (yyval.const_expr_t) = (yyvsp[-1].const_expr_t); } -#line 8327 "parser.cpp" +#line 8340 "parser.cpp" break; - case 447: /* unclosed_subarray_array_expr: '[' common_array_expr */ -#line 3427 "parser.y" + case 448: /* unclosed_subarray_array_expr: '[' common_array_expr */ +#line 3444 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kSubArrayArray); const_expr->sub_array_array_.emplace_back((yyvsp[0].const_expr_t)); (yyval.const_expr_t) = const_expr; } -#line 8337 "parser.cpp" +#line 8350 "parser.cpp" break; - case 448: /* unclosed_subarray_array_expr: unclosed_subarray_array_expr ',' common_array_expr */ -#line 3432 "parser.y" + case 449: /* unclosed_subarray_array_expr: unclosed_subarray_array_expr ',' common_array_expr */ +#line 3449 "parser.y" { (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 8346 "parser.cpp" +#line 8359 "parser.cpp" break; - case 449: /* sparse_array_expr: long_sparse_array_expr */ -#line 3437 "parser.y" + case 450: /* sparse_array_expr: long_sparse_array_expr */ +#line 3454 "parser.y" { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 8354 "parser.cpp" +#line 8367 "parser.cpp" break; - case 450: /* sparse_array_expr: double_sparse_array_expr */ -#line 3440 "parser.y" + case 451: /* sparse_array_expr: double_sparse_array_expr */ +#line 3457 "parser.y" { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 8362 "parser.cpp" +#line 8375 "parser.cpp" break; - case 451: /* long_sparse_array_expr: unclosed_long_sparse_array_expr ']' */ -#line 3444 "parser.y" + case 452: /* long_sparse_array_expr: unclosed_long_sparse_array_expr ']' */ +#line 3461 "parser.y" { (yyval.const_expr_t) = (yyvsp[-1].const_expr_t); } -#line 8370 "parser.cpp" +#line 8383 "parser.cpp" break; - case 452: /* unclosed_long_sparse_array_expr: '[' int_sparse_ele */ -#line 3448 "parser.y" + case 453: /* unclosed_long_sparse_array_expr: '[' int_sparse_ele */ +#line 3465 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kLongSparseArray); const_expr->long_sparse_array_.first.emplace_back((yyvsp[0].int_sparse_ele_t)->first); @@ -8378,30 +8391,30 @@ YYLTYPE yylloc = yyloc_default; delete (yyvsp[0].int_sparse_ele_t); (yyval.const_expr_t) = const_expr; } -#line 8382 "parser.cpp" +#line 8395 "parser.cpp" break; - case 453: /* unclosed_long_sparse_array_expr: unclosed_long_sparse_array_expr ',' int_sparse_ele */ -#line 3455 "parser.y" + case 454: /* unclosed_long_sparse_array_expr: unclosed_long_sparse_array_expr ',' int_sparse_ele */ +#line 3472 "parser.y" { (yyvsp[-2].const_expr_t)->long_sparse_array_.first.emplace_back((yyvsp[0].int_sparse_ele_t)->first); (yyvsp[-2].const_expr_t)->long_sparse_array_.second.emplace_back((yyvsp[0].int_sparse_ele_t)->second); delete (yyvsp[0].int_sparse_ele_t); (yyval.const_expr_t) = (yyvsp[-2].const_expr_t); } -#line 8393 "parser.cpp" +#line 8406 "parser.cpp" break; - case 454: /* double_sparse_array_expr: unclosed_double_sparse_array_expr ']' */ -#line 3462 "parser.y" + case 455: /* double_sparse_array_expr: unclosed_double_sparse_array_expr ']' */ +#line 3479 "parser.y" { (yyval.const_expr_t) = (yyvsp[-1].const_expr_t); } -#line 8401 "parser.cpp" +#line 8414 "parser.cpp" break; - case 455: /* unclosed_double_sparse_array_expr: '[' float_sparse_ele */ -#line 3466 "parser.y" + case 456: /* unclosed_double_sparse_array_expr: '[' float_sparse_ele */ +#line 3483 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kDoubleSparseArray); const_expr->double_sparse_array_.first.emplace_back((yyvsp[0].float_sparse_ele_t)->first); @@ -8409,266 +8422,266 @@ YYLTYPE yylloc = yyloc_default; delete (yyvsp[0].float_sparse_ele_t); (yyval.const_expr_t) = const_expr; } -#line 8413 "parser.cpp" +#line 8426 "parser.cpp" break; - case 456: /* unclosed_double_sparse_array_expr: unclosed_double_sparse_array_expr ',' float_sparse_ele */ -#line 3473 "parser.y" + case 457: /* unclosed_double_sparse_array_expr: unclosed_double_sparse_array_expr ',' float_sparse_ele */ +#line 3490 "parser.y" { (yyvsp[-2].const_expr_t)->double_sparse_array_.first.emplace_back((yyvsp[0].float_sparse_ele_t)->first); (yyvsp[-2].const_expr_t)->double_sparse_array_.second.emplace_back((yyvsp[0].float_sparse_ele_t)->second); delete (yyvsp[0].float_sparse_ele_t); (yyval.const_expr_t) = (yyvsp[-2].const_expr_t); } -#line 8424 "parser.cpp" +#line 8437 "parser.cpp" break; - case 457: /* empty_array_expr: '[' ']' */ -#line 3480 "parser.y" + case 458: /* empty_array_expr: '[' ']' */ +#line 3497 "parser.y" { (yyval.const_expr_t) = new infinity::ConstantExpr(infinity::LiteralType::kEmptyArray); } -#line 8432 "parser.cpp" +#line 8445 "parser.cpp" break; - case 458: /* int_sparse_ele: LONG_VALUE ':' LONG_VALUE */ -#line 3484 "parser.y" + case 459: /* int_sparse_ele: LONG_VALUE ':' LONG_VALUE */ +#line 3501 "parser.y" { (yyval.int_sparse_ele_t) = new std::pair{(yyvsp[-2].long_value), (yyvsp[0].long_value)}; } -#line 8440 "parser.cpp" +#line 8453 "parser.cpp" break; - case 459: /* float_sparse_ele: LONG_VALUE ':' DOUBLE_VALUE */ -#line 3488 "parser.y" + case 460: /* float_sparse_ele: LONG_VALUE ':' DOUBLE_VALUE */ +#line 3505 "parser.y" { (yyval.float_sparse_ele_t) = new std::pair{(yyvsp[-2].long_value), (yyvsp[0].double_value)}; } -#line 8448 "parser.cpp" +#line 8461 "parser.cpp" break; - case 460: /* array_expr: long_array_expr */ -#line 3492 "parser.y" + case 461: /* array_expr: long_array_expr */ +#line 3509 "parser.y" { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 8456 "parser.cpp" +#line 8469 "parser.cpp" break; - case 461: /* array_expr: double_array_expr */ -#line 3495 "parser.y" + case 462: /* array_expr: double_array_expr */ +#line 3512 "parser.y" { (yyval.const_expr_t) = (yyvsp[0].const_expr_t); } -#line 8464 "parser.cpp" +#line 8477 "parser.cpp" break; - case 462: /* long_array_expr: unclosed_long_array_expr ']' */ -#line 3499 "parser.y" + case 463: /* long_array_expr: unclosed_long_array_expr ']' */ +#line 3516 "parser.y" { (yyval.const_expr_t) = (yyvsp[-1].const_expr_t); } -#line 8472 "parser.cpp" +#line 8485 "parser.cpp" break; - case 463: /* unclosed_long_array_expr: '[' LONG_VALUE */ -#line 3503 "parser.y" + case 464: /* unclosed_long_array_expr: '[' LONG_VALUE */ +#line 3520 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kIntegerArray); const_expr->long_array_.emplace_back((yyvsp[0].long_value)); (yyval.const_expr_t) = const_expr; } -#line 8482 "parser.cpp" +#line 8495 "parser.cpp" break; - case 464: /* unclosed_long_array_expr: unclosed_long_array_expr ',' LONG_VALUE */ -#line 3508 "parser.y" + case 465: /* unclosed_long_array_expr: unclosed_long_array_expr ',' LONG_VALUE */ +#line 3525 "parser.y" { (yyvsp[-2].const_expr_t)->long_array_.emplace_back((yyvsp[0].long_value)); (yyval.const_expr_t) = (yyvsp[-2].const_expr_t); } -#line 8491 "parser.cpp" +#line 8504 "parser.cpp" break; - case 465: /* double_array_expr: unclosed_double_array_expr ']' */ -#line 3513 "parser.y" + case 466: /* double_array_expr: unclosed_double_array_expr ']' */ +#line 3530 "parser.y" { (yyval.const_expr_t) = (yyvsp[-1].const_expr_t); } -#line 8499 "parser.cpp" +#line 8512 "parser.cpp" break; - case 466: /* unclosed_double_array_expr: '[' DOUBLE_VALUE */ -#line 3517 "parser.y" + case 467: /* unclosed_double_array_expr: '[' DOUBLE_VALUE */ +#line 3534 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kDoubleArray); const_expr->double_array_.emplace_back((yyvsp[0].double_value)); (yyval.const_expr_t) = const_expr; } -#line 8509 "parser.cpp" +#line 8522 "parser.cpp" break; - case 467: /* unclosed_double_array_expr: unclosed_double_array_expr ',' DOUBLE_VALUE */ -#line 3522 "parser.y" + case 468: /* unclosed_double_array_expr: unclosed_double_array_expr ',' DOUBLE_VALUE */ +#line 3539 "parser.y" { (yyvsp[-2].const_expr_t)->double_array_.emplace_back((yyvsp[0].double_value)); (yyval.const_expr_t) = (yyvsp[-2].const_expr_t); } -#line 8518 "parser.cpp" +#line 8531 "parser.cpp" break; - case 468: /* interval_expr: LONG_VALUE SECONDS */ -#line 3527 "parser.y" + case 469: /* interval_expr: LONG_VALUE SECONDS */ +#line 3544 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInterval); const_expr->interval_type_ = infinity::TimeUnit::kSecond; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 8529 "parser.cpp" +#line 8542 "parser.cpp" break; - case 469: /* interval_expr: LONG_VALUE SECOND */ -#line 3533 "parser.y" + case 470: /* interval_expr: LONG_VALUE SECOND */ +#line 3550 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInterval); const_expr->interval_type_ = infinity::TimeUnit::kSecond; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 8540 "parser.cpp" +#line 8553 "parser.cpp" break; - case 470: /* interval_expr: LONG_VALUE MINUTES */ -#line 3539 "parser.y" + case 471: /* interval_expr: LONG_VALUE MINUTES */ +#line 3556 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInterval); const_expr->interval_type_ = infinity::TimeUnit::kMinute; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 8551 "parser.cpp" +#line 8564 "parser.cpp" break; - case 471: /* interval_expr: LONG_VALUE MINUTE */ -#line 3545 "parser.y" + case 472: /* interval_expr: LONG_VALUE MINUTE */ +#line 3562 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInterval); const_expr->interval_type_ = infinity::TimeUnit::kMinute; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 8562 "parser.cpp" +#line 8575 "parser.cpp" break; - case 472: /* interval_expr: LONG_VALUE HOURS */ -#line 3551 "parser.y" + case 473: /* interval_expr: LONG_VALUE HOURS */ +#line 3568 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInterval); const_expr->interval_type_ = infinity::TimeUnit::kHour; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 8573 "parser.cpp" +#line 8586 "parser.cpp" break; - case 473: /* interval_expr: LONG_VALUE HOUR */ -#line 3557 "parser.y" + case 474: /* interval_expr: LONG_VALUE HOUR */ +#line 3574 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInterval); const_expr->interval_type_ = infinity::TimeUnit::kHour; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 8584 "parser.cpp" +#line 8597 "parser.cpp" break; - case 474: /* interval_expr: LONG_VALUE DAYS */ -#line 3563 "parser.y" + case 475: /* interval_expr: LONG_VALUE DAYS */ +#line 3580 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInterval); const_expr->interval_type_ = infinity::TimeUnit::kDay; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 8595 "parser.cpp" +#line 8608 "parser.cpp" break; - case 475: /* interval_expr: LONG_VALUE DAY */ -#line 3569 "parser.y" + case 476: /* interval_expr: LONG_VALUE DAY */ +#line 3586 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInterval); const_expr->interval_type_ = infinity::TimeUnit::kDay; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 8606 "parser.cpp" +#line 8619 "parser.cpp" break; - case 476: /* interval_expr: LONG_VALUE MONTHS */ -#line 3575 "parser.y" + case 477: /* interval_expr: LONG_VALUE MONTHS */ +#line 3592 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInterval); const_expr->interval_type_ = infinity::TimeUnit::kMonth; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 8617 "parser.cpp" +#line 8630 "parser.cpp" break; - case 477: /* interval_expr: LONG_VALUE MONTH */ -#line 3581 "parser.y" + case 478: /* interval_expr: LONG_VALUE MONTH */ +#line 3598 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInterval); const_expr->interval_type_ = infinity::TimeUnit::kMonth; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 8628 "parser.cpp" +#line 8641 "parser.cpp" break; - case 478: /* interval_expr: LONG_VALUE YEARS */ -#line 3587 "parser.y" + case 479: /* interval_expr: LONG_VALUE YEARS */ +#line 3604 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInterval); const_expr->interval_type_ = infinity::TimeUnit::kYear; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 8639 "parser.cpp" +#line 8652 "parser.cpp" break; - case 479: /* interval_expr: LONG_VALUE YEAR */ -#line 3593 "parser.y" + case 480: /* interval_expr: LONG_VALUE YEAR */ +#line 3610 "parser.y" { infinity::ConstantExpr* const_expr = new infinity::ConstantExpr(infinity::LiteralType::kInterval); const_expr->interval_type_ = infinity::TimeUnit::kYear; const_expr->integer_value_ = (yyvsp[-1].long_value); (yyval.const_expr_t) = const_expr; } -#line 8650 "parser.cpp" +#line 8663 "parser.cpp" break; - case 480: /* copy_option_list: copy_option */ -#line 3604 "parser.y" + case 481: /* copy_option_list: copy_option */ +#line 3621 "parser.y" { (yyval.copy_option_array) = new std::vector(); (yyval.copy_option_array)->push_back((yyvsp[0].copy_option_t)); } -#line 8659 "parser.cpp" +#line 8672 "parser.cpp" break; - case 481: /* copy_option_list: copy_option_list ',' copy_option */ -#line 3608 "parser.y" + case 482: /* copy_option_list: copy_option_list ',' copy_option */ +#line 3625 "parser.y" { (yyvsp[-2].copy_option_array)->push_back((yyvsp[0].copy_option_t)); (yyval.copy_option_array) = (yyvsp[-2].copy_option_array); } -#line 8668 "parser.cpp" +#line 8681 "parser.cpp" break; - case 482: /* copy_option: FORMAT IDENTIFIER */ -#line 3613 "parser.y" + case 483: /* copy_option: FORMAT IDENTIFIER */ +#line 3630 "parser.y" { (yyval.copy_option_t) = new infinity::CopyOption(); (yyval.copy_option_t)->option_type_ = infinity::CopyOptionType::kFormat; @@ -8700,11 +8713,11 @@ YYLTYPE yylloc = yyloc_default; YYERROR; } } -#line 8704 "parser.cpp" +#line 8717 "parser.cpp" break; - case 483: /* copy_option: DELIMITER STRING */ -#line 3644 "parser.y" + case 484: /* copy_option: DELIMITER STRING */ +#line 3661 "parser.y" { (yyval.copy_option_t) = new infinity::CopyOption(); (yyval.copy_option_t)->option_type_ = infinity::CopyOptionType::kDelimiter; @@ -8715,83 +8728,83 @@ YYLTYPE yylloc = yyloc_default; } free((yyvsp[0].str_value)); } -#line 8719 "parser.cpp" +#line 8732 "parser.cpp" break; - case 484: /* copy_option: HEADER */ -#line 3654 "parser.y" + case 485: /* copy_option: HEADER */ +#line 3671 "parser.y" { (yyval.copy_option_t) = new infinity::CopyOption(); (yyval.copy_option_t)->option_type_ = infinity::CopyOptionType::kHeader; (yyval.copy_option_t)->header_ = true; } -#line 8729 "parser.cpp" +#line 8742 "parser.cpp" break; - case 485: /* copy_option: OFFSET LONG_VALUE */ -#line 3659 "parser.y" + case 486: /* copy_option: OFFSET LONG_VALUE */ +#line 3676 "parser.y" { (yyval.copy_option_t) = new infinity::CopyOption(); (yyval.copy_option_t)->option_type_ = infinity::CopyOptionType::kOffset; (yyval.copy_option_t)->offset_ = (yyvsp[0].long_value); } -#line 8739 "parser.cpp" +#line 8752 "parser.cpp" break; - case 486: /* copy_option: LIMIT LONG_VALUE */ -#line 3664 "parser.y" + case 487: /* copy_option: LIMIT LONG_VALUE */ +#line 3681 "parser.y" { (yyval.copy_option_t) = new infinity::CopyOption(); (yyval.copy_option_t)->option_type_ = infinity::CopyOptionType::kLimit; (yyval.copy_option_t)->limit_ = (yyvsp[0].long_value); } -#line 8749 "parser.cpp" +#line 8762 "parser.cpp" break; - case 487: /* copy_option: ROWLIMIT LONG_VALUE */ -#line 3669 "parser.y" + case 488: /* copy_option: ROWLIMIT LONG_VALUE */ +#line 3686 "parser.y" { (yyval.copy_option_t) = new infinity::CopyOption(); (yyval.copy_option_t)->option_type_ = infinity::CopyOptionType::kRowLimit; (yyval.copy_option_t)->row_limit_ = (yyvsp[0].long_value); } -#line 8759 "parser.cpp" +#line 8772 "parser.cpp" break; - case 488: /* file_path: STRING */ -#line 3675 "parser.y" + case 489: /* file_path: STRING */ +#line 3692 "parser.y" { (yyval.str_value) = (yyvsp[0].str_value); } -#line 8767 "parser.cpp" +#line 8780 "parser.cpp" break; - case 489: /* if_exists: IF EXISTS */ -#line 3679 "parser.y" + case 490: /* if_exists: IF EXISTS */ +#line 3696 "parser.y" { (yyval.bool_value) = true; } -#line 8773 "parser.cpp" +#line 8786 "parser.cpp" break; - case 490: /* if_exists: %empty */ -#line 3680 "parser.y" + case 491: /* if_exists: %empty */ +#line 3697 "parser.y" { (yyval.bool_value) = false; } -#line 8779 "parser.cpp" +#line 8792 "parser.cpp" break; - case 491: /* if_not_exists: IF NOT EXISTS */ -#line 3682 "parser.y" + case 492: /* if_not_exists: IF NOT EXISTS */ +#line 3699 "parser.y" { (yyval.bool_value) = true; } -#line 8785 "parser.cpp" +#line 8798 "parser.cpp" break; - case 492: /* if_not_exists: %empty */ -#line 3683 "parser.y" + case 493: /* if_not_exists: %empty */ +#line 3700 "parser.y" { (yyval.bool_value) = false; } -#line 8791 "parser.cpp" +#line 8804 "parser.cpp" break; - case 495: /* if_not_exists_info: if_not_exists IDENTIFIER */ -#line 3698 "parser.y" + case 496: /* if_not_exists_info: if_not_exists IDENTIFIER */ +#line 3715 "parser.y" { (yyval.if_not_exists_info_t) = new infinity::IfNotExistsInfo(); (yyval.if_not_exists_info_t)->exists_ = true; @@ -8800,80 +8813,80 @@ YYLTYPE yylloc = yyloc_default; (yyval.if_not_exists_info_t)->info_ = (yyvsp[0].str_value); free((yyvsp[0].str_value)); } -#line 8804 "parser.cpp" +#line 8817 "parser.cpp" break; - case 496: /* if_not_exists_info: %empty */ -#line 3706 "parser.y" + case 497: /* if_not_exists_info: %empty */ +#line 3723 "parser.y" { (yyval.if_not_exists_info_t) = new infinity::IfNotExistsInfo(); } -#line 8812 "parser.cpp" +#line 8825 "parser.cpp" break; - case 497: /* with_index_param_list: WITH '(' index_param_list ')' */ -#line 3710 "parser.y" + case 498: /* with_index_param_list: WITH '(' index_param_list ')' */ +#line 3727 "parser.y" { (yyval.with_index_param_list_t) = (yyvsp[-1].index_param_list_t); } -#line 8820 "parser.cpp" +#line 8833 "parser.cpp" break; - case 498: /* with_index_param_list: %empty */ -#line 3713 "parser.y" + case 499: /* with_index_param_list: %empty */ +#line 3730 "parser.y" { (yyval.with_index_param_list_t) = new std::vector(); } -#line 8828 "parser.cpp" +#line 8841 "parser.cpp" break; - case 499: /* optional_table_properties_list: PROPERTIES '(' index_param_list ')' */ -#line 3717 "parser.y" + case 500: /* optional_table_properties_list: PROPERTIES '(' index_param_list ')' */ +#line 3734 "parser.y" { (yyval.with_index_param_list_t) = (yyvsp[-1].index_param_list_t); } -#line 8836 "parser.cpp" +#line 8849 "parser.cpp" break; - case 500: /* optional_table_properties_list: %empty */ -#line 3720 "parser.y" + case 501: /* optional_table_properties_list: %empty */ +#line 3737 "parser.y" { (yyval.with_index_param_list_t) = nullptr; } -#line 8844 "parser.cpp" +#line 8857 "parser.cpp" break; - case 501: /* index_param_list: index_param */ -#line 3724 "parser.y" + case 502: /* index_param_list: index_param */ +#line 3741 "parser.y" { (yyval.index_param_list_t) = new std::vector(); (yyval.index_param_list_t)->push_back((yyvsp[0].index_param_t)); } -#line 8853 "parser.cpp" +#line 8866 "parser.cpp" break; - case 502: /* index_param_list: index_param_list ',' index_param */ -#line 3728 "parser.y" + case 503: /* index_param_list: index_param_list ',' index_param */ +#line 3745 "parser.y" { (yyvsp[-2].index_param_list_t)->push_back((yyvsp[0].index_param_t)); (yyval.index_param_list_t) = (yyvsp[-2].index_param_list_t); } -#line 8862 "parser.cpp" +#line 8875 "parser.cpp" break; - case 503: /* index_param: IDENTIFIER */ -#line 3733 "parser.y" + case 504: /* index_param: IDENTIFIER */ +#line 3750 "parser.y" { ParserHelper::ToLower((yyvsp[0].str_value)); (yyval.index_param_t) = new infinity::InitParameter(); (yyval.index_param_t)->param_name_ = (yyvsp[0].str_value); free((yyvsp[0].str_value)); } -#line 8873 "parser.cpp" +#line 8886 "parser.cpp" break; - case 504: /* index_param: IDENTIFIER '=' IDENTIFIER */ -#line 3739 "parser.y" + case 505: /* index_param: IDENTIFIER '=' IDENTIFIER */ +#line 3756 "parser.y" { ParserHelper::ToLower((yyvsp[-2].str_value)); ParserHelper::ToLower((yyvsp[0].str_value)); @@ -8884,11 +8897,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.index_param_t)->param_value_ = (yyvsp[0].str_value); free((yyvsp[0].str_value)); } -#line 8888 "parser.cpp" +#line 8901 "parser.cpp" break; - case 505: /* index_param: IDENTIFIER '=' STRING */ -#line 3749 "parser.y" + case 506: /* index_param: IDENTIFIER '=' STRING */ +#line 3766 "parser.y" { ParserHelper::ToLower((yyvsp[-2].str_value)); ParserHelper::ToLower((yyvsp[0].str_value)); @@ -8899,11 +8912,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.index_param_t)->param_value_ = (yyvsp[0].str_value); free((yyvsp[0].str_value)); } -#line 8903 "parser.cpp" +#line 8916 "parser.cpp" break; - case 506: /* index_param: IDENTIFIER '=' LONG_VALUE */ -#line 3759 "parser.y" + case 507: /* index_param: IDENTIFIER '=' LONG_VALUE */ +#line 3776 "parser.y" { ParserHelper::ToLower((yyvsp[-2].str_value)); (yyval.index_param_t) = new infinity::InitParameter(); @@ -8912,11 +8925,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.index_param_t)->param_value_ = std::to_string((yyvsp[0].long_value)); } -#line 8916 "parser.cpp" +#line 8929 "parser.cpp" break; - case 507: /* index_param: IDENTIFIER '=' DOUBLE_VALUE */ -#line 3767 "parser.y" + case 508: /* index_param: IDENTIFIER '=' DOUBLE_VALUE */ +#line 3784 "parser.y" { ParserHelper::ToLower((yyvsp[-2].str_value)); (yyval.index_param_t) = new infinity::InitParameter(); @@ -8925,11 +8938,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.index_param_t)->param_value_ = std::to_string((yyvsp[0].double_value)); } -#line 8929 "parser.cpp" +#line 8942 "parser.cpp" break; - case 508: /* index_info: '(' IDENTIFIER ')' USING IDENTIFIER with_index_param_list */ -#line 3778 "parser.y" + case 509: /* index_info: '(' IDENTIFIER ')' USING IDENTIFIER with_index_param_list */ +#line 3795 "parser.y" { ParserHelper::ToLower((yyvsp[-1].str_value)); infinity::IndexType index_type = infinity::IndexType::kInvalid; @@ -8961,22 +8974,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 8965 "parser.cpp" +#line 8978 "parser.cpp" break; - case 509: /* index_info: '(' IDENTIFIER ')' */ -#line 3809 "parser.y" + case 510: /* index_info: '(' IDENTIFIER ')' */ +#line 3826 "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 8976 "parser.cpp" +#line 8989 "parser.cpp" break; -#line 8980 "parser.cpp" +#line 8993 "parser.cpp" default: break; } @@ -9205,7 +9218,7 @@ YYLTYPE yylloc = yyloc_default; return yyresult; } -#line 3816 "parser.y" +#line 3833 "parser.y" void diff --git a/src/parser/parser.y b/src/parser/parser.y index 2d879e6d88..2e922e7472 100644 --- a/src/parser/parser.y +++ b/src/parser/parser.y @@ -554,7 +554,24 @@ explainable_statement : create_statement { $$ = $1; } */ /* CREATE DATABASE schema_name; */ -create_statement : CREATE DATABASE if_not_exists IDENTIFIER { +create_statement : CREATE DATABASE if_not_exists IDENTIFIER COMMENT STRING { + $$ = new infinity::CreateStatement(); + std::shared_ptr create_schema_info = std::make_shared(); + + ParserHelper::ToLower($4); + create_schema_info->schema_name_ = $4; + free($4); + if(create_schema_info->schema_name_.empty()) { + yyerror(&yyloc, scanner, result, "Empty database name is given."); + YYERROR; + } + + $$->create_info_ = create_schema_info; + $$->create_info_->conflict_type_ = $3 ? infinity::ConflictType::kIgnore : infinity::ConflictType::kError; + $$->create_info_->comment_ = $6; + free($6); +} +| CREATE DATABASE if_not_exists IDENTIFIER { $$ = new infinity::CreateStatement(); std::shared_ptr create_schema_info = std::make_shared(); diff --git a/src/parser/statement/extra/extra_ddl_info.h b/src/parser/statement/extra/extra_ddl_info.h index 072fb65fee..0ba1415253 100644 --- a/src/parser/statement/extra/extra_ddl_info.h +++ b/src/parser/statement/extra/extra_ddl_info.h @@ -43,6 +43,7 @@ class ExtraDDLInfo { ConflictType conflict_type_{ConflictType::kInvalid}; std::string schema_name_{}; + std::string comment_{}; }; } // namespace infinity diff --git a/src/planner/logical_planner.cpp b/src/planner/logical_planner.cpp index 48ee00204d..e69195b1ca 100644 --- a/src/planner/logical_planner.cpp +++ b/src/planner/logical_planner.cpp @@ -617,9 +617,10 @@ Status LogicalPlanner::BuildCreateDatabase(const CreateStatement *statement, Sha } SharedPtr schema_name_ptr = MakeShared(create_schema_info->schema_name_); + SharedPtr comment_ptr = MakeShared(create_schema_info->comment_); SharedPtr logical_create_schema_operator = - LogicalCreateSchema::Make(bind_context_ptr->GetNewLogicalNodeId(), schema_name_ptr, create_schema_info->conflict_type_); + LogicalCreateSchema::Make(bind_context_ptr->GetNewLogicalNodeId(), schema_name_ptr, create_schema_info->conflict_type_, comment_ptr); this->logical_plan_ = logical_create_schema_operator; this->names_ptr_->emplace_back("OK"); diff --git a/src/planner/node/logical_create_schema.cppm b/src/planner/node/logical_create_schema.cppm index 605cd13384..06a0e334f1 100644 --- a/src/planner/node/logical_create_schema.cppm +++ b/src/planner/node/logical_create_schema.cppm @@ -28,13 +28,15 @@ namespace infinity { export class LogicalCreateSchema : public LogicalNode { public: - static inline SharedPtr Make(u64 node_id, const SharedPtr &schema_name, ConflictType conflict_type) { - return MakeShared(node_id, schema_name, conflict_type); + static inline SharedPtr + Make(u64 node_id, SharedPtr schema_name, ConflictType conflict_type, SharedPtr comment) { + return MakeShared(node_id, std::move(schema_name), conflict_type, std::move(comment)); } public: - LogicalCreateSchema(u64 node_id, SharedPtr schema_name, ConflictType conflict_type) - : LogicalNode(node_id, LogicalNodeType::kCreateSchema), schema_name_(std::move(schema_name)), conflict_type_(conflict_type) {} + LogicalCreateSchema(u64 node_id, const SharedPtr schema_name, ConflictType conflict_type, SharedPtr comment) + : LogicalNode(node_id, LogicalNodeType::kCreateSchema), schema_name_(std::move(schema_name)), conflict_type_(conflict_type), + comment_(std::move(comment)) {} [[nodiscard]] Vector GetColumnBindings() const final; @@ -50,9 +52,12 @@ public: [[nodiscard]] inline ConflictType conflict_type() const { return conflict_type_; } + [[nodiscard]] inline SharedPtr comment() const { return comment_; } + private: SharedPtr schema_name_{}; ConflictType conflict_type_{ConflictType::kInvalid}; + SharedPtr comment_{}; }; } // namespace infinity diff --git a/src/storage/common/database_detail.cppm b/src/storage/common/database_detail.cppm index f204ca42bd..85f4196d8a 100644 --- a/src/storage/common/database_detail.cppm +++ b/src/storage/common/database_detail.cppm @@ -19,6 +19,8 @@ namespace infinity { export struct DatabaseDetail { SharedPtr db_name_{}; + SharedPtr db_entry_dir_{}; + SharedPtr db_comment_{}; }; } // namespace infinity diff --git a/src/storage/common/meta_info.cppm b/src/storage/common/meta_info.cppm index 151c9d4f52..c5e7f57345 100644 --- a/src/storage/common/meta_info.cppm +++ b/src/storage/common/meta_info.cppm @@ -25,6 +25,7 @@ export struct DatabaseInfo { SharedPtr db_name_{}; SharedPtr db_entry_dir_{}; SharedPtr absolute_db_path_{}; + SharedPtr db_comment_{}; i64 table_count_{}; }; diff --git a/src/storage/meta/catalog.cpp b/src/storage/meta/catalog.cpp index 250164f2f1..054d08b03a 100644 --- a/src/storage/meta/catalog.cpp +++ b/src/storage/meta/catalog.cpp @@ -135,12 +135,16 @@ Catalog::~Catalog() { // it will not record database in transaction, so when you commit transaction // it will lose operation // use Txn::CreateDatabase instead -Tuple -Catalog::CreateDatabase(const String &db_name, TransactionID txn_id, TxnTimeStamp begin_ts, TxnManager *txn_mgr, ConflictType conflict_type) { - auto init_db_meta = [&]() { return DBMeta::NewDBMeta(MakeShared(db_name)); }; - LOG_TRACE(fmt::format("Adding new database entry: {}", db_name)); - auto [db_meta, r_lock] = this->db_meta_map_.GetMeta(db_name, std::move(init_db_meta)); - return db_meta->CreateNewEntry(std::move(r_lock), txn_id, begin_ts, txn_mgr, conflict_type); +Tuple Catalog::CreateDatabase(const SharedPtr &db_name, + const SharedPtr &comment, + TransactionID txn_id, + TxnTimeStamp begin_ts, + TxnManager *txn_mgr, + ConflictType conflict_type) { + auto init_db_meta = [&]() { return DBMeta::NewDBMeta(db_name); }; + LOG_TRACE(fmt::format("Adding new database entry: {}", *db_name)); + auto [db_meta, r_lock] = this->db_meta_map_.GetMeta(*db_name, std::move(init_db_meta)); + return db_meta->CreateNewEntry(std::move(r_lock), comment, txn_id, begin_ts, txn_mgr, conflict_type); } // do not only use this method to drop database @@ -173,14 +177,17 @@ Tuple, Status> Catalog::GetDatabaseInfo(const String &db return db_meta->GetDatabaseInfo(std::move(r_lock), txn_id, begin_ts); } -void Catalog::CreateDatabaseReplay(const SharedPtr &db_name, - std::function(DBMeta *, SharedPtr, TransactionID, TxnTimeStamp)> &&init_entry, - TransactionID txn_id, - TxnTimeStamp begin_ts) { +void Catalog::CreateDatabaseReplay( + const SharedPtr &db_name, + const SharedPtr &comment, + std::function(DBMeta *, SharedPtr, SharedPtr, TransactionID, TxnTimeStamp)> &&init_entry, + TransactionID txn_id, + TxnTimeStamp begin_ts) { + auto init_db_meta = [&]() { return DBMeta::NewDBMeta(db_name); }; LOG_TRACE(fmt::format("Adding new database entry: {}", *db_name)); auto *db_meta = db_meta_map_.GetMetaNoLock(*db_name, std::move(init_db_meta)); - db_meta->CreateEntryReplay([&](TransactionID txn_id, TxnTimeStamp begin_ts) { return init_entry(db_meta, db_meta->db_name(), txn_id, begin_ts); }, + db_meta->CreateEntryReplay([&](TransactionID txn_id, TxnTimeStamp begin_ts) { return init_entry(db_meta, db_name, comment, txn_id, begin_ts); }, txn_id, begin_ts); } @@ -552,7 +559,7 @@ Catalog::LoadFromFiles(const FullCatalogFileInfo &full_ckp_info, const Vector Catalog::LoadFromFileDelta(const DeltaCatalogFileInfo &delta_ckp_info) { const auto &catalog_path = delta_ckp_info.path_; - if(!VirtualStore::Exists(catalog_path)){ + if (!VirtualStore::Exists(catalog_path)) { VirtualStore::DownloadObject(catalog_path, catalog_path); } @@ -609,7 +616,7 @@ void Catalog::LoadFromEntryDelta(UniquePtr delta_entry, Buffe this->DropDatabaseReplay( *db_name, [&](DBMeta *db_meta, const SharedPtr &db_name, TransactionID txn_id, TxnTimeStamp begin_ts) { - return DBEntry::ReplayDBEntry(db_meta, true, db_entry_dir, db_name, txn_id, begin_ts, commit_ts); + return DBEntry::ReplayDBEntry(db_meta, true, db_entry_dir, db_name, MakeShared(), txn_id, begin_ts, commit_ts); }, txn_id, begin_ts); @@ -617,8 +624,13 @@ void Catalog::LoadFromEntryDelta(UniquePtr delta_entry, Buffe if (merge_flag == MergeFlag::kNew || merge_flag == MergeFlag::kDeleteAndNew) { this->CreateDatabaseReplay( db_name, - [&](DBMeta *db_meta, const SharedPtr &db_name, TransactionID txn_id, TxnTimeStamp begin_ts) { - return DBEntry::ReplayDBEntry(db_meta, false, db_entry_dir, db_name, txn_id, begin_ts, commit_ts); + add_db_entry_op->comment_, + [&](DBMeta *db_meta, + const SharedPtr &db_name, + const SharedPtr &comment, + TransactionID txn_id, + TxnTimeStamp begin_ts) { + return DBEntry::ReplayDBEntry(db_meta, false, db_entry_dir, db_name, comment, txn_id, begin_ts, commit_ts); }, txn_id, begin_ts); @@ -949,7 +961,7 @@ void Catalog::LoadFromEntryDelta(UniquePtr delta_entry, Buffe UniquePtr Catalog::LoadFromFile(const FullCatalogFileInfo &full_ckp_info, BufferManager *buffer_mgr) { const auto &catalog_path = Path(InfinityContext::instance().config()->DataDir()) / full_ckp_info.path_; - if(!VirtualStore::Exists(catalog_path)){ + if (!VirtualStore::Exists(catalog_path)) { VirtualStore::DownloadObject(catalog_path, catalog_path); } @@ -1009,7 +1021,7 @@ void Catalog::SaveFullCatalog(TxnTimeStamp max_commit_ts, String &full_catalog_p // FIXME: Temp implementation, will be replaced by async task. auto [catalog_file_handle, status] = VirtualStore::Open(catalog_tmp_path, FileAccessMode::kWrite); if (!status.ok()) { - UnrecoverableError(status.message()); + UnrecoverableError(fmt::format("{}: {}", catalog_tmp_path, status.message())); } status = catalog_file_handle->Append(catalog_str.data(), catalog_str.size()); @@ -1020,8 +1032,7 @@ void Catalog::SaveFullCatalog(TxnTimeStamp max_commit_ts, String &full_catalog_p // Rename temp file to regular catalog file VirtualStore::Rename(catalog_tmp_path, full_path); - if(InfinityContext::instance().GetServerRole() == NodeRole::kLeader or - InfinityContext::instance().GetServerRole() == NodeRole::kStandalone){ + if (InfinityContext::instance().GetServerRole() == NodeRole::kLeader or InfinityContext::instance().GetServerRole() == NodeRole::kStandalone) { VirtualStore::UploadObject(full_path, full_path); } @@ -1109,8 +1120,7 @@ bool Catalog::SaveDeltaCatalog(TxnTimeStamp last_ckp_ts, TxnTimeStamp &max_commi out_file_handle->Append((reinterpret_cast(buf.data())), act_size); out_file_handle->Sync(); - if(InfinityContext::instance().GetServerRole() == NodeRole::kLeader or - InfinityContext::instance().GetServerRole() == NodeRole::kStandalone){ + if (InfinityContext::instance().GetServerRole() == NodeRole::kLeader or InfinityContext::instance().GetServerRole() == NodeRole::kStandalone) { VirtualStore::UploadObject(full_path, full_path); } // { diff --git a/src/storage/meta/catalog.cppm b/src/storage/meta/catalog.cppm index 622b93128e..07814f12ac 100644 --- a/src/storage/meta/catalog.cppm +++ b/src/storage/meta/catalog.cppm @@ -92,7 +92,8 @@ public: public: // Database related functions - Tuple CreateDatabase(const String &db_name, + Tuple CreateDatabase(const SharedPtr &db_name, + const SharedPtr &comment, TransactionID txn_id, TxnTimeStamp begin_ts, TxnManager *txn_mgr, @@ -112,7 +113,8 @@ public: // replay void CreateDatabaseReplay(const SharedPtr &db_name, - std::function(DBMeta *, SharedPtr, TransactionID, TxnTimeStamp)> &&init_entry, + const SharedPtr &comment, + std::function(DBMeta *, SharedPtr, SharedPtr, TransactionID, TxnTimeStamp)> &&init_entry, TransactionID txn_id, TxnTimeStamp begin_ts); diff --git a/src/storage/meta/db_meta.cpp b/src/storage/meta/db_meta.cpp index face1c4177..b53ae107a7 100644 --- a/src/storage/meta/db_meta.cpp +++ b/src/storage/meta/db_meta.cpp @@ -39,12 +39,13 @@ UniquePtr DBMeta::NewDBMeta(const SharedPtr &db_name) { // TODO: Use Txn* txn as parma instead of TransactionID txn_id and TxnManager *txn_mgr Tuple DBMeta::CreateNewEntry(std::shared_lock &&r_lock, + const SharedPtr& comment, TransactionID txn_id, TxnTimeStamp begin_ts, TxnManager *txn_mgr, ConflictType conflict_type) { auto init_db_entry = [&](TransactionID txn_id, TxnTimeStamp begin_ts) { - return DBEntry::NewDBEntry(this, false, this->db_name_, txn_id, begin_ts); + return DBEntry::NewDBEntry(this, false, this->db_name_, comment, txn_id, begin_ts); }; return db_entry_list_.AddEntry(std::move(r_lock), std::move(init_db_entry), txn_id, begin_ts, txn_mgr, conflict_type); } @@ -55,7 +56,7 @@ Tuple, Status> DBMeta::DropNewEntry(std::shared_lockdb_name_, txn_id, begin_ts); + return DBEntry::NewDBEntry(this, true, this->db_name_, MakeShared(), txn_id, begin_ts); }; return db_entry_list_.DropEntry(std::move(r_lock), std::move(init_drop_entry), txn_id, begin_ts, txn_mgr, conflict_type); } @@ -101,6 +102,7 @@ DBMeta::GetDatabaseInfo(std::shared_lock &&r_lock, Transactio db_info->db_entry_dir_ = db_entry->db_entry_dir(); db_info->absolute_db_path_ = db_entry->AbsoluteDir(); db_info->table_count_ = db_entry->TableCollections(txn_id, begin_ts).size(); + db_info->db_comment_ = db_entry->db_comment_ptr(); return {db_info, Status::OK()}; } diff --git a/src/storage/meta/db_meta.cppm b/src/storage/meta/db_meta.cppm index 4300023f1b..037c11b59e 100644 --- a/src/storage/meta/db_meta.cppm +++ b/src/storage/meta/db_meta.cppm @@ -56,6 +56,7 @@ public: } private: Tuple CreateNewEntry(std::shared_lock &&r_lock, + const SharedPtr& comment, TransactionID txn_id, TxnTimeStamp begin_ts, TxnManager *txn_mgr, diff --git a/src/storage/meta/entry/db_entry.cpp b/src/storage/meta/entry/db_entry.cpp index b5920d73cd..9e4d6a915f 100644 --- a/src/storage/meta/entry/db_entry.cpp +++ b/src/storage/meta/entry/db_entry.cpp @@ -52,22 +52,28 @@ DBEntry::DBEntry(DBMeta *db_meta, bool is_delete, const SharedPtr &db_entry_dir, const SharedPtr &db_name, + const SharedPtr &comment, TransactionID txn_id, TxnTimeStamp begin_ts) - : BaseEntry(EntryType::kDatabase, is_delete, DBEntry::EncodeIndex(*db_name)), db_meta_(db_meta), db_entry_dir_(db_entry_dir), db_name_(db_name) { + : BaseEntry(EntryType::kDatabase, is_delete, DBEntry::EncodeIndex(*db_name)), db_meta_(db_meta), db_entry_dir_(db_entry_dir), db_name_(db_name), + db_comment_(comment) { begin_ts_ = begin_ts; txn_id_ = txn_id; } -SharedPtr -DBEntry::NewDBEntry(DBMeta *db_meta, bool is_delete, const SharedPtr &db_name, TransactionID txn_id, TxnTimeStamp begin_ts) { +SharedPtr DBEntry::NewDBEntry(DBMeta *db_meta, + bool is_delete, + const SharedPtr &db_name, + const SharedPtr &comment, + TransactionID txn_id, + TxnTimeStamp begin_ts) { SharedPtr db_entry_dir; if (is_delete) { db_entry_dir = MakeShared("deleted"); } else { db_entry_dir = DetermineDBDir(*db_name); } - return MakeShared(db_meta, is_delete, db_entry_dir, db_name, txn_id, begin_ts); + return MakeShared(db_meta, is_delete, db_entry_dir, db_name, comment, txn_id, begin_ts); } SharedPtr DBEntry::DetermineDBDir(const String &db_name) { @@ -78,10 +84,11 @@ SharedPtr DBEntry::ReplayDBEntry(DBMeta *db_meta, bool is_delete, const SharedPtr &db_entry_dir, const SharedPtr &db_name, + const SharedPtr &comment, TransactionID txn_id, TxnTimeStamp begin_ts, TxnTimeStamp commit_ts) noexcept { - auto db_entry = MakeShared(db_meta, is_delete, db_entry_dir, db_name, txn_id, begin_ts); + auto db_entry = MakeShared(db_meta, is_delete, db_entry_dir, db_name, comment, txn_id, begin_ts); db_entry->commit_ts_ = commit_ts; return db_entry; } @@ -139,8 +146,7 @@ void DBEntry::RemoveTableEntry(const String &table_name, TransactionID txn_id) { table_meta->DeleteEntry(txn_id); } -Status -DBEntry::AddTable(SharedPtr table_entry, TransactionID txn_id, TxnTimeStamp begin_ts, TxnManager *txn_mgr, bool add_if_found) { +Status DBEntry::AddTable(SharedPtr table_entry, TransactionID txn_id, TxnTimeStamp begin_ts, TxnManager *txn_mgr, bool add_if_found) { auto init_table_meta = [&]() { return TableMeta::NewTableMeta(this->db_entry_dir_, table_entry->GetTableName(), this); }; const String &table_name = *table_entry->GetTableName(); LOG_TRACE(fmt::format("Adding new table entry: {}", table_name)); @@ -242,7 +248,7 @@ Status DBEntry::GetTablesDetail(Txn *txn, Vector &output_table_arra return Status::OK(); } -Tuple, Vector, std::shared_lock> DBEntry::GetAllTableMetas() const { +Tuple, Vector, std::shared_lock> DBEntry::GetAllTableMetas() const { return table_meta_map_.GetAllMetaGuard(); } @@ -256,6 +262,12 @@ nlohmann::json DBEntry::Serialize(TxnTimeStamp max_commit_ts) { nlohmann::json json_res; json_res["db_name"] = *this->db_name_; + + String& db_comment = *this->db_comment_; + if(!db_comment.empty()) { + json_res["db_comment"] = db_comment; + } + json_res["txn_id"] = this->txn_id_; json_res["begin_ts"] = this->begin_ts_; json_res["commit_ts"] = this->commit_ts_.load(); @@ -280,6 +292,14 @@ UniquePtr DBEntry::Deserialize(const nlohmann::json &db_entry_json, DBM bool deleted = db_entry_json["deleted"]; SharedPtr db_name = MakeShared(db_entry_json["db_name"]); + + SharedPtr db_comment = nullptr; + if(db_entry_json.contains("db_comment")) { + db_comment = MakeShared(db_entry_json["db_comment"]); + } else { + db_comment = MakeShared(); + } + TransactionID txn_id = db_entry_json["txn_id"]; u64 begin_ts = db_entry_json["begin_ts"]; @@ -287,7 +307,7 @@ UniquePtr DBEntry::Deserialize(const nlohmann::json &db_entry_json, DBM if (!deleted) { db_entry_dir = MakeShared(db_entry_json["db_entry_dir"]); } - UniquePtr db_entry = MakeUnique(db_meta, deleted, db_entry_dir, db_name, txn_id, begin_ts); + UniquePtr db_entry = MakeUnique(db_meta, deleted, db_entry_dir, db_name, db_comment, txn_id, begin_ts); u64 commit_ts = db_entry_json["commit_ts"]; db_entry->commit_ts_.store(commit_ts); diff --git a/src/storage/meta/entry/db_entry.cppm b/src/storage/meta/entry/db_entry.cppm index 677ac6a256..4f9088fa58 100644 --- a/src/storage/meta/entry/db_entry.cppm +++ b/src/storage/meta/entry/db_entry.cppm @@ -50,16 +50,22 @@ public: bool is_delete, const SharedPtr &db_entry_dir, const SharedPtr &db_name, + const SharedPtr &comment, TransactionID txn_id, TxnTimeStamp begin_ts); - static SharedPtr - NewDBEntry(DBMeta *db_meta, bool is_delete, const SharedPtr &db_name, TransactionID txn_id, TxnTimeStamp begin_ts); + static SharedPtr NewDBEntry(DBMeta *db_meta, + bool is_delete, + const SharedPtr &db_name, + const SharedPtr &comment, + TransactionID txn_id, + TxnTimeStamp begin_ts); static SharedPtr ReplayDBEntry(DBMeta *db_meta, bool is_delete, const SharedPtr &db_entry_dir, const SharedPtr &db_name, + const SharedPtr &comment, TransactionID txn_id, TxnTimeStamp begin_ts, TxnTimeStamp commit_ts) noexcept; @@ -75,6 +81,8 @@ public: [[nodiscard]] const SharedPtr &db_entry_dir() const { return db_entry_dir_; } + [[nodiscard]] const SharedPtr &db_comment_ptr() const { return db_comment_; } + SharedPtr AbsoluteDir() const; String GetPathNameTail() const; @@ -120,7 +128,7 @@ public: Status GetTablesDetail(Txn *txn, Vector &output_table_array); - Tuple, Vector, std::shared_lock> GetAllTableMetas() const; + Tuple, Vector, std::shared_lock> GetAllTableMetas() const; private: static SharedPtr DetermineDBDir(const String &db_name); @@ -133,6 +141,7 @@ public: private: const SharedPtr db_entry_dir_{}; const SharedPtr db_name_{}; + const SharedPtr db_comment_{}; MetaMap table_meta_map_{}; diff --git a/src/storage/storage.cpp b/src/storage/storage.cpp index a6c993e139..bb69c64b0b 100644 --- a/src/storage/storage.cpp +++ b/src/storage/storage.cpp @@ -116,13 +116,12 @@ void Storage::SetStorageMode(StorageMode target_mode) { if (VirtualStore::IsInit()) { UnrecoverableError("remote storage system was initialized before."); } - Status status = VirtualStore::InitRemoteStore( - StorageType::kMinio, - config_ptr_->ObjectStorageUrl(), - config_ptr_->ObjectStorageHttps(), - config_ptr_->ObjectStorageAccessKey(), - config_ptr_->ObjectStorageSecretKey(), - config_ptr_->ObjectStorageBucket()); + Status status = VirtualStore::InitRemoteStore(StorageType::kMinio, + config_ptr_->ObjectStorageUrl(), + config_ptr_->ObjectStorageHttps(), + config_ptr_->ObjectStorageAccessKey(), + config_ptr_->ObjectStorageSecretKey(), + config_ptr_->ObjectStorageBucket()); if (!status.ok()) { UnrecoverableError(status.message()); } @@ -432,7 +431,7 @@ void Storage::CreateDefaultDB() { Txn *new_txn = txn_mgr_->BeginTxn(MakeUnique("create db1")); new_txn->SetReaderAllowed(true); // Txn1: Create db1, OK - Status status = new_txn->CreateDatabase("default_db", ConflictType::kError); + Status status = new_txn->CreateDatabase(MakeShared("default_db"), ConflictType::kError, MakeShared("Initial startup created")); if (!status.ok()) { UnrecoverableError("Can't initial 'default_db'"); } diff --git a/src/storage/txn/txn.cpp b/src/storage/txn/txn.cpp index c82285db67..cd81f886b3 100644 --- a/src/storage/txn/txn.cpp +++ b/src/storage/txn/txn.cpp @@ -168,17 +168,17 @@ void Txn::CheckTxn(const String &db_name) { } // Database OPs -Status Txn::CreateDatabase(const String &db_name, ConflictType conflict_type) { +Status Txn::CreateDatabase(const SharedPtr &db_name, ConflictType conflict_type, const SharedPtr &comment) { this->CheckTxnStatus(); TxnTimeStamp begin_ts = txn_context_.GetBeginTS(); - auto [db_entry, status] = catalog_->CreateDatabase(db_name, this->txn_id_, begin_ts, txn_mgr_, conflict_type); + auto [db_entry, status] = catalog_->CreateDatabase(db_name, comment, this->txn_id_, begin_ts, txn_mgr_, conflict_type); if (db_entry == nullptr) { // nullptr means some exception happened return status; } txn_store_.AddDBStore(db_entry); - wal_entry_->cmds_.push_back(MakeShared(std::move(db_name), db_entry->GetPathNameTail())); + wal_entry_->cmds_.push_back(MakeShared(*db_name, db_entry->GetPathNameTail(), *comment)); return Status::OK(); } @@ -217,7 +217,7 @@ Vector Txn::ListDatabases() { SizeT db_count = db_entries.size(); for (SizeT idx = 0; idx < db_count; ++idx) { DBEntry *db_entry = db_entries[idx]; - res.emplace_back(DatabaseDetail{db_entry->db_name_ptr()}); + res.emplace_back(DatabaseDetail{db_entry->db_name_ptr(), db_entry->db_entry_dir(), db_entry->db_comment_ptr()}); } return res; @@ -265,7 +265,7 @@ Status Txn::AddColumns(TableEntry *table_entry, const Vector new_table_entry = table_entry->Clone(); TxnTableStore *txn_table_store = txn_store_.GetTxnTableStore(new_table_entry.get()); new_table_entry->AddColumns(column_defs, txn_table_store); - auto add_status = db_entry->AddTable(std::move(new_table_entry), txn_id_, begin_ts, txn_mgr_, true/*add_if_found*/); + auto add_status = db_entry->AddTable(std::move(new_table_entry), txn_id_, begin_ts, txn_mgr_, true /*add_if_found*/); if (!add_status.ok()) { return add_status; } @@ -284,7 +284,7 @@ Status Txn::DropColumns(TableEntry *table_entry, const Vector &column_na UniquePtr new_table_entry = table_entry->Clone(); TxnTableStore *txn_table_store = txn_store_.GetTxnTableStore(new_table_entry.get()); new_table_entry->DropColumns(column_names, txn_table_store); - auto drop_status = db_entry->AddTable(std::move(new_table_entry), txn_id_, begin_ts, txn_mgr_, true/*add_if_found*/); + auto drop_status = db_entry->AddTable(std::move(new_table_entry), txn_id_, begin_ts, txn_mgr_, true /*add_if_found*/); if (!drop_status.ok()) { return drop_status; } @@ -485,9 +485,10 @@ TxnTimeStamp Txn::Commit() { } NodeRole current_node_role = InfinityContext::instance().GetServerRole(); - if(current_node_role != NodeRole::kStandalone and current_node_role != NodeRole::kLeader) { - if(!IsReaderAllowed()) { - RecoverableError(Status::InvalidNodeRole(fmt::format("This node is: {}, only read-only transaction is allowed.", ToString(current_node_role)))); + if (current_node_role != NodeRole::kStandalone and current_node_role != NodeRole::kLeader) { + if (!IsReaderAllowed()) { + RecoverableError( + Status::InvalidNodeRole(fmt::format("This node is: {}, only read-only transaction is allowed.", ToString(current_node_role)))); } } @@ -524,9 +525,7 @@ TxnTimeStamp Txn::Commit() { return commit_ts; } -bool Txn::CheckConflict(Catalog *catalog) { - return txn_store_.CheckConflict(catalog); -} +bool Txn::CheckConflict(Catalog *catalog) { return txn_store_.CheckConflict(catalog); } bool Txn::CheckConflict(Txn *other_txn) { LOG_TRACE(fmt::format("Txn {} check conflict with {}.", txn_id_, other_txn->txn_id_)); @@ -582,7 +581,7 @@ void Txn::Rollback() { LOG_TRACE(fmt::format("Txn: {} is dropped.", txn_id_)); } -void Txn::AddWalCmd(const SharedPtr &cmd) { +void Txn::AddWalCmd(const SharedPtr &cmd) { std::lock_guard guard(txn_store_.mtx_); auto state = txn_context_.GetTxnState(); if (state != TxnState::kStarted) { diff --git a/src/storage/txn/txn.cppm b/src/storage/txn/txn.cppm index 7c91a099f2..4bfafd2dc8 100644 --- a/src/storage/txn/txn.cppm +++ b/src/storage/txn/txn.cppm @@ -106,7 +106,7 @@ public: void Rollback(); // Database OPs - Status CreateDatabase(const String &db_name, ConflictType conflict_type); + Status CreateDatabase(const SharedPtr &db_name, ConflictType conflict_type, const SharedPtr &comment); Status DropDatabase(const String &db_name, ConflictType conflict_type); @@ -209,7 +209,7 @@ public: void FullCheckpoint(const TxnTimeStamp max_commit_ts); - bool DeltaCheckpoint(TxnTimeStamp last_ckp_ts,TxnTimeStamp &max_commit_ts); + bool DeltaCheckpoint(TxnTimeStamp last_ckp_ts, TxnTimeStamp &max_commit_ts); TxnManager *txn_mgr() const { return txn_mgr_; } @@ -229,14 +229,9 @@ public: void AddWriteTxnNum(TableEntry *table_entry); // Some transaction need to pass the txn access right check in txn commit phase; - void SetReaderAllowed(bool allowed) { - allowed_in_reader_ = allowed; - } - - bool IsReaderAllowed() const { - return allowed_in_reader_; - } + void SetReaderAllowed(bool allowed) { allowed_in_reader_ = allowed; } + bool IsReaderAllowed() const { return allowed_in_reader_; } TxnStore *txn_store() { return &txn_store_; } @@ -248,7 +243,7 @@ private: private: // Reference to external class TxnManager *txn_mgr_{}; - BufferManager *buffer_mgr_{}; // This BufferManager ptr Only for replaying wal + BufferManager *buffer_mgr_{}; // This BufferManager ptr Only for replaying wal BGTaskProcessor *bg_task_processor_{}; Catalog *catalog_{}; diff --git a/src/storage/wal/catalog_delta_entry.cpp b/src/storage/wal/catalog_delta_entry.cpp index 0156fc754c..e35d98d63d 100644 --- a/src/storage/wal/catalog_delta_entry.cpp +++ b/src/storage/wal/catalog_delta_entry.cpp @@ -359,7 +359,8 @@ MergeFlag CatalogDeltaOperation::NextDeleteFlag(MergeFlag new_merge_flag) const }; AddDBEntryOp::AddDBEntryOp(DBEntry *db_entry, TxnTimeStamp commit_ts) - : CatalogDeltaOperation(CatalogDeltaOpType::ADD_DATABASE_ENTRY, db_entry, commit_ts), db_entry_dir_(db_entry->db_entry_dir()) {} + : CatalogDeltaOperation(CatalogDeltaOpType::ADD_DATABASE_ENTRY, db_entry, commit_ts), db_entry_dir_(db_entry->db_entry_dir()), + comment_(db_entry->db_comment_ptr()) {} AddTableEntryOp::AddTableEntryOp(TableEntry *table_entry, TxnTimeStamp commit_ts) : CatalogDeltaOperation(CatalogDeltaOpType::ADD_TABLE_ENTRY, table_entry, commit_ts), table_entry_dir_(table_entry->TableEntryDir()), @@ -433,6 +434,7 @@ UniquePtr AddDBEntryOp::ReadAdv(const char *&ptr) { add_db_op->ReadAdvBase(ptr); add_db_op->db_entry_dir_ = MakeShared(ReadBufAdv(ptr)); + add_db_op->comment_ = MakeShared(ReadBufAdv(ptr)); return add_db_op; } @@ -546,7 +548,7 @@ UniquePtr AddChunkIndexEntryOp::ReadAdv(const char *&ptr) SizeT AddDBEntryOp::GetSizeInBytes() const { auto total_size = sizeof(CatalogDeltaOpType) + GetBaseSizeInBytes(); - total_size += sizeof(i32) + db_entry_dir_->size(); + total_size += sizeof(i32) + db_entry_dir_->size() + sizeof(i32) + comment_->size(); return total_size; } @@ -630,6 +632,7 @@ void AddDBEntryOp::WriteAdv(char *&buf) const { WriteBufAdv(buf, this->type_); WriteAdvBase(buf); WriteBufAdv(buf, *this->db_entry_dir_); + WriteBufAdv(buf, *this->comment_); } void AddTableEntryOp::WriteAdv(char *&buf) const { @@ -719,9 +722,10 @@ void AddChunkIndexEntryOp::WriteAdv(char *&buf) const { } const String AddDBEntryOp::ToString() const { - return fmt::format("AddDBEntryOp {} db_entry_dir: {}", + return fmt::format("AddDBEntryOp {} db_entry_dir: {} comment: {}", CatalogDeltaOperation::ToString(), - db_entry_dir_.get() != nullptr ? *db_entry_dir_ : "nullptr"); + db_entry_dir_.get() != nullptr ? *db_entry_dir_ : "nullptr", + comment_->empty() ? "" : *comment_); } const String AddTableEntryOp::ToString() const { @@ -804,7 +808,8 @@ const String AddChunkIndexEntryOp::ToString() const { bool AddDBEntryOp::operator==(const CatalogDeltaOperation &rhs) const { auto *rhs_op = dynamic_cast(&rhs); - return rhs_op != nullptr && CatalogDeltaOperation::operator==(rhs) && IsEqual(*db_entry_dir_, *rhs_op->db_entry_dir_); + return rhs_op != nullptr && CatalogDeltaOperation::operator==(rhs) && IsEqual(*db_entry_dir_, *rhs_op->db_entry_dir_) && + IsEqual(*comment_, *rhs_op->comment_); } bool AddTableEntryOp::operator==(const CatalogDeltaOperation &rhs) const { diff --git a/src/storage/wal/catalog_delta_entry.cppm b/src/storage/wal/catalog_delta_entry.cppm index 05dd2e68c2..ec23d2dae1 100644 --- a/src/storage/wal/catalog_delta_entry.cppm +++ b/src/storage/wal/catalog_delta_entry.cppm @@ -142,6 +142,7 @@ public: public: SharedPtr db_entry_dir_{}; + SharedPtr comment_{}; }; /// class AddTableEntryOp diff --git a/src/storage/wal/wal_entry.cpp b/src/storage/wal/wal_entry.cpp index 8319795d95..be8561ed14 100644 --- a/src/storage/wal/wal_entry.cpp +++ b/src/storage/wal/wal_entry.cpp @@ -15,8 +15,8 @@ module; #include -#include #include +#include module wal_entry; @@ -246,7 +246,7 @@ i32 WalChunkIndexInfo::GetSizeInBytes() const { bool use_object_cache = pm != nullptr; SizeT size = 0; if (use_object_cache) { - pm_size_= addr_serializer_.GetSizeInBytes(); + pm_size_ = addr_serializer_.GetSizeInBytes(); size += pm_size_; } return size + sizeof(ChunkID) + sizeof(i32) + base_name_.size() + sizeof(base_rowid_) + sizeof(row_count_) + sizeof(deprecate_ts_); @@ -308,7 +308,8 @@ SharedPtr WalCmd::ReadAdv(const char *&ptr, i32 max_bytes) { case WalCommandType::CREATE_DATABASE: { String db_name = ReadBufAdv(ptr); String db_dir_tail = ReadBufAdv(ptr); - cmd = MakeShared(std::move(db_name), std::move(db_dir_tail)); + String db_comment = ReadBufAdv(ptr); + cmd = MakeShared(std::move(db_name), std::move(db_dir_tail), std::move(db_comment)); break; } case WalCommandType::DROP_DATABASE: { @@ -642,7 +643,8 @@ bool WalCmdDropColumns::operator==(const WalCmd &other) const { } i32 WalCmdCreateDatabase::GetSizeInBytes() const { - return sizeof(WalCommandType) + sizeof(i32) + this->db_name_.size() + sizeof(i32) + this->db_dir_tail_.size(); + return sizeof(WalCommandType) + sizeof(i32) + this->db_name_.size() + sizeof(i32) + this->db_dir_tail_.size() + sizeof(i32) + + this->db_comment_.size(); } i32 WalCmdDropDatabase::GetSizeInBytes() const { return sizeof(WalCommandType) + sizeof(i32) + this->db_name_.size(); } @@ -757,6 +759,7 @@ void WalCmdCreateDatabase::WriteAdv(char *&buf) const { WriteBufAdv(buf, WalCommandType::CREATE_DATABASE); WriteBufAdv(buf, this->db_name_); WriteBufAdv(buf, this->db_dir_tail_); + WriteBufAdv(buf, this->db_comment_); } void WalCmdDropDatabase::WriteAdv(char *&buf) const { @@ -929,6 +932,7 @@ String WalCmdCreateDatabase::ToString() const { std::stringstream ss; ss << "db name: " << db_name_ << std::endl; ss << "db dir: " << db_dir_tail_ << std::endl; + ss << "db comment: " << db_comment_ << std::endl; return ss.str(); } @@ -1097,7 +1101,7 @@ String WalCmdDropColumns::ToString() const { } String WalCmdCreateDatabase::CompactInfo() const { - return fmt::format("{}: database: {}, dir: {}", WalCmd::WalCommandTypeToString(GetType()), db_name_, db_dir_tail_); + return fmt::format("{}: database: {}, dir: {}, comment: {}", WalCmd::WalCommandTypeToString(GetType()), db_name_, db_dir_tail_, db_comment_); } String WalCmdDropDatabase::CompactInfo() const { return fmt::format("{}: database: {}", WalCmd::WalCommandTypeToString(GetType()), db_name_); } diff --git a/src/storage/wal/wal_entry.cppm b/src/storage/wal/wal_entry.cppm index 3cc6c8906b..d4989cd6e6 100644 --- a/src/storage/wal/wal_entry.cppm +++ b/src/storage/wal/wal_entry.cppm @@ -177,7 +177,8 @@ export struct WalCmd { }; export struct WalCmdCreateDatabase final : public WalCmd { - explicit WalCmdCreateDatabase(String db_name, String db_dir_tail) : db_name_(std::move(db_name)), db_dir_tail_(std::move(db_dir_tail)) { + explicit WalCmdCreateDatabase(String db_name, String db_dir_tail, String db_comment) + : db_name_(std::move(db_name)), db_dir_tail_(std::move(db_dir_tail)), db_comment_(std::move(db_comment)) { assert(!std::filesystem::path(db_dir_tail_).is_absolute()); } @@ -193,6 +194,7 @@ export struct WalCmdCreateDatabase final : public WalCmd { String db_name_{}; String db_dir_tail_{}; + String db_comment_{}; }; export struct WalCmdDropDatabase final : public WalCmd { diff --git a/src/storage/wal/wal_manager.cpp b/src/storage/wal/wal_manager.cpp index 1d0aa1c5de..20bebba246 100644 --- a/src/storage/wal/wal_manager.cpp +++ b/src/storage/wal/wal_manager.cpp @@ -221,10 +221,9 @@ Vector> WalManager::GetDiffWalEntryString(TxnTimeStamp start_t } } - log_strings.reserve(log_entries.size()); - for(const auto& log_entry: log_entries) { + for (const auto &log_entry : log_entries) { i32 exp_size = log_entry->GetSizeInBytes(); @@ -235,7 +234,10 @@ Vector> WalManager::GetDiffWalEntryString(TxnTimeStamp start_t log_entry->WriteAdv(ptr); i32 act_size = ptr - buf_ptr->data(); if (exp_size != act_size) { - String error_message = fmt::format("WalManager::Flush WalEntry estimated size {} differ with the actual one {}, entry {}", exp_size, act_size, log_entry->ToString()); + String error_message = fmt::format("WalManager::Flush WalEntry estimated size {} differ with the actual one {}, entry {}", + exp_size, + act_size, + log_entry->ToString()); UnrecoverableError(error_message); } @@ -939,8 +941,9 @@ void WalManager::WalCmdCreateDatabaseReplay(const WalCmdCreateDatabase &cmd, Tra auto db_dir = MakeShared(cmd.db_dir_tail_); catalog->CreateDatabaseReplay( MakeShared(cmd.db_name_), - [&](DBMeta *db_meta, const SharedPtr &db_name, TransactionID txn_id, TxnTimeStamp begin_ts) { - return DBEntry::ReplayDBEntry(db_meta, false, db_dir, db_name, txn_id, begin_ts, commit_ts); + MakeShared(cmd.db_comment_), + [&](DBMeta *db_meta, const SharedPtr &db_name, const SharedPtr &comment, TransactionID txn_id, TxnTimeStamp begin_ts) { + return DBEntry::ReplayDBEntry(db_meta, false, db_dir, db_name, comment, txn_id, begin_ts, commit_ts); }, txn_id, 0 /*begin_ts*/); @@ -976,7 +979,7 @@ void WalManager::WalCmdDropDatabaseReplay(const WalCmdDropDatabase &cmd, Transac storage_->catalog()->DropDatabaseReplay( cmd.db_name_, [&](DBMeta *db_meta, const SharedPtr &db_name, TransactionID txn_id, TxnTimeStamp begin_ts) { - return DBEntry::ReplayDBEntry(db_meta, true, data_path_ptr, db_name, txn_id, begin_ts, commit_ts); + return DBEntry::ReplayDBEntry(db_meta, true, data_path_ptr, db_name, MakeShared(), txn_id, begin_ts, commit_ts); }, txn_id, 0 /*begin_ts*/); diff --git a/src/unit_test/main/infinity.cpp b/src/unit_test/main/infinity.cpp index edc5f7d279..6200bb58f8 100644 --- a/src/unit_test/main/infinity.cpp +++ b/src/unit_test/main/infinity.cpp @@ -45,8 +45,8 @@ TEST_F(InfinityTest, test1) { { QueryResult result = infinity->ListDatabases(); - // EXPECT_EQ(result.result_table_->row_count(), 1); // Bug - EXPECT_EQ(result.result_table_->ColumnCount(), 1u); + EXPECT_EQ(result.result_table_->row_count(), 1); + EXPECT_EQ(result.result_table_->ColumnCount(), 3u); EXPECT_EQ(result.result_table_->GetColumnNameById(0), "database"); EXPECT_EQ(result.result_table_->DataBlockCount(), 1u); SharedPtr data_block = result.result_table_->GetDataBlockById(0); @@ -58,7 +58,7 @@ TEST_F(InfinityTest, test1) { { CreateDatabaseOptions create_db_opts; - infinity->CreateDatabase("db1", create_db_opts); + infinity->CreateDatabase("db1", create_db_opts, ""); QueryResult result = infinity->ListDatabases(); SharedPtr data_block = result.result_table_->GetDataBlockById(0); EXPECT_EQ(data_block->row_count(), 2); diff --git a/src/unit_test/main/table.cpp b/src/unit_test/main/table.cpp index c1d5fc7a50..3009147a22 100644 --- a/src/unit_test/main/table.cpp +++ b/src/unit_test/main/table.cpp @@ -48,7 +48,7 @@ TEST_F(InfinityTableTest, test1) { SharedPtr infinity = Infinity::LocalConnect(); { CreateDatabaseOptions create_db_opts; - infinity->CreateDatabase("db1", create_db_opts); + infinity->CreateDatabase("db1", create_db_opts, ""); QueryResult result = infinity->GetDatabase("db1"); EXPECT_TRUE(result.IsOk()); diff --git a/src/unit_test/storage/bg_task/cleanup_task.cpp b/src/unit_test/storage/bg_task/cleanup_task.cpp index 97600986c3..e99a731d25 100644 --- a/src/unit_test/storage/bg_task/cleanup_task.cpp +++ b/src/unit_test/storage/bg_task/cleanup_task.cpp @@ -77,7 +77,7 @@ TEST_P(CleanupTaskTest, test_delete_db_simple) { auto db_name = MakeShared("db1"); { auto *txn = txn_mgr->BeginTxn(MakeUnique("create db1")); - txn->CreateDatabase(*db_name, ConflictType::kError); + txn->CreateDatabase(db_name, ConflictType::kError, MakeShared()); txn_mgr->CommitTxn(txn); } WaitFlushDeltaOp(storage); @@ -106,7 +106,7 @@ TEST_P(CleanupTaskTest, test_delete_db_complex) { auto db_name = MakeShared("db1"); { auto *txn = txn_mgr->BeginTxn(MakeUnique("create db1")); - txn->CreateDatabase(*db_name, ConflictType::kError); + txn->CreateDatabase(db_name, ConflictType::kError, MakeShared()); txn_mgr->CommitTxn(txn); } { @@ -117,12 +117,12 @@ TEST_P(CleanupTaskTest, test_delete_db_complex) { } { auto *txn = txn_mgr->BeginTxn(MakeUnique("create db1")); - txn->CreateDatabase(*db_name, ConflictType::kError); + txn->CreateDatabase(db_name, ConflictType::kError, MakeShared()); txn_mgr->RollBackTxn(txn); } { auto *txn = txn_mgr->BeginTxn(MakeUnique("create db1")); - txn->CreateDatabase(*db_name, ConflictType::kError); + txn->CreateDatabase(db_name, ConflictType::kError, MakeShared()); txn_mgr->CommitTxn(txn); } { diff --git a/src/unit_test/storage/meta/catalog.cpp b/src/unit_test/storage/meta/catalog.cpp index 5881a2a3b4..625743af3b 100644 --- a/src/unit_test/storage/meta/catalog.cpp +++ b/src/unit_test/storage/meta/catalog.cpp @@ -71,7 +71,7 @@ TEST_P(CatalogTest, simple_test1) { // create db in empty catalog should be success { - auto [base_entry, status] = catalog->CreateDatabase("db1", txn1->TxnID(), txn1->BeginTS(), txn_mgr); + auto [base_entry, status] = catalog->CreateDatabase(MakeShared("db1"), MakeShared(), txn1->TxnID(), txn1->BeginTS(), txn_mgr); EXPECT_TRUE(status.ok()); // store this entry databases["db1"] = base_entry; @@ -127,7 +127,7 @@ TEST_P(CatalogTest, simple_test2) { // create db in empty catalog should be success { - Status status = txn1->CreateDatabase("db1", ConflictType::kError); + Status status = txn1->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(status.ok()); } @@ -177,7 +177,7 @@ TEST_P(CatalogTest, concurrent_test) { auto write_routine = [&](int start, Txn *txn) { for (int db_id = start; db_id < 1000; db_id += 2) { String db_name = "db" + std::to_string(db_id); - Status status = txn->CreateDatabase(db_name, ConflictType::kError); + Status status = txn->CreateDatabase(MakeShared(db_name), ConflictType::kError, MakeShared()); EXPECT_TRUE(status.ok()); } }; @@ -260,10 +260,9 @@ TEST_P(CatalogTest, get_db_info_test) { // start txn2 auto *txn2 = txn_mgr->BeginTxn(MakeUnique("get db")); - // create db in empty catalog should be success { - auto [base_entry, status] = catalog->CreateDatabase("db1", txn1->TxnID(), txn1->BeginTS(), txn_mgr); + auto [base_entry, status] = catalog->CreateDatabase(MakeShared("db1"), MakeShared(), txn1->TxnID(), txn1->BeginTS(), txn_mgr); EXPECT_TRUE(status.ok()); } @@ -271,7 +270,7 @@ TEST_P(CatalogTest, get_db_info_test) { auto [db_info1, status1] = catalog->GetDatabaseInfo("db1", txn1->TxnID(), txn1->BeginTS()); // should be visible to same txn EXPECT_TRUE(status1.ok()); - std::cout<<*(db_info1->db_name_)<db_name_) << std::endl; EXPECT_STREQ("db1", db_info1->db_name_->c_str()); // should not be visible to other txn @@ -306,7 +305,7 @@ TEST_P(CatalogTest, get_table_info_test) { // start txn1 auto *txn1 = txn_mgr->BeginTxn(MakeUnique("create table")); - //create table, get table info, drop table + // create table, get table info, drop table { Vector> columns; { @@ -314,12 +313,12 @@ TEST_P(CatalogTest, get_table_info_test) { constraints.insert(ConstraintType::kNotNull); i64 column_id = 0; auto embeddingInfo = MakeShared(EmbeddingDataType::kElemFloat, 128); - auto column_def_ptr = - MakeShared(column_id, MakeShared(LogicalType::kEmbedding, embeddingInfo), "col1", constraints); + auto column_def_ptr = MakeShared(column_id, MakeShared(LogicalType::kEmbedding, embeddingInfo), "col1", constraints); columns.emplace_back(column_def_ptr); } auto tbl1_def = MakeUnique(MakeShared("default_db"), MakeShared("tbl1"), columns); - auto [table_entry, status] = catalog->CreateTable("default_db", txn1->TxnID(), txn1->BeginTS(), std::move(tbl1_def), ConflictType::kError, txn_mgr); + auto [table_entry, status] = + catalog->CreateTable("default_db", txn1->TxnID(), txn1->BeginTS(), std::move(tbl1_def), ConflictType::kError, txn_mgr); EXPECT_TRUE(status.ok()); auto [table_info, status1] = catalog->GetTableInfo("default_db", "tbl1", txn1); @@ -342,7 +341,7 @@ TEST_P(CatalogTest, get_table_index_info_test) { // start txn1 auto *txn1 = txn_mgr->BeginTxn(MakeUnique("create index")); - //create table + // create table { Vector> columns; { @@ -350,12 +349,12 @@ TEST_P(CatalogTest, get_table_index_info_test) { constraints.insert(ConstraintType::kNotNull); i64 column_id = 0; auto embeddingInfo = MakeShared(EmbeddingDataType::kElemFloat, 128); - auto column_def_ptr = - MakeShared(column_id, MakeShared(LogicalType::kEmbedding, embeddingInfo), "col1", constraints); + auto column_def_ptr = MakeShared(column_id, MakeShared(LogicalType::kEmbedding, embeddingInfo), "col1", constraints); columns.emplace_back(column_def_ptr); } auto tbl1_def = MakeUnique(MakeShared("default_db"), MakeShared("tbl1"), columns); - auto [table_entry, status] = catalog->CreateTable("default_db", txn1->TxnID(), txn1->BeginTS(), std::move(tbl1_def), ConflictType::kError, txn_mgr); + auto [table_entry, status] = + catalog->CreateTable("default_db", txn1->TxnID(), txn1->BeginTS(), std::move(tbl1_def), ConflictType::kError, txn_mgr); EXPECT_TRUE(status.ok()); } @@ -383,20 +382,21 @@ TEST_P(CatalogTest, get_table_index_info_test) { EXPECT_EQ(index_status.ok(), true); } - //get index info + // get index info { auto [index_info, status] = catalog->GetTableIndexInfo("default_db", "tbl1", "hnsw_index", txn1->TxnID(), txn1->BeginTS()); EXPECT_TRUE(status.ok()); EXPECT_STREQ("hnsw_index", index_info->index_name_->c_str()); } - //drop index + // drop index { - auto [index_entry, status] = catalog->DropIndex("default_db", "tbl1", "hnsw_index", ConflictType::kError, txn1->TxnID(), txn1->BeginTS(), txn_mgr); + auto [index_entry, status] = + catalog->DropIndex("default_db", "tbl1", "hnsw_index", ConflictType::kError, txn1->TxnID(), txn1->BeginTS(), txn_mgr); EXPECT_TRUE(status.ok()); } - //drop table + // drop table { auto [table_entry, status] = catalog->DropTableByName("default_db", "tbl1", ConflictType::kError, txn1->TxnID(), txn1->BeginTS(), txn_mgr); EXPECT_TRUE(status.ok()); @@ -414,7 +414,7 @@ TEST_P(CatalogTest, remove_index_test) { // start txn1 auto *txn1 = txn_mgr->BeginTxn(MakeUnique("create index")); - //create table + // create table { Vector> columns; { @@ -422,12 +422,12 @@ TEST_P(CatalogTest, remove_index_test) { constraints.insert(ConstraintType::kNotNull); i64 column_id = 0; auto embeddingInfo = MakeShared(EmbeddingDataType::kElemFloat, 128); - auto column_def_ptr = - MakeShared(column_id, MakeShared(LogicalType::kEmbedding, embeddingInfo), "col1", constraints); + auto column_def_ptr = MakeShared(column_id, MakeShared(LogicalType::kEmbedding, embeddingInfo), "col1", constraints); columns.emplace_back(column_def_ptr); } auto tbl1_def = MakeUnique(MakeShared("default_db"), MakeShared("tbl1"), columns); - auto [table_entry, status] = catalog->CreateTable("default_db", txn1->TxnID(), txn1->BeginTS(), std::move(tbl1_def), ConflictType::kError, txn_mgr); + auto [table_entry, status] = + catalog->CreateTable("default_db", txn1->TxnID(), txn1->BeginTS(), std::move(tbl1_def), ConflictType::kError, txn_mgr); EXPECT_TRUE(status.ok()); } @@ -455,7 +455,7 @@ TEST_P(CatalogTest, remove_index_test) { EXPECT_EQ(index_status.ok(), true); } - //remove index + // remove index { auto [index_entry, index_status] = catalog->GetIndexByName("default_db", "tbl1", "hnsw_index", txn1->TxnID(), txn1->BeginTS()); EXPECT_TRUE(index_status.ok()); @@ -463,7 +463,7 @@ TEST_P(CatalogTest, remove_index_test) { EXPECT_TRUE(status.ok()); } - //drop table + // drop table { auto [table_entry, status] = catalog->DropTableByName("default_db", "tbl1", ConflictType::kError, txn1->TxnID(), txn1->BeginTS(), txn_mgr); EXPECT_TRUE(status.ok()); @@ -482,7 +482,7 @@ TEST_P(CatalogTest, roll_back_append_test) { // start txn1 auto *txn1 = txn_mgr->BeginTxn(MakeUnique("create table")); - //create table + // create table { Vector> columns; { @@ -490,12 +490,12 @@ TEST_P(CatalogTest, roll_back_append_test) { constraints.insert(ConstraintType::kNotNull); i64 column_id = 0; auto embeddingInfo = MakeShared(EmbeddingDataType::kElemFloat, 128); - auto column_def_ptr = - MakeShared(column_id, MakeShared(LogicalType::kEmbedding, embeddingInfo), "col1", constraints); + auto column_def_ptr = MakeShared(column_id, MakeShared(LogicalType::kEmbedding, embeddingInfo), "col1", constraints); columns.emplace_back(column_def_ptr); } auto tbl1_def = MakeUnique(MakeShared("default_db"), MakeShared("tbl1"), columns); - auto [table_entry, status] = catalog->CreateTable("default_db", txn1->TxnID(), txn1->BeginTS(), std::move(tbl1_def), ConflictType::kError, txn_mgr); + auto [table_entry, status] = + catalog->CreateTable("default_db", txn1->TxnID(), txn1->BeginTS(), std::move(tbl1_def), ConflictType::kError, txn_mgr); EXPECT_TRUE(status.ok()); } @@ -503,7 +503,6 @@ TEST_P(CatalogTest, roll_back_append_test) { auto [table_entry, status] = catalog->GetTableByName("default_db", "tbl1", txn1->TxnID(), txn1->BeginTS()); EXPECT_TRUE(status.ok()); - auto txn_store = txn1->GetTxnTableStore(table_entry); txn_store->SetAppendState(MakeUnique(txn_store->GetBlocks())); Catalog::Append(table_entry, txn1->TxnID(), (void *)txn_store, txn1->CommitTS(), buffer_mgr); @@ -511,7 +510,6 @@ TEST_P(CatalogTest, roll_back_append_test) { } } - TEST_P(CatalogTest, roll_back_delete_test) { using namespace infinity; @@ -522,7 +520,7 @@ TEST_P(CatalogTest, roll_back_delete_test) { // start txn1 auto *txn1 = txn_mgr->BeginTxn(MakeUnique("create table")); - //create table + // create table { Vector> columns; { @@ -530,12 +528,12 @@ TEST_P(CatalogTest, roll_back_delete_test) { constraints.insert(ConstraintType::kNotNull); i64 column_id = 0; auto embeddingInfo = MakeShared(EmbeddingDataType::kElemFloat, 128); - auto column_def_ptr = - MakeShared(column_id, MakeShared(LogicalType::kEmbedding, embeddingInfo), "col1", constraints); + auto column_def_ptr = MakeShared(column_id, MakeShared(LogicalType::kEmbedding, embeddingInfo), "col1", constraints); columns.emplace_back(column_def_ptr); } auto tbl1_def = MakeUnique(MakeShared("default_db"), MakeShared("tbl1"), columns); - auto [table_entry, status] = catalog->CreateTable("default_db", txn1->TxnID(), txn1->BeginTS(), std::move(tbl1_def), ConflictType::kError, txn_mgr); + auto [table_entry, status] = + catalog->CreateTable("default_db", txn1->TxnID(), txn1->BeginTS(), std::move(tbl1_def), ConflictType::kError, txn_mgr); EXPECT_TRUE(status.ok()); } @@ -545,7 +543,7 @@ TEST_P(CatalogTest, roll_back_delete_test) { auto txn_store = txn1->GetTxnTableStore(table_entry); Catalog::Delete(table_entry, txn1->TxnID(), (void *)txn_store, txn1->CommitTS(), txn_store->GetDeleteStateRef()); - EXPECT_THROW(Catalog::RollbackDelete(table_entry, txn1->TxnID(), txn_store->GetDeleteStateRef(), buffer_mgr),UnrecoverableException); + EXPECT_THROW(Catalog::RollbackDelete(table_entry, txn1->TxnID(), txn_store->GetDeleteStateRef(), buffer_mgr), UnrecoverableException); } } @@ -559,7 +557,7 @@ TEST_P(CatalogTest, roll_back_write_test) { // start txn1 auto *txn1 = txn_mgr->BeginTxn(MakeUnique("create table")); - //create table + // create table { Vector> columns; { @@ -567,12 +565,12 @@ TEST_P(CatalogTest, roll_back_write_test) { constraints.insert(ConstraintType::kNotNull); i64 column_id = 0; auto embeddingInfo = MakeShared(EmbeddingDataType::kElemFloat, 128); - auto column_def_ptr = - MakeShared(column_id, MakeShared(LogicalType::kEmbedding, embeddingInfo), "col1", constraints); + auto column_def_ptr = MakeShared(column_id, MakeShared(LogicalType::kEmbedding, embeddingInfo), "col1", constraints); columns.emplace_back(column_def_ptr); } auto tbl1_def = MakeUnique(MakeShared("default_db"), MakeShared("tbl1"), columns); - auto [table_entry, status] = catalog->CreateTable("default_db", txn1->TxnID(), txn1->BeginTS(), std::move(tbl1_def), ConflictType::kError, txn_mgr); + auto [table_entry, status] = + catalog->CreateTable("default_db", txn1->TxnID(), txn1->BeginTS(), std::move(tbl1_def), ConflictType::kError, txn_mgr); EXPECT_TRUE(status.ok()); } @@ -580,7 +578,6 @@ TEST_P(CatalogTest, roll_back_write_test) { auto [table_entry, status] = catalog->GetTableByName("default_db", "tbl1", txn1->TxnID(), txn1->BeginTS()); EXPECT_TRUE(status.ok()); - auto txn_store = txn1->GetTxnTableStore(table_entry); txn_store->SetAppendState(MakeUnique(txn_store->GetBlocks())); Catalog::Append(table_entry, txn1->TxnID(), (void *)txn_store, txn1->CommitTS(), buffer_mgr); diff --git a/src/unit_test/storage/meta/db_meta.cpp b/src/unit_test/storage/meta/db_meta.cpp index c6478ae3fa..f05bb0301d 100644 --- a/src/unit_test/storage/meta/db_meta.cpp +++ b/src/unit_test/storage/meta/db_meta.cpp @@ -36,9 +36,9 @@ TEST_P(DBMetaTest, to_string_test) { // create db in empty catalog should be success { - auto [base_entry, status] = catalog->CreateDatabase("db1", txn1->TxnID(), txn1->BeginTS(), txn_mgr); + auto [base_entry, status] = catalog->CreateDatabase(MakeShared("db1"), MakeShared(), txn1->TxnID(), txn1->BeginTS(), txn_mgr); EXPECT_TRUE(status.ok()); - std::cout<db_meta_->ToString()->c_str()<db_meta_->ToString()->c_str() << std::endl; ASSERT_STREQ(base_entry->db_meta_->ToString()->c_str(), "DBMeta, db name: db1, entry count: 1"); } @@ -46,7 +46,7 @@ TEST_P(DBMetaTest, to_string_test) { { auto [base_entry, status] = catalog->DropDatabase("db1", txn1->TxnID(), txn1->BeginTS(), txn_mgr); EXPECT_TRUE(status.ok()); - std::cout<db_meta_->ToString()->c_str()<db_meta_->ToString()->c_str() << std::endl; ASSERT_STREQ(base_entry->db_meta_->ToString()->c_str(), "DBMeta, db name: db1, entry count: 0"); } @@ -62,9 +62,9 @@ TEST_P(DBMetaTest, empty_db_entry_test) { // create db in empty catalog should be success { - auto [base_entry, status] = catalog->CreateDatabase("db1", txn1->TxnID(), txn1->BeginTS(), txn_mgr); + auto [base_entry, status] = catalog->CreateDatabase(MakeShared("db1"), MakeShared(), txn1->TxnID(), txn1->BeginTS(), txn_mgr); EXPECT_TRUE(status.ok()); - std::cout<db_meta_->ToString()->c_str()<db_meta_->ToString()->c_str() << std::endl; EXPECT_FALSE(base_entry->db_meta_->Empty()); } @@ -72,7 +72,7 @@ TEST_P(DBMetaTest, empty_db_entry_test) { { auto [base_entry, status] = catalog->DropDatabase("db1", txn1->TxnID(), txn1->BeginTS(), txn_mgr); EXPECT_TRUE(status.ok()); - std::cout<db_meta_->ToString()->c_str()<db_meta_->ToString()->c_str() << std::endl; EXPECT_TRUE(base_entry->db_meta_->Empty()); } @@ -88,9 +88,9 @@ TEST_P(DBMetaTest, get_all_db_entry_test) { // create db in empty catalog should be success { - auto [base_entry, status] = catalog->CreateDatabase("db1", txn1->TxnID(), txn1->BeginTS(), txn_mgr); + auto [base_entry, status] = catalog->CreateDatabase(MakeShared("db1"), MakeShared(), txn1->TxnID(), txn1->BeginTS(), txn_mgr); EXPECT_TRUE(status.ok()); - std::cout<db_meta_->ToString()->c_str()<db_meta_->ToString()->c_str() << std::endl; EXPECT_EQ(base_entry->db_meta_->GetAllEntries().size(), 1); } @@ -98,7 +98,7 @@ TEST_P(DBMetaTest, get_all_db_entry_test) { { auto [base_entry, status] = catalog->DropDatabase("db1", txn1->TxnID(), txn1->BeginTS(), txn_mgr); EXPECT_TRUE(status.ok()); - std::cout<db_meta_->ToString()->c_str()<db_meta_->ToString()->c_str() << std::endl; EXPECT_EQ(base_entry->db_meta_->GetAllEntries().size(), 0); } diff --git a/src/unit_test/storage/meta/entry/table_collection_entry.cpp b/src/unit_test/storage/meta/entry/table_collection_entry.cpp index 6702b3d0a9..4742fa1805 100644 --- a/src/unit_test/storage/meta/entry/table_collection_entry.cpp +++ b/src/unit_test/storage/meta/entry/table_collection_entry.cpp @@ -106,7 +106,7 @@ TEST_P(TableEntryTest, test2) { Txn *new_txn = txn_mgr->BeginTxn(MakeUnique("create db1")); // Txn1: Create db1, OK - Status status = new_txn->CreateDatabase("db1", ConflictType::kError); + Status status = new_txn->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(status.ok()); // Txn1: Create tbl1, OK diff --git a/src/unit_test/storage/txn/database_txn.cpp b/src/unit_test/storage/txn/database_txn.cpp index 1656327835..58ad6ec244 100644 --- a/src/unit_test/storage/txn/database_txn.cpp +++ b/src/unit_test/storage/txn/database_txn.cpp @@ -48,7 +48,7 @@ TEST_P(DBTxnTest, test1) { Txn *new_txn = txn_mgr->BeginTxn(MakeUnique("create db1")); // Txn1: Create db1, OK - Status status = new_txn->CreateDatabase("db1", ConflictType::kError); + Status status = new_txn->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); // Txn1: Get db1, OK auto [db_entry1, status1] = new_txn->GetDatabase("db1"); @@ -96,7 +96,7 @@ TEST_P(DBTxnTest, test20) { Txn *new_txn = txn_mgr->BeginTxn(MakeUnique("create db1")); // Txn1: Create db1, OK - Status status = new_txn->CreateDatabase("db1", ConflictType::kError); + Status status = new_txn->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(status.ok()); // Txn1: Commit, OK @@ -115,7 +115,7 @@ TEST_P(DBTxnTest, test20) { EXPECT_TRUE(status.ok()); // Txn2: Create db1, OK - status = new_txn->CreateDatabase("db1", ConflictType::kError); + status = new_txn->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(status.ok()); // Txn2: Get db1, OK @@ -135,7 +135,7 @@ TEST_P(DBTxnTest, test20) { EXPECT_NE(db_entry3, nullptr); // Txn3: Create db1, NOT OK - status = new_txn->CreateDatabase("db1", ConflictType::kError); + status = new_txn->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(!status.ok()); // Txn3: Commit, OK @@ -151,11 +151,11 @@ TEST_P(DBTxnTest, test2) { // Txn1: Create db1, OK - Status status = new_txn->CreateDatabase("db1", ConflictType::kError); + Status status = new_txn->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(status.ok()); // Txn1: Create db1, duplicated,NOT OK - status = new_txn->CreateDatabase("db1", ConflictType::kError); + status = new_txn->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(!status.ok()); // Txn1: Drop db1, OK @@ -178,7 +178,7 @@ TEST_P(DBTxnTest, test2) { EXPECT_FALSE(status2.ok()); // Txn2: Create db1, OK - status = new_txn->CreateDatabase("db1", ConflictType::kError); + status = new_txn->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(status.ok()); // Txn2: Get db1, OK @@ -197,7 +197,7 @@ TEST_P(DBTxnTest, test2) { EXPECT_NE(db_entry4, nullptr); // Txn3: Create db1, NOT OK - status = new_txn->CreateDatabase("db1", ConflictType::kError); + status = new_txn->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(!status.ok()); // Txn3: Commit, OK @@ -219,11 +219,11 @@ TEST_P(DBTxnTest, test3) { Txn *new_txn2 = txn_mgr->BeginTxn(MakeUnique("create db1")); // Txn1: Create db1, OK - Status status = new_txn1->CreateDatabase("db1", ConflictType::kError); + Status status = new_txn1->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(status.ok()); // Txn2: Create db1, NOT OK, WW-conflict - status = new_txn2->CreateDatabase("db1", ConflictType::kError); + status = new_txn2->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(!status.ok()); // Txn1: Commit, OK @@ -247,14 +247,14 @@ TEST_P(DBTxnTest, test4) { Txn *new_txn2 = txn_mgr->BeginTxn(MakeUnique("create db1")); // Txn1: Create db1, OK - Status status = new_txn1->CreateDatabase("db1", ConflictType::kError); + Status status = new_txn1->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(status.ok()); // Txn1: Commit, OK txn_mgr->CommitTxn(new_txn1); // Txn2: Create db1, NOT OK - status = new_txn2->CreateDatabase("db1", ConflictType::kError); + status = new_txn2->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(!status.ok()); // Txn2: Commit, OK @@ -269,7 +269,7 @@ TEST_P(DBTxnTest, test5) { Txn *new_txn = txn_mgr->BeginTxn(MakeUnique("create db1")); // Txn1: Create db1, OK - Status status = new_txn->CreateDatabase("db1", ConflictType::kError); + Status status = new_txn->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(status.ok()); // Txn1: Rollback, OK @@ -303,18 +303,18 @@ TEST_P(DBTxnTest, test6) { // Txn1: Create db1, OK - Status status = new_txn1->CreateDatabase("db1", ConflictType::kError); + Status status = new_txn1->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(status.ok()); // Txn2: Create db1, NOT OK, WW-conflict - status = new_txn2->CreateDatabase("db1", ConflictType::kError); + status = new_txn2->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(!status.ok()); // Txn1: Commit, OK txn_mgr->RollBackTxn(new_txn1); // Txn2: Since txn1 is rollback, txn2 db1, OK, no conflict - status = new_txn2->CreateDatabase("db1", ConflictType::kError); + status = new_txn2->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(status.ok()); // Txn2: Commit, OK @@ -348,11 +348,11 @@ TEST_P(DBTxnTest, test7) { // Txn1: Create db1, OK - Status status = new_txn1->CreateDatabase("db1", ConflictType::kError); + Status status = new_txn1->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(status.ok()); // Txn2: Create db1, NOT OK, WW-conflict - status = new_txn2->CreateDatabase("db1", ConflictType::kError); + status = new_txn2->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(!status.ok()); // Txn1: Drop db1, OK @@ -360,7 +360,7 @@ TEST_P(DBTxnTest, test7) { EXPECT_TRUE(status.ok()); // Txn2: Create db1, OK - status = new_txn2->CreateDatabase("db1", ConflictType::kError); + status = new_txn2->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(status.ok()); // Txn1: Commit, OK diff --git a/src/unit_test/storage/txn/table_txn.cpp b/src/unit_test/storage/txn/table_txn.cpp index daddcf8166..bbdedf99f5 100644 --- a/src/unit_test/storage/txn/table_txn.cpp +++ b/src/unit_test/storage/txn/table_txn.cpp @@ -87,7 +87,7 @@ TEST_P(TableTxnTest, test1) { Txn *new_txn = txn_mgr->BeginTxn(MakeUnique("create db")); // Txn1: Create db1, OK - Status status = new_txn->CreateDatabase("db1", ConflictType::kError); + Status status = new_txn->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(status.ok()); // Txn1: Create tbl1, OK @@ -122,7 +122,7 @@ TEST_P(TableTxnTest, test2) { Txn *new_txn = txn_mgr->BeginTxn(MakeUnique("create db")); // Txn1: Create db1, OK - Status status = new_txn->CreateDatabase("db1", ConflictType::kError); + Status status = new_txn->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(status.ok()); // Txn1: Create tbl1, OK @@ -174,7 +174,7 @@ TEST_P(TableTxnTest, test3) { Txn *new_txn = txn_mgr->BeginTxn(MakeUnique("create db")); // Txn1: Create db1, OK - Status status = new_txn->CreateDatabase("db1", ConflictType::kError); + Status status = new_txn->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(status.ok()); // Txn1: Create tbl1, OK @@ -224,7 +224,7 @@ TEST_P(TableTxnTest, test4) { Txn *new_txn2 = txn_mgr->BeginTxn(MakeUnique("create db")); // Txn1: Create db1, OK - Status status = new_txn1->CreateDatabase("db1", ConflictType::kError); + Status status = new_txn1->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(status.ok()); // Txn1: Create tbl1, OK @@ -257,7 +257,7 @@ TEST_P(TableTxnTest, test5) { Txn *new_txn1 = txn_mgr->BeginTxn(MakeUnique("create db")); // Txn1: Create db1, OK - Status status = new_txn1->CreateDatabase("db1", ConflictType::kError); + Status status = new_txn1->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(status.ok()); // Txn1: Commit, OK @@ -295,7 +295,7 @@ TEST_P(TableTxnTest, test6) { Txn *new_txn1 = txn_mgr->BeginTxn(MakeUnique("create db")); // Txn1: Create db1, OK - Status status = new_txn1->CreateDatabase("db1", ConflictType::kError); + Status status = new_txn1->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(status.ok()); // Txn1: Commit, OK @@ -329,7 +329,7 @@ TEST_P(TableTxnTest, test7) { Txn *new_txn1 = txn_mgr->BeginTxn(MakeUnique("create db")); // Txn1: Create db1, OK - Status status = new_txn1->CreateDatabase("db1", ConflictType::kError); + Status status = new_txn1->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(status.ok()); // Txn2: Create tbl1, OK @@ -363,7 +363,7 @@ TEST_P(TableTxnTest, test8) { Txn *new_txn1 = txn_mgr->BeginTxn(MakeUnique("create db")); // Txn1: Create db1, OK - Status status = new_txn1->CreateDatabase("db1", ConflictType::kError); + Status status = new_txn1->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(status.ok()); // Txn1: Commit, OK @@ -409,7 +409,7 @@ TEST_P(TableTxnTest, test9) { Txn *new_txn1 = txn_mgr->BeginTxn(MakeUnique("create db")); // Txn1: Create db1, OK - Status status = new_txn1->CreateDatabase("db1", ConflictType::kError); + Status status = new_txn1->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(status.ok()); // Txn1: Commit, OK @@ -453,7 +453,7 @@ TEST_P(TableTxnTest, test10) { Txn *new_txn1 = txn_mgr->BeginTxn(MakeUnique("create db")); // Txn1: Create db1, OK - Status status = new_txn1->CreateDatabase("db1", ConflictType::kError); + Status status = new_txn1->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_TRUE(status.ok()); // Txn1: Commit, OK diff --git a/src/unit_test/storage/wal/catalog_delta_entry.cpp b/src/unit_test/storage/wal/catalog_delta_entry.cpp index d8a9605c20..8c83f9562c 100644 --- a/src/unit_test/storage/wal/catalog_delta_entry.cpp +++ b/src/unit_test/storage/wal/catalog_delta_entry.cpp @@ -83,6 +83,7 @@ TEST_P(CatalogDeltaEntryTest, test_DeltaOpEntry) { auto op = MakeUnique(); op->encode_ = MakeUnique(fmt::format("#{}", db_name)); op->db_entry_dir_ = db_dir; + op->comment_ = MakeShared(); catalog_delta_entry1->operations().push_back(std::move(op)); } { @@ -200,6 +201,7 @@ TEST_P(CatalogDeltaEntryTest, MergeEntries) { op2->merge_flag_ = MergeFlag::kDelete; op1_same_name->db_entry_dir_ = op2->db_entry_dir_ = op1->db_entry_dir_ = db_dir; + op1_same_name->comment_ = op2->comment_ = op1->comment_ = MakeShared(); auto op1_copy = MakeUnique(*op1); op1_copy->merge_flag_ = MergeFlag::kUpdate; @@ -388,6 +390,7 @@ TEST_P(CatalogDeltaEntryTest, ComplicateMergeEntries) { op1->encode_ = MakeUnique(fmt::format("#{}", *db_name)); op1->db_entry_dir_ = db_dir; + op1->comment_ = MakeShared(); op1->merge_flag_ = merge_flag; op1->commit_ts_ = commit_ts; delta_entry->operations().push_back(std::move(op1)); diff --git a/src/unit_test/storage/wal/catalog_delta_replay.cpp b/src/unit_test/storage/wal/catalog_delta_replay.cpp index 0fe740d192..21f8c4a807 100644 --- a/src/unit_test/storage/wal/catalog_delta_replay.cpp +++ b/src/unit_test/storage/wal/catalog_delta_replay.cpp @@ -128,8 +128,8 @@ TEST_P(CatalogDeltaReplayTest, replay_db_entry) { { auto *txn = txn_mgr->BeginTxn(MakeUnique("create db")); - txn->CreateDatabase(*db_name1, ConflictType::kError); - txn->CreateDatabase(*db_name2, ConflictType::kError); + txn->CreateDatabase(db_name1, ConflictType::kError, MakeShared()); + txn->CreateDatabase(db_name2, ConflictType::kError, MakeShared()); txn->DropDatabase(*db_name2, ConflictType::kError); auto [db_entry, status] = txn->GetDatabase(*db_name1); @@ -140,7 +140,7 @@ TEST_P(CatalogDeltaReplayTest, replay_db_entry) { } { auto *txn = txn_mgr->BeginTxn(MakeUnique("create db")); - txn->CreateDatabase(*db_name3, ConflictType::kError); + txn->CreateDatabase(db_name3, ConflictType::kError, MakeShared()); txn_mgr->RollBackTxn(txn); } WaitFlushDeltaOp(storage); @@ -911,7 +911,7 @@ TEST_P(CatalogDeltaReplayTest, replay_table_single_index_named_db) { // create database auto *txn = txn_mgr->BeginTxn(MakeUnique("create db")); - txn->CreateDatabase(*db_name, ConflictType::kError); + txn->CreateDatabase(db_name, ConflictType::kError, MakeShared()); auto [db_entry, status] = txn->GetDatabase(*db_name); EXPECT_TRUE(status.ok()); diff --git a/src/unit_test/storage/wal/recycle_log.cpp b/src/unit_test/storage/wal/recycle_log.cpp index 436564861a..cd8046fb9d 100644 --- a/src/unit_test/storage/wal/recycle_log.cpp +++ b/src/unit_test/storage/wal/recycle_log.cpp @@ -81,7 +81,7 @@ TEST_P(RecycleLogTest, recycle_wal_after_delta_checkpoint) { } { // put create after drop to prevent the merge delta result is empty auto *txn = txn_mgr->BeginTxn(MakeUnique("create db")); - auto status = txn->CreateDatabase("db1", ConflictType::kIgnore); + auto status = txn->CreateDatabase(MakeShared("db1"), ConflictType::kIgnore, MakeShared()); ASSERT_TRUE(status.ok()); txn_mgr->CommitTxn(txn); } @@ -176,7 +176,7 @@ TEST_P(RecycleLogTest, recycle_wal_after_full_checkpoint) { } { // put create after drop to prevent the merge delta result is empty auto *txn = txn_mgr->BeginTxn(MakeUnique("create db")); - auto status = txn->CreateDatabase("db1", ConflictType::kIgnore); + auto status = txn->CreateDatabase(MakeShared("db1"), ConflictType::kIgnore, MakeShared()); ASSERT_TRUE(status.ok()); txn_mgr->CommitTxn(txn); } diff --git a/src/unit_test/storage/wal/wal_entry.cpp b/src/unit_test/storage/wal/wal_entry.cpp index 0c4dc4a989..6611f977bb 100644 --- a/src/unit_test/storage/wal/wal_entry.cpp +++ b/src/unit_test/storage/wal/wal_entry.cpp @@ -98,7 +98,7 @@ void MockWalFile(const String &wal_file_path, const String &ckp_file_path, const SizeT row_count = DEFAULT_VECTOR_SIZE; auto entry = MakeShared(); - entry->cmds_.push_back(MakeShared("default2", "AAA_default2")); + entry->cmds_.push_back(MakeShared("default2", "default2_comment", "AAA_default2")); entry->cmds_.push_back(MakeShared("default_db", "BBB_default", MockTableDesc2())); WalSegmentInfo segment_info = MakeSegmentInfo(row_count, commit_ts, 2); entry->cmds_.push_back(MakeShared("default_db", "tbl1", std::move(segment_info))); @@ -200,7 +200,7 @@ TEST_F(WalEntryTest, ReadWrite) { RemoveDbDirs(); infinity::InfinityContext::instance().Init(nullptr); SharedPtr entry = MakeShared(); - entry->cmds_.push_back(MakeShared("db1", "AAA_db1")); + entry->cmds_.push_back(MakeShared("db1", "default2_comment", "AAA_db1")); entry->cmds_.push_back(MakeShared("db1")); entry->cmds_.push_back(MakeShared("db1", "BBB_tb1", MockTableDesc2())); entry->cmds_.push_back(MakeShared("db1", "tbl1")); diff --git a/src/unit_test/storage/wal/wal_replay.cpp b/src/unit_test/storage/wal/wal_replay.cpp index 8ac04a92d3..a84abb289c 100644 --- a/src/unit_test/storage/wal/wal_replay.cpp +++ b/src/unit_test/storage/wal/wal_replay.cpp @@ -102,22 +102,22 @@ TEST_P(WalReplayTest, wal_replay_database) { { auto *txn = txn_mgr->BeginTxn(MakeUnique("create db")); - txn->CreateDatabase("db1", ConflictType::kIgnore); + txn->CreateDatabase(MakeShared("db1"), ConflictType::kIgnore, MakeShared()); txn_mgr->CommitTxn(txn); } { auto *txn = txn_mgr->BeginTxn(MakeUnique("create db")); - txn->CreateDatabase("db2", ConflictType::kIgnore); + txn->CreateDatabase(MakeShared("db2"), ConflictType::kIgnore, MakeShared()); txn_mgr->CommitTxn(txn); } { auto *txn = txn_mgr->BeginTxn(MakeUnique("create db")); - txn->CreateDatabase("db3", ConflictType::kIgnore); + txn->CreateDatabase(MakeShared("db3"), ConflictType::kIgnore, MakeShared()); txn_mgr->CommitTxn(txn); } { auto *txn = txn_mgr->BeginTxn(MakeUnique("create db")); - txn->CreateDatabase("db4", ConflictType::kIgnore); + txn->CreateDatabase(MakeShared("db4"), ConflictType::kIgnore, MakeShared()); txn_mgr->CommitTxn(txn); } { @@ -129,7 +129,7 @@ TEST_P(WalReplayTest, wal_replay_database) { } { auto *txn = txn_mgr->BeginTxn(MakeUnique("create db")); - txn->CreateDatabase("db5", ConflictType::kIgnore); + txn->CreateDatabase(MakeShared("db5"), ConflictType::kIgnore, MakeShared()); txn_mgr->CommitTxn(txn); } { @@ -164,7 +164,7 @@ TEST_P(WalReplayTest, wal_replay_database) { } { auto *txn = txn_mgr->BeginTxn(MakeUnique("create db")); - Status status = txn->CreateDatabase("db1", ConflictType::kError); + Status status = txn->CreateDatabase(MakeShared("db1"), ConflictType::kError, MakeShared()); EXPECT_EQ(status.ok(), true); txn_mgr->CommitTxn(txn); } diff --git a/thrift/infinity.thrift b/thrift/infinity.thrift index bab1f4dc01..b65d27100c 100644 --- a/thrift/infinity.thrift +++ b/thrift/infinity.thrift @@ -363,6 +363,8 @@ struct ListDatabaseResponse { 1: i64 error_code, 2: string error_msg, 3: list db_names = [], +4: list db_dirs = [], +5: list db_comments = [], } struct ListTableRequest { @@ -399,6 +401,7 @@ struct ShowDatabaseResponse { 3: string database_name, 4: string store_dir, 5: i64 table_count, +6: string comment } struct ShowTableRequest { @@ -498,9 +501,10 @@ struct GetDatabaseRequest { } struct CreateDatabaseRequest { -1: string db_name, -2: i64 session_id, -3: CreateOption create_option, +1: string db_name, +2: i64 session_id, +3: CreateOption create_option, +4: string db_comment, } struct DropDatabaseRequest {