Actually a "make install" will not override the headers and library
installed by your distro's package manager. The package manager will put
those files in /usr/lib and /usr/include, whereas a "make install" will
install into /usr/local.

On Tue, Aug 25, 2020 at 12:19 PM Test Last <[email protected]> wrote:

> 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
> <https://groups.google.com/d/msgid/protobuf/cc700778-8c37-4c1a-9f09-0a345c6abd8fn%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/CADqAXr7ox2TjjAqpsgJ%2BWmgLN7%2Bw6i34wz2DtJUQOe%3DpGkeGSw%40mail.gmail.com.

Reply via email to