Yes I only have one version on there. If you rebuild a different version and say make install ... surely it should overwrite the previously installed headers and lib right?
Ok I am going to make a fresh installation on Ubuntu and test if protoc is on it. If not I will carry on with my script which I will paste here as well. I am going to install version 3.13.0 Then give the results. Thanks On Tuesday, August 25, 2020 at 5:29:55 PM UTC+2 [email protected] wrote: > I still suspect that multiple protobuf versions are being mixed somehow. > Are you sure that your virtualbox installation didn't install protobuf? > > On Tue, Aug 25, 2020 at 1:03 AM Test Last <[email protected]> wrote: > >> Hi >> >> To try and minimise this sort of thing I installed a brand new virtual >> box and compiled it on there. >> Installing only what I need. The errors changed slightly so I think you >> are right about that. >> >> However in an attempt to solve the issue I got 3.13.0 and this error was >> actually generated from that. >> Any ideas I can try or more debug info I can give you? >> >> Thanks >> >> On Tuesday, August 25, 2020 at 12:25:35 AM UTC+2 [email protected] >> wrote: >> >>> I suspect that your build is mixing your downloaded 3.12.3 protobuf >>> source with a different protobuf version installed by your distro's package >>> manager. I would recommend making sure that your project is only compiling >>> against one version of protobuf. Also, I don't think this is related but >>> you might want to use 3.13.0 or 3.12.4 instead of 3.12.3. We made a mistake >>> with 3.12.3 and published tar.gz files on the GitHub release page that were >>> generated from the wrong Git commit. >>> >>> On Mon, Aug 24, 2020 at 1:56 PM Test Last <[email protected]> wrote: >>> >>>> Hi everyone >>>> >>>> I ported a ODBC Driver that works in an RPC fashion from windows to >>>> linux. >>>> The port was actually quite trivial since the code was already Cross OS >>>> Friendly. >>>> The protobuf has never been an issue on Windows side. The protobuf >>>> package was V3.12.3 and was also installed by visual studio. >>>> >>>> However when I download Protobuf C++ and compile them on both Ubuntu >>>> and CentOS. And compile my program I get strange errors ALWAYS resulting >>>> from "repeated_field.h. >>>> Sometimes the error is on line 1750 and other times its on 1744 but no >>>> matter what version I compile or what OS I use it just never seems to want >>>> to process anything that needs to use "repeated_field.h" . I will paste my >>>> backtrace and also my ldd of the driver. With the makefile I use to >>>> compile >>>> the protobufs. >>>> >>>> This is a backtrace of a string of data that needs to be parsed. This >>>> always breaks. >>>> The class its trying to parse into is -> ExecuteResponse : Please check >>>> the proto files. >>>> This is the backtrace. >>>> >>>> Program received signal SIGSEGV, Segmentation fault. >>>> 0x00007ffff6369cc4 in >>>> google::protobuf::internal::RepeatedPtrFieldBase::Add<google::protobuf::RepeatedPtrField<ColumnValue>::TypeHandler> >>>> >>>> (this=0x68e8d0, prototype=0x0) >>>> at /usr/local/include/google/protobuf/repeated_field.h:1744 >>>> 1744 if (rep_ != NULL && current_size_ < rep_->allocated_size) { >>>> (gdb) backtrace >>>> #0 0x00007ffff6369cc4 in >>>> google::protobuf::internal::RepeatedPtrFieldBase::Add<google::protobuf::RepeatedPtrField<ColumnValue>::TypeHandler> >>>> >>>> (this=0x68e8d0, prototype=0x0) >>>> at /usr/local/include/google/protobuf/repeated_field.h:1744 >>>> #1 0x00007ffff6366e39 in >>>> google::protobuf::RepeatedPtrField<ColumnValue>::Add (this=0x68e8d0) at >>>> /usr/local/include/google/protobuf/repeated_field.h:2195 >>>> #2 0x00007ffff63646fa in Row::_internal_add_value (this=0x68e8c0) at >>>> common.pb.h:5781 >>>> #3 0x00007ffff635697f in Row::_InternalParse (this=0x68e8c0, >>>> ptr=0x67c5f0 "*\n\023\b\025\032\017Alex", '*' <repeats 11 times>, >>>> "\"\023\b\025\032\017Alex", '*' <repeats 11 times>, >>>> "\n,\n\024\b\025\032\020a***oum.br\"\024\b\025\032 >>>> \020a***com.br >>>> \n\030\n\n\b\025\032\006Brazil\"\n\b\025\032\006Brazil\n\026\n\t\b\032\032\005\063\067.62\"\t\b\032\032\005\063\067.62\032\234\001\n*\n\023\b\025\032\017Edua" >>>> , '*' <repeats 11 times>, "\"\023\b\025\032\017Edua", '*' <repeats 11 >>>> times>, "\n<\n\034\b\025\032\030e*****"..., ctx=0x7fffffffce30) at >>>> common.pb.cc:3927 >>>> #4 0x00007ffff6367db6 in >>>> google::protobuf::internal::ParseContext::ParseMessage<Row> >>>> (this=0x7fffffffce30, msg=0x68e8c0, >>>> ptr=0x67c5ef "\n*\n\023\b\025\032\017Alex", '*' <repeats 11 times>, >>>> "\"\023\b\025\032\017Alex", '*' <repeats 11 times>, >>>> "\n,\n\024\b\025\032\020a*com.br\"\024\b\025\0 >>>> 32\020a***oom.br >>>> \n\030\n\n\b\025\032\006Brazil\"\n\b\025\032\006Brazil\n\026\n\t\b\032\032\005\063\067.62\"\t\b\032\032\005\063\067.62\032\234\001\n*\n\023\b\025\032\017Edu >>>> a", '*' <repeats 11 times>, "\"\023\b\025\032\017Edua", '*' <repeats 11 >>>> times>, "\n<\n\034\b\025\032\030e****"...) at >>>> /usr/local/include/google/protobuf/parse_context.h:614 >>>> #5 0x00007ffff635596f in Frame::_InternalParse (this=0x68d830, >>>> ptr=0x67c5ed "\214\001\n*\n\023\b\025\032\017Alex", '*' <repeats 11 >>>> times>, "\"\023\b\025\032\017Alex", '*' <repeats 11 times>, >>>> "\n,\n\024\b\025\032\020a*l.com.br\"\024 >>>> \b\025\032\020aom.br >>>> \n\030\n\n\b\025\032\006Brazil\"\n\b\025\032\006Brazil\n\026\n\t\b\032\032\005\063\067.62\"\t\b\032\032\005\063\067.62\032\234\001\n*\n\023\b\025\03 >>>> 2\017Edua", '*' <repeats 11 times>, "\"\023\b\025\032\017Edua", '*' >>>> <repeats 11 times>, "\n<\n\034\b\025\032\030e**"..., ctx=0x7fffffffce30) >>>> at >>>> common.pb.cc:3688 >>>> #6 0x00007ffff63ac758 in >>>> google::protobuf::internal::ParseContext::ParseMessage<Frame> >>>> (this=0x7fffffffce30, msg=0x68d830, >>>> ptr=0x67c5ea "\020\001\032\214\001\n*\n\023\b\025\032\017Alex", '*' >>>> <repeats 11 times>, "\"\023\b\025\032\017Alex", '*' <repeats 11 times>, >>>> "\n,\n\024\b\025\032\020a*l. >>>> com.br\"\024\b\025\032\020a****l.com.br >>>> \n\030\n\n\b\025\032\006Brazil\"\n\b\025\032\006Brazil\n\026\n\t\b\032\032\005\063\067.62\"\t\b\032\032\005\063\067.62\032\234\001\n*\n\ >>>> 023\b\025\032\017Edua", '*' <repeats 11 times>, >>>> "\"\023\b\025\032\017Edua", '*' <repeats 11 times>, >>>> "\n<\n\034\b\025\032\030"...) >>>> at /usr/local/include/google/protobuf/parse_context.h:614 >>>> #7 0x00007ffff6395e79 in ResultSetResponse::_InternalParse >>>> (this=0x674310, >>>> ptr=0x67c5e8 >>>> "\215\006\020\001\032\214\001\n*\n\023\b\025\032\017Alex", '*' <repeats 11 >>>> times>, "\"\023\b\025\032\017Alex", '*' <repeats 11 times>, >>>> "\n,\n\024\b\025\032\020a* >>>> **com.br\"\024\b\025\032\020a*om.br >>>> \n\030\n\n\b\025\032\006Brazil\"\n\b\025\032\006Brazil\n\026\n\t\b\032\032\005\063\067.62\"\t\b\032\032\005\063\067.62\032\234\0 >>>> 01\n*\n\023\b\025\032\017Edua", '*' <repeats 11 times>, >>>> "\"\023\b\025\032\017Edua", '*' <repeats 11 times>, "\n<\n\034\b\025"..., >>>> ctx=0x7fffffffce30) at response.pb.cc:788 >>>> #8 0x00007ffff63aca34 in >>>> google::protobuf::internal::ParseContext::ParseMessage<ResultSetResponse> >>>> (this=0x7fffffffce30, msg=0x674310, >>>> ptr=0x67c4a3 "\n\b0pOR9266\020B\030\001\"\263\002\nJ >>>> \001\060\001@\377\001J\bfullnameR\bfullname`\377\001z\005Spark\200\001\001\232\001\020java.lang.String\242\001\f\b\f\022\ >>>> 006STRING\030\025\nF\b\001 >>>> \001\060\001@\377\001J\005emailR\005email`\377\001z\005Spark\200\001\001\232\001\020java.lang.String\242\001\f\b\f\022\006STRING\030\025\nJ\b\002 >>>> >>>> \001\ >>>> 060\001@\377\001J\acountryR\acountry`\377\001z\005S"...) at >>>> /usr/local/include/google/protobuf/parse_context.h:614 >>>> #9 0x00007ffff6397670 in ExecuteResponse::_InternalParse >>>> (this=0x7fffffffd300, >>>> ptr=0x67c4a1 "\205\t\n\b0pOR9266\020B\030\001\"\263\002\nJ >>>> \001\060\001@\377\001J\bfullnameR\bfullname`\377\001z\005Spark\200\001\001\232\001\020java.lang.String\242\001\f\b\ >>>> f\022\006STRING\030\025\nF\b\001 >>>> \001\060\001\377\001J\005emailR\005email`\377\001z\005Spark\200\001\001\232\001\020java.lang.String\242\001\f\b\f\022\006STRING\030\025\nJ\b\002 >>>> \001\060\001\377\001J\acountryR\acountry`\377\001z"..., >>>> ctx=0x7fffffffce30) at response.pb.cc:1135 >>>> #10 0x00007ffff55350a0 in >>>> google::protobuf::internal::MergeFromImpl<false> (input=..., >>>> msg=0x7fffffffd300, parse_flags=google::protobuf::MessageLite::kParse) >>>> at ./google/protobuf/parse_context.h:224 >>>> #11 0x00007ffff62ad4b7 in >>>> proto::helper::parseNonStream<ExecuteResponse> (inc=0x7fffffffd0f0, >>>> outClass=0x7fffffffd300) at transProto.h:32 >>>> #12 0x00007ffff62a88b6 in ConnectEngine::PrepareAndExecuteReq >>>> (this=0x671170, query="select * from VidDemo ", >>>> PERResponse=0x7fffffffd300, >>>> maxRows=9223372036854775807, >>>> frameMaxSize=2147483647 <(214)%20748-3647>, _statementId=66) at >>>> ConnectEngine.cpp:639 >>>> #13 0x00007ffff62b462c in Consolidation::executeQuery (this=0x6710b0, >>>> query="select * from VidDemo ") at Consolidation.cpp:173 >>>> #14 0x00007ffff62f3f9e in Statement::requestNextPackOfResultSets >>>> (this=0x68bfe0, mutator=...) at statement.cpp:215 >>>> >>>> //THIS IS MY MAKEFILE >>>> >>>> LDFLAGS = -L/usr/local/lib `pkg-config --libs protobuf grpc++`\ >>>> -Wl,--no-as-needed -lgrpc++_reflection -Wl,--as-needed\ >>>> -ldl >>>> >>>> CXX = g++ >>>> CPPFLAGS += `pkg-config --cflags protobuf grpc` >>>> CXXFLAGS += -std=c++14 >>>> >>>> DEBUG = -g >>>> >>>> GRPC_CPP_PLUGIN = grpc_cpp_plugin >>>> GRPC_CPP_PLUGIN_PATH ?= `which $(GRPC_CPP_PLUGIN)` >>>> >>>> all: common request response common.o request.o response.o >>>> >>>> common: >>>> protoc -I=. --cpp_out=. ./common.proto >>>> >>>> request: >>>> protoc -I=. --cpp_out=. ./request.proto >>>> >>>> response: >>>> protoc -I=. --cpp_out=. ./response.proto >>>> >>>> common.o: common.pb.cc >>>> $(CXX) $(DEBUG) -fPIC -c $^ $(LDFLAGS) -o $@ $(CXXFLAGS) >>>> >>>> request.o: request.pb.cc >>>> $(CXX) $(DEBUG) -fPIC -c $^ $(LDFLAGS) -o $@ $(CXXFLAGS) >>>> >>>> response.o: response.pb.cc >>>> $(CXX) $(DEBUG) -fPIC -c $^ $(LDFLAGS) -o $@ $(CXXFLAGS) >>>> >>>> clean: >>>> rm -f *.o *.pb.cc *.pb.h client >>>> >>>> //This is my 3 Proto files. Its part of the Calcite Avatica package. >>>> //COMMON.PROTO >>>> syntax = "proto3"; >>>> //option cc_generic_services = true; >>>> option cc_generic_services = false; >>>> >>>> //option csharp_namespace = "Calcite.Avatica"; >>>> >>>> // Details about a connection >>>> message ConnectionProperties { >>>> bool is_dirty = 1; >>>> bool auto_commit = 2; >>>> bool has_auto_commit = 7; // field is a Boolean, need to discern null >>>> and default value >>>> bool read_only = 3; >>>> bool has_read_only = 8; // field is a Boolean, need to discern null and >>>> default value >>>> uint32 transaction_isolation = 4; >>>> string catalog = 5; >>>> string schema = 6; >>>> } >>>> >>>> // Statement handle >>>> message StatementHandle { >>>> string connection_id = 1; >>>> uint32 id = 2; >>>> Signature signature = 3; >>>> } >>>> >>>> // Results of preparing a statement >>>> message Signature { >>>> repeated ColumnMetaData columns = 1; >>>> string sql = 2; >>>> repeated AvaticaParameter parameters = 3; >>>> CursorFactory cursor_factory = 4; >>>> StatementType statementType = 5; >>>> } >>>> >>>> // Has to be consistent with Meta.StatementType >>>> enum StatementType { >>>> SELECT = 0; >>>> INSERT = 1; >>>> UPDATE = 2; >>>> DELETE = 3; >>>> UPSERT = 4; >>>> MERGE = 5; >>>> OTHER_DML = 6; >>>> CREATE = 7; >>>> DROP = 8; >>>> ALTER = 9; >>>> OTHER_DDL = 10; >>>> CALL = 11; >>>> } >>>> >>>> message ColumnMetaData { >>>> uint32 ordinal = 1; >>>> bool auto_increment = 2; >>>> bool case_sensitive = 3; >>>> bool searchable = 4; >>>> bool currency = 5; >>>> uint32 nullable = 6; >>>> bool signed = 7; >>>> uint32 display_size = 8; >>>> string label = 9; >>>> string column_name = 10; >>>> string schema_name = 11; >>>> uint32 precision = 12; >>>> uint32 scale = 13; >>>> string table_name = 14; >>>> string catalog_name = 15; >>>> bool read_only = 16; >>>> bool writable = 17; >>>> bool definitely_writable = 18; >>>> string column_class_name = 19; >>>> AvaticaType type = 20; >>>> } >>>> >>>> enum Rep { >>>> PRIMITIVE_BOOLEAN = 0; >>>> PRIMITIVE_BYTE = 1; >>>> PRIMITIVE_CHAR = 2; >>>> PRIMITIVE_SHORT = 3; >>>> PRIMITIVE_INT = 4; >>>> PRIMITIVE_LONG = 5; >>>> PRIMITIVE_FLOAT = 6; >>>> PRIMITIVE_DOUBLE = 7; >>>> BOOLEAN = 8; >>>> BYTE = 9; >>>> CHARACTER = 10; >>>> SHORT = 11; >>>> INTEGER = 12; >>>> LONG = 13; >>>> FLOAT = 14; >>>> DOUBLE = 15; >>>> BIG_INTEGER = 25; >>>> BIG_DECIMAL = 26; >>>> JAVA_SQL_TIME = 16; >>>> JAVA_SQL_TIMESTAMP = 17; >>>> JAVA_SQL_DATE = 18; >>>> JAVA_UTIL_DATE = 19; >>>> BYTE_STRING = 20; >>>> STRING = 21; >>>> NUMBER = 22; >>>> OBJECT = 23; >>>> NULL = 24; >>>> ARRAY = 27; >>>> STRUCT = 28; >>>> MULTISET = 29; >>>> } >>>> >>>> // Base class for a column type >>>> message AvaticaType { >>>> uint32 id = 1; >>>> string name = 2; >>>> Rep rep = 3; >>>> >>>> repeated ColumnMetaData columns = 4; // Only present when name = STRUCT >>>> AvaticaType component = 5; // Only present when name = ARRAY >>>> } >>>> >>>> // Metadata for a parameter >>>> message AvaticaParameter { >>>> bool signed = 1; >>>> uint32 precision = 2; >>>> uint32 scale = 3; >>>> uint32 parameter_type = 4; >>>> string type_name = 5; >>>> string class_name = 6; >>>> string name = 7; >>>> } >>>> >>>> // Information necessary to convert an Iterable into a Calcite Cursor >>>> message CursorFactory { >>>> enum Style { >>>> OBJECT = 0; >>>> RECORD = 1; >>>> RECORD_PROJECTION = 2; >>>> ARRAY = 3; >>>> LIST = 4; >>>> MAP = 5; >>>> } >>>> >>>> Style style = 1; >>>> string class_name = 2; >>>> repeated string field_names = 3; >>>> } >>>> >>>> // A collection of rows >>>> message Frame { >>>> uint64 offset = 1; >>>> bool done = 2; >>>> repeated Row rows = 3; >>>> } >>>> >>>> // A row is a collection of values >>>> message Row { >>>> repeated ColumnValue value = 1; >>>> } >>>> >>>> // Database property, list of functions the database provides for a >>>> certain operation >>>> message DatabaseProperty { >>>> string name = 1; >>>> repeated string functions = 2; >>>> } >>>> >>>> // Message which encapsulates another message to support a single RPC >>>> endpoint >>>> message WireMessage { >>>> string name = 1; >>>> bytes wrapped_message = 2; >>>> } >>>> >>>> // A value might be a TypedValue or an Array of TypedValue's >>>> message ColumnValue { >>>> repeated TypedValue value = 1; // deprecated, use array_value or >>>> scalar_value >>>> repeated TypedValue array_value = 2; >>>> bool has_array_value = 3; // Is an array value set? >>>> TypedValue scalar_value = 4; >>>> } >>>> >>>> // Generic wrapper to support any SQL type. Struct-like to work around >>>> no polymorphism construct. >>>> message TypedValue { >>>> Rep type = 1; // The actual type that was serialized in the general >>>> attribute below >>>> >>>> bool bool_value = 2; // boolean >>>> string string_value = 3; // char/varchar >>>> sint64 number_value = 4; // var-len encoding lets us shove anything >>>> from byte to long >>>> // includes numeric types and date/time types. >>>> bytes bytes_value = 5; // binary/varbinary >>>> double double_value = 6; // big numbers >>>> bool null = 7; // a null object >>>> >>>> repeated TypedValue array_value = 8; // The Array >>>> Rep component_type = 9; // If an Array, the representation for the >>>> array values >>>> >>>> bool implicitly_null = 10; // Differentiate between explicitly null >>>> (user-set) and implicitly null >>>> // (un-set by the user) >>>> } >>>> >>>> // The severity of some unexpected outcome to an operation. >>>> // Protobuf enum values must be unique across all other enums >>>> enum Severity { >>>> UNKNOWN_SEVERITY = 0; >>>> FATAL_SEVERITY = 1; >>>> ERROR_SEVERITY = 2; >>>> WARNING_SEVERITY = 3; >>>> } >>>> >>>> // Enumeration corresponding to DatabaseMetaData operations >>>> enum MetaDataOperation { >>>> GET_ATTRIBUTES = 0; >>>> GET_BEST_ROW_IDENTIFIER = 1; >>>> GET_CATALOGS = 2; >>>> GET_CLIENT_INFO_PROPERTIES = 3; >>>> GET_COLUMN_PRIVILEGES = 4; >>>> GET_COLUMNS = 5; >>>> GET_CROSS_REFERENCE = 6; >>>> GET_EXPORTED_KEYS = 7; >>>> GET_FUNCTION_COLUMNS = 8; >>>> GET_FUNCTIONS = 9; >>>> GET_IMPORTED_KEYS = 10; >>>> GET_INDEX_INFO = 11; >>>> GET_PRIMARY_KEYS = 12; >>>> GET_PROCEDURE_COLUMNS = 13; >>>> GET_PROCEDURES = 14; >>>> GET_PSEUDO_COLUMNS = 15; >>>> GET_SCHEMAS = 16; >>>> GET_SCHEMAS_WITH_ARGS = 17; >>>> GET_SUPER_TABLES = 18; >>>> GET_SUPER_TYPES = 19; >>>> GET_TABLE_PRIVILEGES = 20; >>>> GET_TABLES = 21; >>>> GET_TABLE_TYPES = 22; >>>> GET_TYPE_INFO = 23; >>>> GET_UDTS = 24; >>>> GET_VERSION_COLUMNS = 25; >>>> } >>>> >>>> // Represents the breadth of arguments to DatabaseMetaData functions >>>> message MetaDataOperationArgument { >>>> enum ArgumentType { >>>> STRING = 0; >>>> BOOL = 1; >>>> INT = 2; >>>> REPEATED_STRING = 3; >>>> REPEATED_INT = 4; >>>> NULL = 5; >>>> } >>>> >>>> string string_value = 1; >>>> bool bool_value = 2; >>>> sint32 int_value = 3; >>>> repeated string string_array_values = 4; >>>> repeated sint32 int_array_values = 5; >>>> ArgumentType type = 6; >>>> } >>>> >>>> enum StateType { >>>> SQL = 0; >>>> METADATA = 1; >>>> } >>>> >>>> message QueryState { >>>> StateType type = 1; >>>> string sql = 2; >>>> MetaDataOperation op = 3; >>>> repeated MetaDataOperationArgument args = 4; >>>> bool has_args = 5; >>>> bool has_sql = 6; >>>> bool has_op = 7; >>>> } >>>> >>>> //REQUESTER.PROTO >>>> syntax = "proto3"; >>>> option cc_generic_services = false; >>>> >>>> //option java_package = "org.apache.calcite.avatica.proto"; >>>> >>>> import "common.proto"; >>>> >>>> // Request for Meta#getCatalogs() >>>> message CatalogsRequest { >>>> string connection_id = 1; >>>> } >>>> >>>> // Request for Meta#getDatabaseProperties() >>>> message DatabasePropertyRequest { >>>> string connection_id = 1; >>>> } >>>> >>>> // Request for Meta#getSchemas(String, >>>> org.apache.calcite.avatica.Meta.Pat)} >>>> message SchemasRequest { >>>> string catalog = 1; >>>> string schema_pattern = 2; >>>> string connection_id = 3; >>>> } >>>> >>>> // Request for Request for Meta#getTables(String, >>>> org.apache.calcite.avatica.Meta.Pat, >>>> // org.apache.calcite.avatica.Meta.Pat, java.util.List) >>>> message TablesRequest { >>>> string catalog = 1; >>>> string schema_pattern = 2; >>>> string table_name_pattern = 3; >>>> repeated string type_list = 4; >>>> bool has_type_list = 6; // Having an empty type_list is distinct from a >>>> null type_list >>>> string connection_id = 7; >>>> } >>>> >>>> // Request for Meta#getTableTypes() >>>> message TableTypesRequest { >>>> string connection_id = 1; >>>> } >>>> >>>> // Request for Meta#getColumns(String, >>>> org.apache.calcite.avatica.Meta.Pat, >>>> // org.apache.calcite.avatica.Meta.Pat, >>>> org.apache.calcite.avatica.Meta.Pat). >>>> message ColumnsRequest { >>>> string catalog = 1; >>>> string schema_pattern = 2; >>>> string table_name_pattern = 3; >>>> string column_name_pattern = 4; >>>> string connection_id = 5; >>>> } >>>> >>>> // Request for Meta#getTypeInfo() >>>> message TypeInfoRequest { >>>> string connection_id = 1; >>>> } >>>> >>>> // Request for Meta#prepareAndExecute(Meta.StatementHandle, String, >>>> long, Meta.PrepareCallback) >>>> message PrepareAndExecuteRequest { >>>> string connection_id = 1; >>>> string sql = 2; >>>> uint64 max_row_count = 3; // Deprecated >>>> uint32 statement_id = 4; >>>> int64 max_rows_total = 5; // The maximum number of rows that will be >>>> allowed for this query >>>> int32 first_frame_max_size = 6; // The maximum number of rows that will >>>> be returned in the >>>> // first Frame returned for this query. >>>> } >>>> >>>> // Request for Meta.prepare(Meta.ConnectionHandle, String, long) >>>> message PrepareRequest { >>>> string connection_id = 1; >>>> string sql = 2; >>>> uint64 max_row_count = 3; // Deprecated >>>> int64 max_rows_total = 4; // The maximum number of rows that will be >>>> allowed for this query >>>> } >>>> >>>> // Request for Meta#fetch(Meta.StatementHandle, List, long, int) >>>> message FetchRequest { >>>> string connection_id = 1; >>>> uint32 statement_id = 2; >>>> uint64 offset = 3; >>>> uint32 fetch_max_row_count = 4; // Maximum number of rows to be >>>> returned in the frame. Negative means no limit. Deprecated! >>>> int32 frame_max_size = 5; >>>> } >>>> >>>> // Request for Meta#createStatement(Meta.ConnectionHandle) >>>> message CreateStatementRequest { >>>> string connection_id = 1; >>>> } >>>> >>>> // Request for Meta#closeStatement(Meta.StatementHandle) >>>> message CloseStatementRequest { >>>> string connection_id = 1; >>>> uint32 statement_id = 2; >>>> } >>>> >>>> // Request for Meta#openConnection(Meta.ConnectionHandle, Map<String, >>>> String>) >>>> message OpenConnectionRequest { >>>> string connection_id = 1; >>>> map<string, string> info = 2; >>>> } >>>> >>>> // Request for Meta#closeConnection(Meta.ConnectionHandle) >>>> message CloseConnectionRequest { >>>> string connection_id = 1; >>>> } >>>> >>>> message ConnectionSyncRequest { >>>> string connection_id = 1; >>>> ConnectionProperties conn_props = 2; >>>> } >>>> >>>> // Request for Meta#execute(Meta.ConnectionHandle, list, long) >>>> message ExecuteRequest { >>>> StatementHandle statementHandle = 1; >>>> repeated TypedValue parameter_values = 2; >>>> uint64 deprecated_first_frame_max_size = 3; // Deprecated, use the >>>> signed int instead. >>>> bool has_parameter_values = 4; >>>> int32 first_frame_max_size = 5; // The maximum number of rows to return >>>> in the first Frame >>>> } >>>> >>>> >>>> message SyncResultsRequest { >>>> string connection_id = 1; >>>> uint32 statement_id = 2; >>>> QueryState state = 3; >>>> uint64 offset = 4; >>>> } >>>> >>>> // Request to invoke a commit on a Connection >>>> message CommitRequest { >>>> string connection_id = 1; >>>> } >>>> >>>> // Request to invoke rollback on a Connection >>>> message RollbackRequest { >>>> string connection_id = 1; >>>> } >>>> >>>> // Request to prepare and execute a collection of sql statements. >>>> message PrepareAndExecuteBatchRequest { >>>> string connection_id = 1; >>>> uint32 statement_id = 2; >>>> repeated string sql_commands = 3; >>>> } >>>> >>>> // Each command is a list of TypedValues >>>> message UpdateBatch { >>>> repeated TypedValue parameter_values = 1; >>>> } >>>> >>>> message ExecuteBatchRequest { >>>> string connection_id = 1; >>>> uint32 statement_id = 2; >>>> repeated UpdateBatch updates = 3; // A batch of updates is a >>>> list<list<typevalue>> >>>> } >>>> >>>> //RESPONSE.PROTO >>>> syntax = "proto3"; >>>> >>>> //option java_package = "org.apache.calcite.avatica.proto"; >>>> >>>> import "common.proto"; >>>> >>>> // Response that contains a result set. >>>> message ResultSetResponse { >>>> string connection_id = 1; >>>> uint32 statement_id = 2; >>>> bool own_statement = 3; >>>> Signature signature = 4; >>>> Frame first_frame = 5; >>>> uint64 update_count = 6; // -1 for normal result sets, else this >>>> response contains a dummy result set >>>> // with no signature nor other data. >>>> RpcMetadata metadata = 7; >>>> } >>>> >>>> // Response to PrepareAndExecuteRequest >>>> message ExecuteResponse { >>>> repeated ResultSetResponse results = 1; >>>> bool missing_statement = 2; // Did the request fail because of >>>> no-cached statement >>>> RpcMetadata metadata = 3; >>>> } >>>> >>>> // Response to PrepareRequest >>>> message PrepareResponse { >>>> StatementHandle statement = 1; >>>> RpcMetadata metadata = 2; >>>> } >>>> >>>> // Response to FetchRequest >>>> message FetchResponse { >>>> Frame frame = 1; >>>> bool missing_statement = 2; // Did the request fail because of >>>> no-cached statement >>>> bool missing_results = 3; // Did the request fail because of a >>>> cached-statement w/o ResultSet >>>> RpcMetadata metadata = 4; >>>> } >>>> >>>> // Response to CreateStatementRequest >>>> message CreateStatementResponse { >>>> string connection_id = 1; >>>> uint32 statement_id = 2; >>>> RpcMetadata metadata = 3; >>>> } >>>> >>>> // Response to CloseStatementRequest >>>> message CloseStatementResponse { >>>> RpcMetadata metadata = 1; >>>> } >>>> >>>> // Response to OpenConnectionRequest { >>>> message OpenConnectionResponse { >>>> RpcMetadata metadata = 1; >>>> } >>>> >>>> // Response to CloseConnectionRequest { >>>> message CloseConnectionResponse { >>>> RpcMetadata metadata = 1; >>>> } >>>> >>>> // Response to ConnectionSyncRequest >>>> message ConnectionSyncResponse { >>>> ConnectionProperties conn_props = 1; >>>> RpcMetadata metadata = 2; >>>> } >>>> >>>> message DatabasePropertyElement { >>>> DatabaseProperty key = 1; >>>> TypedValue value = 2; >>>> RpcMetadata metadata = 3; >>>> } >>>> >>>> // Response for Meta#getDatabaseProperties() >>>> message DatabasePropertyResponse { >>>> repeated DatabasePropertyElement props = 1; >>>> RpcMetadata metadata = 2; >>>> } >>>> >>>> // Send contextual information about some error over the wire from the >>>> server. >>>> message ErrorResponse { >>>> repeated string exceptions = 1; // exception stacktraces, many for >>>> linked exceptions. >>>> bool has_exceptions = 7; // are there stacktraces contained? >>>> string error_message = 2; // human readable description >>>> Severity severity = 3; >>>> uint32 error_code = 4; // numeric identifier for error >>>> string sql_state = 5; // five-character standard-defined value >>>> RpcMetadata metadata = 6; >>>> } >>>> >>>> message SyncResultsResponse { >>>> bool missing_statement = 1; // Server doesn't have the statement with >>>> the ID from the request >>>> bool more_results = 2; // Should the client fetch() to get more results >>>> RpcMetadata metadata = 3; >>>> } >>>> >>>> // Generic metadata for the server to return with each response. >>>> message RpcMetadata { >>>> string server_address = 1; // The host:port of the server >>>> } >>>> >>>> // Response to a commit request >>>> message CommitResponse { >>>> >>>> } >>>> >>>> // Response to a rollback request >>>> message RollbackResponse { >>>> >>>> } >>>> >>>> // Response to a batch update request >>>> message ExecuteBatchResponse { >>>> string connection_id = 1; >>>> uint32 statement_id = 2; >>>> repeated uint64 update_counts = 3; >>>> bool missing_statement = 4; // Did the request fail because of >>>> no-cached statement >>>> RpcMetadata metadata = 5; >>>> } >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Protocol Buffers" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/protobuf/98864904-d137-419a-901c-917727bddbe6n%40googlegroups.com >>>> >>>> <https://groups.google.com/d/msgid/protobuf/98864904-d137-419a-901c-917727bddbe6n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> -- >> You received this message because you are subscribed to the Google Groups >> "Protocol Buffers" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> > To view this discussion on the web visit >> https://groups.google.com/d/msgid/protobuf/0233414f-3b95-4d79-8001-cbdc2724e630n%40googlegroups.com >> >> <https://groups.google.com/d/msgid/protobuf/0233414f-3b95-4d79-8001-cbdc2724e630n%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/protobuf/cc700778-8c37-4c1a-9f09-0a345c6abd8fn%40googlegroups.com.
