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/CADqAXr5Qs%2BA%3DQ%2BdGEvGhVhqq97npqBTPLwzFuCDws_XV-VP2MQ%40mail.gmail.com.

Reply via email to