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 <testlas...@gmail.com> 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 acoz...@google.com 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 <testl...@gmail.com> 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 protobuf+u...@googlegroups.com.
>>> 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 protobuf+unsubscr...@googlegroups.com.
> 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 protobuf+unsubscr...@googlegroups.com.
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