FlightSql.java

// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: FlightSql.proto

// Protobuf Java Version: 3.25.4
package org.apache.arrow.flight.sql.impl;

public final class FlightSql {
  private FlightSql() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
    registry.add(org.apache.arrow.flight.sql.impl.FlightSql.experimental);
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * <pre>
   * Options for CommandGetSqlInfo.
   * </pre>
   *
   * Protobuf enum {@code arrow.flight.protocol.sql.SqlInfo}
   */
  public enum SqlInfo
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <pre>
     * Retrieves a UTF-8 string with the name of the Flight SQL Server.
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_NAME = 0;</code>
     */
    FLIGHT_SQL_SERVER_NAME(0),
    /**
     * <pre>
     * Retrieves a UTF-8 string with the native version of the Flight SQL Server.
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_VERSION = 1;</code>
     */
    FLIGHT_SQL_SERVER_VERSION(1),
    /**
     * <pre>
     * Retrieves a UTF-8 string with the Arrow format version of the Flight SQL Server.
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_ARROW_VERSION = 2;</code>
     */
    FLIGHT_SQL_SERVER_ARROW_VERSION(2),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether the Flight SQL Server is read only.
     *
     * Returns:
     * - false: if read-write
     * - true: if read only
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_READ_ONLY = 3;</code>
     */
    FLIGHT_SQL_SERVER_READ_ONLY(3),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether the Flight SQL Server supports executing
     * SQL queries.
     *
     * Note that the absence of this info (as opposed to a false value) does not necessarily
     * mean that SQL is not supported, as this property was not originally defined.
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_SQL = 4;</code>
     */
    FLIGHT_SQL_SERVER_SQL(4),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether the Flight SQL Server supports executing
     * Substrait plans.
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_SUBSTRAIT = 5;</code>
     */
    FLIGHT_SQL_SERVER_SUBSTRAIT(5),
    /**
     * <pre>
     *
     * Retrieves a string value indicating the minimum supported Substrait version, or null
     * if Substrait is not supported.
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_SUBSTRAIT_MIN_VERSION = 6;</code>
     */
    FLIGHT_SQL_SERVER_SUBSTRAIT_MIN_VERSION(6),
    /**
     * <pre>
     *
     * Retrieves a string value indicating the maximum supported Substrait version, or null
     * if Substrait is not supported.
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_SUBSTRAIT_MAX_VERSION = 7;</code>
     */
    FLIGHT_SQL_SERVER_SUBSTRAIT_MAX_VERSION(7),
    /**
     * <pre>
     *
     * Retrieves an int32 indicating whether the Flight SQL Server supports the
     * BeginTransaction/EndTransaction/BeginSavepoint/EndSavepoint actions.
     *
     * Even if this is not supported, the database may still support explicit "BEGIN
     * TRANSACTION"/"COMMIT" SQL statements (see SQL_TRANSACTIONS_SUPPORTED); this property
     * is only about whether the server implements the Flight SQL API endpoints.
     *
     * The possible values are listed in `SqlSupportedTransaction`.
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_TRANSACTION = 8;</code>
     */
    FLIGHT_SQL_SERVER_TRANSACTION(8),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether the Flight SQL Server supports explicit
     * query cancellation (the CancelQuery action).
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_CANCEL = 9;</code>
     */
    FLIGHT_SQL_SERVER_CANCEL(9),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether the Flight SQL Server supports executing
     * bulk ingestion.
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_BULK_INGESTION = 10;</code>
     */
    FLIGHT_SQL_SERVER_BULK_INGESTION(10),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether transactions are supported for bulk ingestion. If not, invoking
     * the method commit in the context of a bulk ingestion is a noop, and the isolation level is
     * `arrow.flight.protocol.sql.SqlTransactionIsolationLevel.TRANSACTION_NONE`.
     *
     * Returns:
     * - false: if bulk ingestion transactions are unsupported;
     * - true: if bulk ingestion transactions are supported.
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_INGEST_TRANSACTIONS_SUPPORTED = 11;</code>
     */
    FLIGHT_SQL_SERVER_INGEST_TRANSACTIONS_SUPPORTED(11),
    /**
     * <pre>
     *
     * Retrieves an int32 indicating the timeout (in milliseconds) for prepared statement handles.
     *
     * If 0, there is no timeout.  Servers should reset the timeout when the handle is used in a command.
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_STATEMENT_TIMEOUT = 100;</code>
     */
    FLIGHT_SQL_SERVER_STATEMENT_TIMEOUT(100),
    /**
     * <pre>
     *
     * Retrieves an int32 indicating the timeout (in milliseconds) for transactions, since transactions are not tied to a connection.
     *
     * If 0, there is no timeout.  Servers should reset the timeout when the handle is used in a command.
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_TRANSACTION_TIMEOUT = 101;</code>
     */
    FLIGHT_SQL_SERVER_TRANSACTION_TIMEOUT(101),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether the Flight SQL Server supports CREATE and DROP of catalogs.
     *
     * Returns:
     * - false: if it doesn't support CREATE and DROP of catalogs.
     * - true: if it supports CREATE and DROP of catalogs.
     * </pre>
     *
     * <code>SQL_DDL_CATALOG = 500;</code>
     */
    SQL_DDL_CATALOG(500),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether the Flight SQL Server supports CREATE and DROP of schemas.
     *
     * Returns:
     * - false: if it doesn't support CREATE and DROP of schemas.
     * - true: if it supports CREATE and DROP of schemas.
     * </pre>
     *
     * <code>SQL_DDL_SCHEMA = 501;</code>
     */
    SQL_DDL_SCHEMA(501),
    /**
     * <pre>
     *
     * Indicates whether the Flight SQL Server supports CREATE and DROP of tables.
     *
     * Returns:
     * - false: if it doesn't support CREATE and DROP of tables.
     * - true: if it supports CREATE and DROP of tables.
     * </pre>
     *
     * <code>SQL_DDL_TABLE = 502;</code>
     */
    SQL_DDL_TABLE(502),
    /**
     * <pre>
     *
     * Retrieves a int32 ordinal representing the case sensitivity of catalog, table, schema and table names.
     *
     * The possible values are listed in `arrow.flight.protocol.sql.SqlSupportedCaseSensitivity`.
     * </pre>
     *
     * <code>SQL_IDENTIFIER_CASE = 503;</code>
     */
    SQL_IDENTIFIER_CASE(503),
    /**
     * <pre>
     * Retrieves a UTF-8 string with the supported character(s) used to surround a delimited identifier.
     * </pre>
     *
     * <code>SQL_IDENTIFIER_QUOTE_CHAR = 504;</code>
     */
    SQL_IDENTIFIER_QUOTE_CHAR(504),
    /**
     * <pre>
     *
     * Retrieves a int32 describing the case sensitivity of quoted identifiers.
     *
     * The possible values are listed in `arrow.flight.protocol.sql.SqlSupportedCaseSensitivity`.
     * </pre>
     *
     * <code>SQL_QUOTED_IDENTIFIER_CASE = 505;</code>
     */
    SQL_QUOTED_IDENTIFIER_CASE(505),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether all tables are selectable.
     *
     * Returns:
     * - false: if not all tables are selectable or if none are;
     * - true: if all tables are selectable.
     * </pre>
     *
     * <code>SQL_ALL_TABLES_ARE_SELECTABLE = 506;</code>
     */
    SQL_ALL_TABLES_ARE_SELECTABLE(506),
    /**
     * <pre>
     *
     * Retrieves the null ordering.
     *
     * Returns a int32 ordinal for the null ordering being used, as described in
     * `arrow.flight.protocol.sql.SqlNullOrdering`.
     * </pre>
     *
     * <code>SQL_NULL_ORDERING = 507;</code>
     */
    SQL_NULL_ORDERING(507),
    /**
     * <pre>
     * Retrieves a UTF-8 string list with values of the supported keywords.
     * </pre>
     *
     * <code>SQL_KEYWORDS = 508;</code>
     */
    SQL_KEYWORDS(508),
    /**
     * <pre>
     * Retrieves a UTF-8 string list with values of the supported numeric functions.
     * </pre>
     *
     * <code>SQL_NUMERIC_FUNCTIONS = 509;</code>
     */
    SQL_NUMERIC_FUNCTIONS(509),
    /**
     * <pre>
     * Retrieves a UTF-8 string list with values of the supported string functions.
     * </pre>
     *
     * <code>SQL_STRING_FUNCTIONS = 510;</code>
     */
    SQL_STRING_FUNCTIONS(510),
    /**
     * <pre>
     * Retrieves a UTF-8 string list with values of the supported system functions.
     * </pre>
     *
     * <code>SQL_SYSTEM_FUNCTIONS = 511;</code>
     */
    SQL_SYSTEM_FUNCTIONS(511),
    /**
     * <pre>
     * Retrieves a UTF-8 string list with values of the supported datetime functions.
     * </pre>
     *
     * <code>SQL_DATETIME_FUNCTIONS = 512;</code>
     */
    SQL_DATETIME_FUNCTIONS(512),
    /**
     * <pre>
     *
     * Retrieves the UTF-8 string that can be used to escape wildcard characters.
     * This is the string that can be used to escape '_' or '%' in the catalog search parameters that are a pattern
     * (and therefore use one of the wildcard characters).
     * The '_' character represents any single character; the '%' character represents any sequence of zero or more
     * characters.
     * </pre>
     *
     * <code>SQL_SEARCH_STRING_ESCAPE = 513;</code>
     */
    SQL_SEARCH_STRING_ESCAPE(513),
    /**
     * <pre>
     *
     * Retrieves a UTF-8 string with all the "extra" characters that can be used in unquoted identifier names
     * (those beyond a-z, A-Z, 0-9 and _).
     * </pre>
     *
     * <code>SQL_EXTRA_NAME_CHARACTERS = 514;</code>
     */
    SQL_EXTRA_NAME_CHARACTERS(514),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether column aliasing is supported.
     * If so, the SQL AS clause can be used to provide names for computed columns or to provide alias names for columns
     * as required.
     *
     * Returns:
     * - false: if column aliasing is unsupported;
     * - true: if column aliasing is supported.
     * </pre>
     *
     * <code>SQL_SUPPORTS_COLUMN_ALIASING = 515;</code>
     */
    SQL_SUPPORTS_COLUMN_ALIASING(515),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether concatenations between null and non-null values being
     * null are supported.
     *
     * - Returns:
     * - false: if concatenations between null and non-null values being null are unsupported;
     * - true: if concatenations between null and non-null values being null are supported.
     * </pre>
     *
     * <code>SQL_NULL_PLUS_NULL_IS_NULL = 516;</code>
     */
    SQL_NULL_PLUS_NULL_IS_NULL(516),
    /**
     * <pre>
     *
     * Retrieves a map where the key is the type to convert from and the value is a list with the types to convert to,
     * indicating the supported conversions. Each key and each item on the list value is a value to a predefined type on
     * SqlSupportsConvert enum.
     * The returned map will be:  map&lt;int32, list&lt;int32&gt;&gt;
     * </pre>
     *
     * <code>SQL_SUPPORTS_CONVERT = 517;</code>
     */
    SQL_SUPPORTS_CONVERT(517),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether, when table correlation names are supported,
     * they are restricted to being different from the names of the tables.
     *
     * Returns:
     * - false: if table correlation names are unsupported;
     * - true: if table correlation names are supported.
     * </pre>
     *
     * <code>SQL_SUPPORTS_TABLE_CORRELATION_NAMES = 518;</code>
     */
    SQL_SUPPORTS_TABLE_CORRELATION_NAMES(518),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether, when table correlation names are supported,
     * they are restricted to being different from the names of the tables.
     *
     * Returns:
     * - false: if different table correlation names are unsupported;
     * - true: if different table correlation names are supported
     * </pre>
     *
     * <code>SQL_SUPPORTS_DIFFERENT_TABLE_CORRELATION_NAMES = 519;</code>
     */
    SQL_SUPPORTS_DIFFERENT_TABLE_CORRELATION_NAMES(519),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether expressions in ORDER BY lists are supported.
     *
     * Returns:
     * - false: if expressions in ORDER BY are unsupported;
     * - true: if expressions in ORDER BY are supported;
     * </pre>
     *
     * <code>SQL_SUPPORTS_EXPRESSIONS_IN_ORDER_BY = 520;</code>
     */
    SQL_SUPPORTS_EXPRESSIONS_IN_ORDER_BY(520),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether using a column that is not in the SELECT statement in a GROUP BY
     * clause is supported.
     *
     * Returns:
     * - false: if using a column that is not in the SELECT statement in a GROUP BY clause is unsupported;
     * - true: if using a column that is not in the SELECT statement in a GROUP BY clause is supported.
     * </pre>
     *
     * <code>SQL_SUPPORTS_ORDER_BY_UNRELATED = 521;</code>
     */
    SQL_SUPPORTS_ORDER_BY_UNRELATED(521),
    /**
     * <pre>
     *
     * Retrieves the supported GROUP BY commands;
     *
     * Returns an int32 bitmask value representing the supported commands.
     * The returned bitmask should be parsed in order to retrieve the supported commands.
     *
     * For instance:
     * - return 0 (&#92;b0)   =&gt; [] (GROUP BY is unsupported);
     * - return 1 (&#92;b1)   =&gt; [SQL_GROUP_BY_UNRELATED];
     * - return 2 (&#92;b10)  =&gt; [SQL_GROUP_BY_BEYOND_SELECT];
     * - return 3 (&#92;b11)  =&gt; [SQL_GROUP_BY_UNRELATED, SQL_GROUP_BY_BEYOND_SELECT].
     * Valid GROUP BY types are described under `arrow.flight.protocol.sql.SqlSupportedGroupBy`.
     * </pre>
     *
     * <code>SQL_SUPPORTED_GROUP_BY = 522;</code>
     */
    SQL_SUPPORTED_GROUP_BY(522),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether specifying a LIKE escape clause is supported.
     *
     * Returns:
     * - false: if specifying a LIKE escape clause is unsupported;
     * - true: if specifying a LIKE escape clause is supported.
     * </pre>
     *
     * <code>SQL_SUPPORTS_LIKE_ESCAPE_CLAUSE = 523;</code>
     */
    SQL_SUPPORTS_LIKE_ESCAPE_CLAUSE(523),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether columns may be defined as non-nullable.
     *
     * Returns:
     * - false: if columns cannot be defined as non-nullable;
     * - true: if columns may be defined as non-nullable.
     * </pre>
     *
     * <code>SQL_SUPPORTS_NON_NULLABLE_COLUMNS = 524;</code>
     */
    SQL_SUPPORTS_NON_NULLABLE_COLUMNS(524),
    /**
     * <pre>
     *
     * Retrieves the supported SQL grammar level as per the ODBC specification.
     *
     * Returns an int32 bitmask value representing the supported SQL grammar level.
     * The returned bitmask should be parsed in order to retrieve the supported grammar levels.
     *
     * For instance:
     * - return 0 (&#92;b0)   =&gt; [] (SQL grammar is unsupported);
     * - return 1 (&#92;b1)   =&gt; [SQL_MINIMUM_GRAMMAR];
     * - return 2 (&#92;b10)  =&gt; [SQL_CORE_GRAMMAR];
     * - return 3 (&#92;b11)  =&gt; [SQL_MINIMUM_GRAMMAR, SQL_CORE_GRAMMAR];
     * - return 4 (&#92;b100) =&gt; [SQL_EXTENDED_GRAMMAR];
     * - return 5 (&#92;b101) =&gt; [SQL_MINIMUM_GRAMMAR, SQL_EXTENDED_GRAMMAR];
     * - return 6 (&#92;b110) =&gt; [SQL_CORE_GRAMMAR, SQL_EXTENDED_GRAMMAR];
     * - return 7 (&#92;b111) =&gt; [SQL_MINIMUM_GRAMMAR, SQL_CORE_GRAMMAR, SQL_EXTENDED_GRAMMAR].
     * Valid SQL grammar levels are described under `arrow.flight.protocol.sql.SupportedSqlGrammar`.
     * </pre>
     *
     * <code>SQL_SUPPORTED_GRAMMAR = 525;</code>
     */
    SQL_SUPPORTED_GRAMMAR(525),
    /**
     * <pre>
     *
     * Retrieves the supported ANSI92 SQL grammar level.
     *
     * Returns an int32 bitmask value representing the supported ANSI92 SQL grammar level.
     * The returned bitmask should be parsed in order to retrieve the supported commands.
     *
     * For instance:
     * - return 0 (&#92;b0)   =&gt; [] (ANSI92 SQL grammar is unsupported);
     * - return 1 (&#92;b1)   =&gt; [ANSI92_ENTRY_SQL];
     * - return 2 (&#92;b10)  =&gt; [ANSI92_INTERMEDIATE_SQL];
     * - return 3 (&#92;b11)  =&gt; [ANSI92_ENTRY_SQL, ANSI92_INTERMEDIATE_SQL];
     * - return 4 (&#92;b100) =&gt; [ANSI92_FULL_SQL];
     * - return 5 (&#92;b101) =&gt; [ANSI92_ENTRY_SQL, ANSI92_FULL_SQL];
     * - return 6 (&#92;b110) =&gt; [ANSI92_INTERMEDIATE_SQL, ANSI92_FULL_SQL];
     * - return 7 (&#92;b111) =&gt; [ANSI92_ENTRY_SQL, ANSI92_INTERMEDIATE_SQL, ANSI92_FULL_SQL].
     * Valid ANSI92 SQL grammar levels are described under `arrow.flight.protocol.sql.SupportedAnsi92SqlGrammarLevel`.
     * </pre>
     *
     * <code>SQL_ANSI92_SUPPORTED_LEVEL = 526;</code>
     */
    SQL_ANSI92_SUPPORTED_LEVEL(526),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether the SQL Integrity Enhancement Facility is supported.
     *
     * Returns:
     * - false: if the SQL Integrity Enhancement Facility is supported;
     * - true: if the SQL Integrity Enhancement Facility is supported.
     * </pre>
     *
     * <code>SQL_SUPPORTS_INTEGRITY_ENHANCEMENT_FACILITY = 527;</code>
     */
    SQL_SUPPORTS_INTEGRITY_ENHANCEMENT_FACILITY(527),
    /**
     * <pre>
     *
     * Retrieves the support level for SQL OUTER JOINs.
     *
     * Returns a int32 ordinal for the SQL ordering being used, as described in
     * `arrow.flight.protocol.sql.SqlOuterJoinsSupportLevel`.
     * </pre>
     *
     * <code>SQL_OUTER_JOINS_SUPPORT_LEVEL = 528;</code>
     */
    SQL_OUTER_JOINS_SUPPORT_LEVEL(528),
    /**
     * <pre>
     * Retrieves a UTF-8 string with the preferred term for "schema".
     * </pre>
     *
     * <code>SQL_SCHEMA_TERM = 529;</code>
     */
    SQL_SCHEMA_TERM(529),
    /**
     * <pre>
     * Retrieves a UTF-8 string with the preferred term for "procedure".
     * </pre>
     *
     * <code>SQL_PROCEDURE_TERM = 530;</code>
     */
    SQL_PROCEDURE_TERM(530),
    /**
     * <pre>
     *
     * Retrieves a UTF-8 string with the preferred term for "catalog".
     * If a empty string is returned its assumed that the server does NOT supports catalogs.
     * </pre>
     *
     * <code>SQL_CATALOG_TERM = 531;</code>
     */
    SQL_CATALOG_TERM(531),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether a catalog appears at the start of a fully qualified table name.
     *
     * - false: if a catalog does not appear at the start of a fully qualified table name;
     * - true: if a catalog appears at the start of a fully qualified table name.
     * </pre>
     *
     * <code>SQL_CATALOG_AT_START = 532;</code>
     */
    SQL_CATALOG_AT_START(532),
    /**
     * <pre>
     *
     * Retrieves the supported actions for a SQL schema.
     *
     * Returns an int32 bitmask value representing the supported actions for a SQL schema.
     * The returned bitmask should be parsed in order to retrieve the supported actions for a SQL schema.
     *
     * For instance:
     * - return 0 (&#92;b0)   =&gt; [] (no supported actions for SQL schema);
     * - return 1 (&#92;b1)   =&gt; [SQL_ELEMENT_IN_PROCEDURE_CALLS];
     * - return 2 (&#92;b10)  =&gt; [SQL_ELEMENT_IN_INDEX_DEFINITIONS];
     * - return 3 (&#92;b11)  =&gt; [SQL_ELEMENT_IN_PROCEDURE_CALLS, SQL_ELEMENT_IN_INDEX_DEFINITIONS];
     * - return 4 (&#92;b100) =&gt; [SQL_ELEMENT_IN_PRIVILEGE_DEFINITIONS];
     * - return 5 (&#92;b101) =&gt; [SQL_ELEMENT_IN_PROCEDURE_CALLS, SQL_ELEMENT_IN_PRIVILEGE_DEFINITIONS];
     * - return 6 (&#92;b110) =&gt; [SQL_ELEMENT_IN_INDEX_DEFINITIONS, SQL_ELEMENT_IN_PRIVILEGE_DEFINITIONS];
     * - return 7 (&#92;b111) =&gt; [SQL_ELEMENT_IN_PROCEDURE_CALLS, SQL_ELEMENT_IN_INDEX_DEFINITIONS, SQL_ELEMENT_IN_PRIVILEGE_DEFINITIONS].
     * Valid actions for a SQL schema described under `arrow.flight.protocol.sql.SqlSupportedElementActions`.
     * </pre>
     *
     * <code>SQL_SCHEMAS_SUPPORTED_ACTIONS = 533;</code>
     */
    SQL_SCHEMAS_SUPPORTED_ACTIONS(533),
    /**
     * <pre>
     *
     * Retrieves the supported actions for a SQL schema.
     *
     * Returns an int32 bitmask value representing the supported actions for a SQL catalog.
     * The returned bitmask should be parsed in order to retrieve the supported actions for a SQL catalog.
     *
     * For instance:
     * - return 0 (&#92;b0)   =&gt; [] (no supported actions for SQL catalog);
     * - return 1 (&#92;b1)   =&gt; [SQL_ELEMENT_IN_PROCEDURE_CALLS];
     * - return 2 (&#92;b10)  =&gt; [SQL_ELEMENT_IN_INDEX_DEFINITIONS];
     * - return 3 (&#92;b11)  =&gt; [SQL_ELEMENT_IN_PROCEDURE_CALLS, SQL_ELEMENT_IN_INDEX_DEFINITIONS];
     * - return 4 (&#92;b100) =&gt; [SQL_ELEMENT_IN_PRIVILEGE_DEFINITIONS];
     * - return 5 (&#92;b101) =&gt; [SQL_ELEMENT_IN_PROCEDURE_CALLS, SQL_ELEMENT_IN_PRIVILEGE_DEFINITIONS];
     * - return 6 (&#92;b110) =&gt; [SQL_ELEMENT_IN_INDEX_DEFINITIONS, SQL_ELEMENT_IN_PRIVILEGE_DEFINITIONS];
     * - return 7 (&#92;b111) =&gt; [SQL_ELEMENT_IN_PROCEDURE_CALLS, SQL_ELEMENT_IN_INDEX_DEFINITIONS, SQL_ELEMENT_IN_PRIVILEGE_DEFINITIONS].
     * Valid actions for a SQL catalog are described under `arrow.flight.protocol.sql.SqlSupportedElementActions`.
     * </pre>
     *
     * <code>SQL_CATALOGS_SUPPORTED_ACTIONS = 534;</code>
     */
    SQL_CATALOGS_SUPPORTED_ACTIONS(534),
    /**
     * <pre>
     *
     * Retrieves the supported SQL positioned commands.
     *
     * Returns an int32 bitmask value representing the supported SQL positioned commands.
     * The returned bitmask should be parsed in order to retrieve the supported SQL positioned commands.
     *
     * For instance:
     * - return 0 (&#92;b0)   =&gt; [] (no supported SQL positioned commands);
     * - return 1 (&#92;b1)   =&gt; [SQL_POSITIONED_DELETE];
     * - return 2 (&#92;b10)  =&gt; [SQL_POSITIONED_UPDATE];
     * - return 3 (&#92;b11)  =&gt; [SQL_POSITIONED_DELETE, SQL_POSITIONED_UPDATE].
     * Valid SQL positioned commands are described under `arrow.flight.protocol.sql.SqlSupportedPositionedCommands`.
     * </pre>
     *
     * <code>SQL_SUPPORTED_POSITIONED_COMMANDS = 535;</code>
     */
    SQL_SUPPORTED_POSITIONED_COMMANDS(535),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether SELECT FOR UPDATE statements are supported.
     *
     * Returns:
     * - false: if SELECT FOR UPDATE statements are unsupported;
     * - true: if SELECT FOR UPDATE statements are supported.
     * </pre>
     *
     * <code>SQL_SELECT_FOR_UPDATE_SUPPORTED = 536;</code>
     */
    SQL_SELECT_FOR_UPDATE_SUPPORTED(536),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether stored procedure calls that use the stored procedure escape syntax
     * are supported.
     *
     * Returns:
     * - false: if stored procedure calls that use the stored procedure escape syntax are unsupported;
     * - true: if stored procedure calls that use the stored procedure escape syntax are supported.
     * </pre>
     *
     * <code>SQL_STORED_PROCEDURES_SUPPORTED = 537;</code>
     */
    SQL_STORED_PROCEDURES_SUPPORTED(537),
    /**
     * <pre>
     *
     * Retrieves the supported SQL subqueries.
     *
     * Returns an int32 bitmask value representing the supported SQL subqueries.
     * The returned bitmask should be parsed in order to retrieve the supported SQL subqueries.
     *
     * For instance:
     * - return 0   (&#92;b0)     =&gt; [] (no supported SQL subqueries);
     * - return 1   (&#92;b1)     =&gt; [SQL_SUBQUERIES_IN_COMPARISONS];
     * - return 2   (&#92;b10)    =&gt; [SQL_SUBQUERIES_IN_EXISTS];
     * - return 3   (&#92;b11)    =&gt; [SQL_SUBQUERIES_IN_COMPARISONS, SQL_SUBQUERIES_IN_EXISTS];
     * - return 4   (&#92;b100)   =&gt; [SQL_SUBQUERIES_IN_INS];
     * - return 5   (&#92;b101)   =&gt; [SQL_SUBQUERIES_IN_COMPARISONS, SQL_SUBQUERIES_IN_INS];
     * - return 6   (&#92;b110)   =&gt; [SQL_SUBQUERIES_IN_INS, SQL_SUBQUERIES_IN_EXISTS];
     * - return 7   (&#92;b111)   =&gt; [SQL_SUBQUERIES_IN_COMPARISONS, SQL_SUBQUERIES_IN_EXISTS, SQL_SUBQUERIES_IN_INS];
     * - return 8   (&#92;b1000)  =&gt; [SQL_SUBQUERIES_IN_QUANTIFIEDS];
     * - return 9   (&#92;b1001)  =&gt; [SQL_SUBQUERIES_IN_COMPARISONS, SQL_SUBQUERIES_IN_QUANTIFIEDS];
     * - return 10  (&#92;b1010)  =&gt; [SQL_SUBQUERIES_IN_EXISTS, SQL_SUBQUERIES_IN_QUANTIFIEDS];
     * - return 11  (&#92;b1011)  =&gt; [SQL_SUBQUERIES_IN_COMPARISONS, SQL_SUBQUERIES_IN_EXISTS, SQL_SUBQUERIES_IN_QUANTIFIEDS];
     * - return 12  (&#92;b1100)  =&gt; [SQL_SUBQUERIES_IN_INS, SQL_SUBQUERIES_IN_QUANTIFIEDS];
     * - return 13  (&#92;b1101)  =&gt; [SQL_SUBQUERIES_IN_COMPARISONS, SQL_SUBQUERIES_IN_INS, SQL_SUBQUERIES_IN_QUANTIFIEDS];
     * - return 14  (&#92;b1110)  =&gt; [SQL_SUBQUERIES_IN_EXISTS, SQL_SUBQUERIES_IN_INS, SQL_SUBQUERIES_IN_QUANTIFIEDS];
     * - return 15  (&#92;b1111)  =&gt; [SQL_SUBQUERIES_IN_COMPARISONS, SQL_SUBQUERIES_IN_EXISTS, SQL_SUBQUERIES_IN_INS, SQL_SUBQUERIES_IN_QUANTIFIEDS];
     * - ...
     * Valid SQL subqueries are described under `arrow.flight.protocol.sql.SqlSupportedSubqueries`.
     * </pre>
     *
     * <code>SQL_SUPPORTED_SUBQUERIES = 538;</code>
     */
    SQL_SUPPORTED_SUBQUERIES(538),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether correlated subqueries are supported.
     *
     * Returns:
     * - false: if correlated subqueries are unsupported;
     * - true: if correlated subqueries are supported.
     * </pre>
     *
     * <code>SQL_CORRELATED_SUBQUERIES_SUPPORTED = 539;</code>
     */
    SQL_CORRELATED_SUBQUERIES_SUPPORTED(539),
    /**
     * <pre>
     *
     * Retrieves the supported SQL UNIONs.
     *
     * Returns an int32 bitmask value representing the supported SQL UNIONs.
     * The returned bitmask should be parsed in order to retrieve the supported SQL UNIONs.
     *
     * For instance:
     * - return 0 (&#92;b0)   =&gt; [] (no supported SQL positioned commands);
     * - return 1 (&#92;b1)   =&gt; [SQL_UNION];
     * - return 2 (&#92;b10)  =&gt; [SQL_UNION_ALL];
     * - return 3 (&#92;b11)  =&gt; [SQL_UNION, SQL_UNION_ALL].
     * Valid SQL positioned commands are described under `arrow.flight.protocol.sql.SqlSupportedUnions`.
     * </pre>
     *
     * <code>SQL_SUPPORTED_UNIONS = 540;</code>
     */
    SQL_SUPPORTED_UNIONS(540),
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of hex characters allowed in an inline binary literal.
     * </pre>
     *
     * <code>SQL_MAX_BINARY_LITERAL_LENGTH = 541;</code>
     */
    SQL_MAX_BINARY_LITERAL_LENGTH(541),
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of characters allowed for a character literal.
     * </pre>
     *
     * <code>SQL_MAX_CHAR_LITERAL_LENGTH = 542;</code>
     */
    SQL_MAX_CHAR_LITERAL_LENGTH(542),
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of characters allowed for a column name.
     * </pre>
     *
     * <code>SQL_MAX_COLUMN_NAME_LENGTH = 543;</code>
     */
    SQL_MAX_COLUMN_NAME_LENGTH(543),
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of columns allowed in a GROUP BY clause.
     * </pre>
     *
     * <code>SQL_MAX_COLUMNS_IN_GROUP_BY = 544;</code>
     */
    SQL_MAX_COLUMNS_IN_GROUP_BY(544),
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of columns allowed in an index.
     * </pre>
     *
     * <code>SQL_MAX_COLUMNS_IN_INDEX = 545;</code>
     */
    SQL_MAX_COLUMNS_IN_INDEX(545),
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of columns allowed in an ORDER BY clause.
     * </pre>
     *
     * <code>SQL_MAX_COLUMNS_IN_ORDER_BY = 546;</code>
     */
    SQL_MAX_COLUMNS_IN_ORDER_BY(546),
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of columns allowed in a SELECT list.
     * </pre>
     *
     * <code>SQL_MAX_COLUMNS_IN_SELECT = 547;</code>
     */
    SQL_MAX_COLUMNS_IN_SELECT(547),
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of columns allowed in a table.
     * </pre>
     *
     * <code>SQL_MAX_COLUMNS_IN_TABLE = 548;</code>
     */
    SQL_MAX_COLUMNS_IN_TABLE(548),
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of concurrent connections possible.
     * </pre>
     *
     * <code>SQL_MAX_CONNECTIONS = 549;</code>
     */
    SQL_MAX_CONNECTIONS(549),
    /**
     * <pre>
     * Retrieves a int64 value the maximum number of characters allowed in a cursor name.
     * </pre>
     *
     * <code>SQL_MAX_CURSOR_NAME_LENGTH = 550;</code>
     */
    SQL_MAX_CURSOR_NAME_LENGTH(550),
    /**
     * <pre>
     *
     * Retrieves a int64 value representing the maximum number of bytes allowed for an index,
     * including all of the parts of the index.
     * </pre>
     *
     * <code>SQL_MAX_INDEX_LENGTH = 551;</code>
     */
    SQL_MAX_INDEX_LENGTH(551),
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of characters allowed in a schema name.
     * </pre>
     *
     * <code>SQL_DB_SCHEMA_NAME_LENGTH = 552;</code>
     */
    SQL_DB_SCHEMA_NAME_LENGTH(552),
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of characters allowed in a procedure name.
     * </pre>
     *
     * <code>SQL_MAX_PROCEDURE_NAME_LENGTH = 553;</code>
     */
    SQL_MAX_PROCEDURE_NAME_LENGTH(553),
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of characters allowed in a catalog name.
     * </pre>
     *
     * <code>SQL_MAX_CATALOG_NAME_LENGTH = 554;</code>
     */
    SQL_MAX_CATALOG_NAME_LENGTH(554),
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of bytes allowed in a single row.
     * </pre>
     *
     * <code>SQL_MAX_ROW_SIZE = 555;</code>
     */
    SQL_MAX_ROW_SIZE(555),
    /**
     * <pre>
     *
     * Retrieves a boolean indicating whether the return value for the JDBC method getMaxRowSize includes the SQL
     * data types LONGVARCHAR and LONGVARBINARY.
     *
     * Returns:
     * - false: if return value for the JDBC method getMaxRowSize does
     *          not include the SQL data types LONGVARCHAR and LONGVARBINARY;
     * - true: if return value for the JDBC method getMaxRowSize includes
     *         the SQL data types LONGVARCHAR and LONGVARBINARY.
     * </pre>
     *
     * <code>SQL_MAX_ROW_SIZE_INCLUDES_BLOBS = 556;</code>
     */
    SQL_MAX_ROW_SIZE_INCLUDES_BLOBS(556),
    /**
     * <pre>
     *
     * Retrieves a int64 value representing the maximum number of characters allowed for an SQL statement;
     * a result of 0 (zero) means that there is no limit or the limit is not known.
     * </pre>
     *
     * <code>SQL_MAX_STATEMENT_LENGTH = 557;</code>
     */
    SQL_MAX_STATEMENT_LENGTH(557),
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of active statements that can be open at the same time.
     * </pre>
     *
     * <code>SQL_MAX_STATEMENTS = 558;</code>
     */
    SQL_MAX_STATEMENTS(558),
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of characters allowed in a table name.
     * </pre>
     *
     * <code>SQL_MAX_TABLE_NAME_LENGTH = 559;</code>
     */
    SQL_MAX_TABLE_NAME_LENGTH(559),
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of tables allowed in a SELECT statement.
     * </pre>
     *
     * <code>SQL_MAX_TABLES_IN_SELECT = 560;</code>
     */
    SQL_MAX_TABLES_IN_SELECT(560),
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of characters allowed in a user name.
     * </pre>
     *
     * <code>SQL_MAX_USERNAME_LENGTH = 561;</code>
     */
    SQL_MAX_USERNAME_LENGTH(561),
    /**
     * <pre>
     *
     * Retrieves this database's default transaction isolation level as described in
     * `arrow.flight.protocol.sql.SqlTransactionIsolationLevel`.
     *
     * Returns a int32 ordinal for the SQL transaction isolation level.
     * </pre>
     *
     * <code>SQL_DEFAULT_TRANSACTION_ISOLATION = 562;</code>
     */
    SQL_DEFAULT_TRANSACTION_ISOLATION(562),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether transactions are supported. If not, invoking the method commit is a
     * noop, and the isolation level is `arrow.flight.protocol.sql.SqlTransactionIsolationLevel.TRANSACTION_NONE`.
     *
     * Returns:
     * - false: if transactions are unsupported;
     * - true: if transactions are supported.
     * </pre>
     *
     * <code>SQL_TRANSACTIONS_SUPPORTED = 563;</code>
     */
    SQL_TRANSACTIONS_SUPPORTED(563),
    /**
     * <pre>
     *
     * Retrieves the supported transactions isolation levels.
     *
     * Returns an int32 bitmask value representing the supported transactions isolation levels.
     * The returned bitmask should be parsed in order to retrieve the supported transactions isolation levels.
     *
     * For instance:
     * - return 0   (&#92;b0)     =&gt; [] (no supported SQL transactions isolation levels);
     * - return 1   (&#92;b1)     =&gt; [SQL_TRANSACTION_NONE];
     * - return 2   (&#92;b10)    =&gt; [SQL_TRANSACTION_READ_UNCOMMITTED];
     * - return 3   (&#92;b11)    =&gt; [SQL_TRANSACTION_NONE, SQL_TRANSACTION_READ_UNCOMMITTED];
     * - return 4   (&#92;b100)   =&gt; [SQL_TRANSACTION_REPEATABLE_READ];
     * - return 5   (&#92;b101)   =&gt; [SQL_TRANSACTION_NONE, SQL_TRANSACTION_REPEATABLE_READ];
     * - return 6   (&#92;b110)   =&gt; [SQL_TRANSACTION_READ_UNCOMMITTED, SQL_TRANSACTION_REPEATABLE_READ];
     * - return 7   (&#92;b111)   =&gt; [SQL_TRANSACTION_NONE, SQL_TRANSACTION_READ_UNCOMMITTED, SQL_TRANSACTION_REPEATABLE_READ];
     * - return 8   (&#92;b1000)  =&gt; [SQL_TRANSACTION_REPEATABLE_READ];
     * - return 9   (&#92;b1001)  =&gt; [SQL_TRANSACTION_NONE, SQL_TRANSACTION_REPEATABLE_READ];
     * - return 10  (&#92;b1010)  =&gt; [SQL_TRANSACTION_READ_UNCOMMITTED, SQL_TRANSACTION_REPEATABLE_READ];
     * - return 11  (&#92;b1011)  =&gt; [SQL_TRANSACTION_NONE, SQL_TRANSACTION_READ_UNCOMMITTED, SQL_TRANSACTION_REPEATABLE_READ];
     * - return 12  (&#92;b1100)  =&gt; [SQL_TRANSACTION_REPEATABLE_READ, SQL_TRANSACTION_REPEATABLE_READ];
     * - return 13  (&#92;b1101)  =&gt; [SQL_TRANSACTION_NONE, SQL_TRANSACTION_REPEATABLE_READ, SQL_TRANSACTION_REPEATABLE_READ];
     * - return 14  (&#92;b1110)  =&gt; [SQL_TRANSACTION_READ_UNCOMMITTED, SQL_TRANSACTION_REPEATABLE_READ, SQL_TRANSACTION_REPEATABLE_READ];
     * - return 15  (&#92;b1111)  =&gt; [SQL_TRANSACTION_NONE, SQL_TRANSACTION_READ_UNCOMMITTED, SQL_TRANSACTION_REPEATABLE_READ, SQL_TRANSACTION_REPEATABLE_READ];
     * - return 16  (&#92;b10000) =&gt; [SQL_TRANSACTION_SERIALIZABLE];
     * - ...
     * Valid SQL positioned commands are described under `arrow.flight.protocol.sql.SqlTransactionIsolationLevel`.
     * </pre>
     *
     * <code>SQL_SUPPORTED_TRANSACTIONS_ISOLATION_LEVELS = 564;</code>
     */
    SQL_SUPPORTED_TRANSACTIONS_ISOLATION_LEVELS(564),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether a data definition statement within a transaction forces
     * the transaction to commit.
     *
     * Returns:
     * - false: if a data definition statement within a transaction does not force the transaction to commit;
     * - true: if a data definition statement within a transaction forces the transaction to commit.
     * </pre>
     *
     * <code>SQL_DATA_DEFINITION_CAUSES_TRANSACTION_COMMIT = 565;</code>
     */
    SQL_DATA_DEFINITION_CAUSES_TRANSACTION_COMMIT(565),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether a data definition statement within a transaction is ignored.
     *
     * Returns:
     * - false: if a data definition statement within a transaction is taken into account;
     * - true: a data definition statement within a transaction is ignored.
     * </pre>
     *
     * <code>SQL_DATA_DEFINITIONS_IN_TRANSACTIONS_IGNORED = 566;</code>
     */
    SQL_DATA_DEFINITIONS_IN_TRANSACTIONS_IGNORED(566),
    /**
     * <pre>
     *
     * Retrieves an int32 bitmask value representing the supported result set types.
     * The returned bitmask should be parsed in order to retrieve the supported result set types.
     *
     * For instance:
     * - return 0   (&#92;b0)     =&gt; [] (no supported result set types);
     * - return 1   (&#92;b1)     =&gt; [SQL_RESULT_SET_TYPE_UNSPECIFIED];
     * - return 2   (&#92;b10)    =&gt; [SQL_RESULT_SET_TYPE_FORWARD_ONLY];
     * - return 3   (&#92;b11)    =&gt; [SQL_RESULT_SET_TYPE_UNSPECIFIED, SQL_RESULT_SET_TYPE_FORWARD_ONLY];
     * - return 4   (&#92;b100)   =&gt; [SQL_RESULT_SET_TYPE_SCROLL_INSENSITIVE];
     * - return 5   (&#92;b101)   =&gt; [SQL_RESULT_SET_TYPE_UNSPECIFIED, SQL_RESULT_SET_TYPE_SCROLL_INSENSITIVE];
     * - return 6   (&#92;b110)   =&gt; [SQL_RESULT_SET_TYPE_FORWARD_ONLY, SQL_RESULT_SET_TYPE_SCROLL_INSENSITIVE];
     * - return 7   (&#92;b111)   =&gt; [SQL_RESULT_SET_TYPE_UNSPECIFIED, SQL_RESULT_SET_TYPE_FORWARD_ONLY, SQL_RESULT_SET_TYPE_SCROLL_INSENSITIVE];
     * - return 8   (&#92;b1000)  =&gt; [SQL_RESULT_SET_TYPE_SCROLL_SENSITIVE];
     * - ...
     * Valid result set types are described under `arrow.flight.protocol.sql.SqlSupportedResultSetType`.
     * </pre>
     *
     * <code>SQL_SUPPORTED_RESULT_SET_TYPES = 567;</code>
     */
    SQL_SUPPORTED_RESULT_SET_TYPES(567),
    /**
     * <pre>
     *
     * Returns an int32 bitmask value concurrency types supported for
     * `arrow.flight.protocol.sql.SqlSupportedResultSetType.SQL_RESULT_SET_TYPE_UNSPECIFIED`.
     *
     * For instance:
     * - return 0 (&#92;b0)   =&gt; [] (no supported concurrency types for this result set type)
     * - return 1 (&#92;b1)   =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED]
     * - return 2 (&#92;b10)  =&gt; [SQL_RESULT_SET_CONCURRENCY_READ_ONLY]
     * - return 3 (&#92;b11)  =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED, SQL_RESULT_SET_CONCURRENCY_READ_ONLY]
     * - return 4 (&#92;b100) =&gt; [SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * - return 5 (&#92;b101) =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED, SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * - return 6 (&#92;b110)  =&gt; [SQL_RESULT_SET_CONCURRENCY_READ_ONLY, SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * - return 7 (&#92;b111)  =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED, SQL_RESULT_SET_CONCURRENCY_READ_ONLY, SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * Valid result set types are described under `arrow.flight.protocol.sql.SqlSupportedResultSetConcurrency`.
     * </pre>
     *
     * <code>SQL_SUPPORTED_CONCURRENCIES_FOR_RESULT_SET_UNSPECIFIED = 568;</code>
     */
    SQL_SUPPORTED_CONCURRENCIES_FOR_RESULT_SET_UNSPECIFIED(568),
    /**
     * <pre>
     *
     * Returns an int32 bitmask value concurrency types supported for
     * `arrow.flight.protocol.sql.SqlSupportedResultSetType.SQL_RESULT_SET_TYPE_FORWARD_ONLY`.
     *
     * For instance:
     * - return 0 (&#92;b0)   =&gt; [] (no supported concurrency types for this result set type)
     * - return 1 (&#92;b1)   =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED]
     * - return 2 (&#92;b10)  =&gt; [SQL_RESULT_SET_CONCURRENCY_READ_ONLY]
     * - return 3 (&#92;b11)  =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED, SQL_RESULT_SET_CONCURRENCY_READ_ONLY]
     * - return 4 (&#92;b100) =&gt; [SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * - return 5 (&#92;b101) =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED, SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * - return 6 (&#92;b110)  =&gt; [SQL_RESULT_SET_CONCURRENCY_READ_ONLY, SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * - return 7 (&#92;b111)  =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED, SQL_RESULT_SET_CONCURRENCY_READ_ONLY, SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * Valid result set types are described under `arrow.flight.protocol.sql.SqlSupportedResultSetConcurrency`.
     * </pre>
     *
     * <code>SQL_SUPPORTED_CONCURRENCIES_FOR_RESULT_SET_FORWARD_ONLY = 569;</code>
     */
    SQL_SUPPORTED_CONCURRENCIES_FOR_RESULT_SET_FORWARD_ONLY(569),
    /**
     * <pre>
     *
     * Returns an int32 bitmask value concurrency types supported for
     * `arrow.flight.protocol.sql.SqlSupportedResultSetType.SQL_RESULT_SET_TYPE_SCROLL_SENSITIVE`.
     *
     * For instance:
     * - return 0 (&#92;b0)   =&gt; [] (no supported concurrency types for this result set type)
     * - return 1 (&#92;b1)   =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED]
     * - return 2 (&#92;b10)  =&gt; [SQL_RESULT_SET_CONCURRENCY_READ_ONLY]
     * - return 3 (&#92;b11)  =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED, SQL_RESULT_SET_CONCURRENCY_READ_ONLY]
     * - return 4 (&#92;b100) =&gt; [SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * - return 5 (&#92;b101) =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED, SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * - return 6 (&#92;b110)  =&gt; [SQL_RESULT_SET_CONCURRENCY_READ_ONLY, SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * - return 7 (&#92;b111)  =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED, SQL_RESULT_SET_CONCURRENCY_READ_ONLY, SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * Valid result set types are described under `arrow.flight.protocol.sql.SqlSupportedResultSetConcurrency`.
     * </pre>
     *
     * <code>SQL_SUPPORTED_CONCURRENCIES_FOR_RESULT_SET_SCROLL_SENSITIVE = 570;</code>
     */
    SQL_SUPPORTED_CONCURRENCIES_FOR_RESULT_SET_SCROLL_SENSITIVE(570),
    /**
     * <pre>
     *
     * Returns an int32 bitmask value concurrency types supported for
     * `arrow.flight.protocol.sql.SqlSupportedResultSetType.SQL_RESULT_SET_TYPE_SCROLL_INSENSITIVE`.
     *
     * For instance:
     * - return 0 (&#92;b0)   =&gt; [] (no supported concurrency types for this result set type)
     * - return 1 (&#92;b1)   =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED]
     * - return 2 (&#92;b10)  =&gt; [SQL_RESULT_SET_CONCURRENCY_READ_ONLY]
     * - return 3 (&#92;b11)  =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED, SQL_RESULT_SET_CONCURRENCY_READ_ONLY]
     * - return 4 (&#92;b100) =&gt; [SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * - return 5 (&#92;b101) =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED, SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * - return 6 (&#92;b110)  =&gt; [SQL_RESULT_SET_CONCURRENCY_READ_ONLY, SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * - return 7 (&#92;b111)  =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED, SQL_RESULT_SET_CONCURRENCY_READ_ONLY, SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * Valid result set types are described under `arrow.flight.protocol.sql.SqlSupportedResultSetConcurrency`.
     * </pre>
     *
     * <code>SQL_SUPPORTED_CONCURRENCIES_FOR_RESULT_SET_SCROLL_INSENSITIVE = 571;</code>
     */
    SQL_SUPPORTED_CONCURRENCIES_FOR_RESULT_SET_SCROLL_INSENSITIVE(571),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether this database supports batch updates.
     *
     * - false: if this database does not support batch updates;
     * - true: if this database supports batch updates.
     * </pre>
     *
     * <code>SQL_BATCH_UPDATES_SUPPORTED = 572;</code>
     */
    SQL_BATCH_UPDATES_SUPPORTED(572),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether this database supports savepoints.
     *
     * Returns:
     * - false: if this database does not support savepoints;
     * - true: if this database supports savepoints.
     * </pre>
     *
     * <code>SQL_SAVEPOINTS_SUPPORTED = 573;</code>
     */
    SQL_SAVEPOINTS_SUPPORTED(573),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether named parameters are supported in callable statements.
     *
     * Returns:
     * - false: if named parameters in callable statements are unsupported;
     * - true: if named parameters in callable statements are supported.
     * </pre>
     *
     * <code>SQL_NAMED_PARAMETERS_SUPPORTED = 574;</code>
     */
    SQL_NAMED_PARAMETERS_SUPPORTED(574),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether updates made to a LOB are made on a copy or directly to the LOB.
     *
     * Returns:
     * - false: if updates made to a LOB are made directly to the LOB;
     * - true: if updates made to a LOB are made on a copy.
     * </pre>
     *
     * <code>SQL_LOCATORS_UPDATE_COPY = 575;</code>
     */
    SQL_LOCATORS_UPDATE_COPY(575),
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether invoking user-defined or vendor functions
     * using the stored procedure escape syntax is supported.
     *
     * Returns:
     * - false: if invoking user-defined or vendor functions using the stored procedure escape syntax is unsupported;
     * - true: if invoking user-defined or vendor functions using the stored procedure escape syntax is supported.
     * </pre>
     *
     * <code>SQL_STORED_FUNCTIONS_USING_CALL_SYNTAX_SUPPORTED = 576;</code>
     */
    SQL_STORED_FUNCTIONS_USING_CALL_SYNTAX_SUPPORTED(576),
    UNRECOGNIZED(-1),
    ;

    /**
     * <pre>
     * Retrieves a UTF-8 string with the name of the Flight SQL Server.
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_NAME = 0;</code>
     */
    public static final int FLIGHT_SQL_SERVER_NAME_VALUE = 0;
    /**
     * <pre>
     * Retrieves a UTF-8 string with the native version of the Flight SQL Server.
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_VERSION = 1;</code>
     */
    public static final int FLIGHT_SQL_SERVER_VERSION_VALUE = 1;
    /**
     * <pre>
     * Retrieves a UTF-8 string with the Arrow format version of the Flight SQL Server.
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_ARROW_VERSION = 2;</code>
     */
    public static final int FLIGHT_SQL_SERVER_ARROW_VERSION_VALUE = 2;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether the Flight SQL Server is read only.
     *
     * Returns:
     * - false: if read-write
     * - true: if read only
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_READ_ONLY = 3;</code>
     */
    public static final int FLIGHT_SQL_SERVER_READ_ONLY_VALUE = 3;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether the Flight SQL Server supports executing
     * SQL queries.
     *
     * Note that the absence of this info (as opposed to a false value) does not necessarily
     * mean that SQL is not supported, as this property was not originally defined.
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_SQL = 4;</code>
     */
    public static final int FLIGHT_SQL_SERVER_SQL_VALUE = 4;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether the Flight SQL Server supports executing
     * Substrait plans.
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_SUBSTRAIT = 5;</code>
     */
    public static final int FLIGHT_SQL_SERVER_SUBSTRAIT_VALUE = 5;
    /**
     * <pre>
     *
     * Retrieves a string value indicating the minimum supported Substrait version, or null
     * if Substrait is not supported.
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_SUBSTRAIT_MIN_VERSION = 6;</code>
     */
    public static final int FLIGHT_SQL_SERVER_SUBSTRAIT_MIN_VERSION_VALUE = 6;
    /**
     * <pre>
     *
     * Retrieves a string value indicating the maximum supported Substrait version, or null
     * if Substrait is not supported.
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_SUBSTRAIT_MAX_VERSION = 7;</code>
     */
    public static final int FLIGHT_SQL_SERVER_SUBSTRAIT_MAX_VERSION_VALUE = 7;
    /**
     * <pre>
     *
     * Retrieves an int32 indicating whether the Flight SQL Server supports the
     * BeginTransaction/EndTransaction/BeginSavepoint/EndSavepoint actions.
     *
     * Even if this is not supported, the database may still support explicit "BEGIN
     * TRANSACTION"/"COMMIT" SQL statements (see SQL_TRANSACTIONS_SUPPORTED); this property
     * is only about whether the server implements the Flight SQL API endpoints.
     *
     * The possible values are listed in `SqlSupportedTransaction`.
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_TRANSACTION = 8;</code>
     */
    public static final int FLIGHT_SQL_SERVER_TRANSACTION_VALUE = 8;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether the Flight SQL Server supports explicit
     * query cancellation (the CancelQuery action).
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_CANCEL = 9;</code>
     */
    public static final int FLIGHT_SQL_SERVER_CANCEL_VALUE = 9;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether the Flight SQL Server supports executing
     * bulk ingestion.
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_BULK_INGESTION = 10;</code>
     */
    public static final int FLIGHT_SQL_SERVER_BULK_INGESTION_VALUE = 10;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether transactions are supported for bulk ingestion. If not, invoking
     * the method commit in the context of a bulk ingestion is a noop, and the isolation level is
     * `arrow.flight.protocol.sql.SqlTransactionIsolationLevel.TRANSACTION_NONE`.
     *
     * Returns:
     * - false: if bulk ingestion transactions are unsupported;
     * - true: if bulk ingestion transactions are supported.
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_INGEST_TRANSACTIONS_SUPPORTED = 11;</code>
     */
    public static final int FLIGHT_SQL_SERVER_INGEST_TRANSACTIONS_SUPPORTED_VALUE = 11;
    /**
     * <pre>
     *
     * Retrieves an int32 indicating the timeout (in milliseconds) for prepared statement handles.
     *
     * If 0, there is no timeout.  Servers should reset the timeout when the handle is used in a command.
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_STATEMENT_TIMEOUT = 100;</code>
     */
    public static final int FLIGHT_SQL_SERVER_STATEMENT_TIMEOUT_VALUE = 100;
    /**
     * <pre>
     *
     * Retrieves an int32 indicating the timeout (in milliseconds) for transactions, since transactions are not tied to a connection.
     *
     * If 0, there is no timeout.  Servers should reset the timeout when the handle is used in a command.
     * </pre>
     *
     * <code>FLIGHT_SQL_SERVER_TRANSACTION_TIMEOUT = 101;</code>
     */
    public static final int FLIGHT_SQL_SERVER_TRANSACTION_TIMEOUT_VALUE = 101;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether the Flight SQL Server supports CREATE and DROP of catalogs.
     *
     * Returns:
     * - false: if it doesn't support CREATE and DROP of catalogs.
     * - true: if it supports CREATE and DROP of catalogs.
     * </pre>
     *
     * <code>SQL_DDL_CATALOG = 500;</code>
     */
    public static final int SQL_DDL_CATALOG_VALUE = 500;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether the Flight SQL Server supports CREATE and DROP of schemas.
     *
     * Returns:
     * - false: if it doesn't support CREATE and DROP of schemas.
     * - true: if it supports CREATE and DROP of schemas.
     * </pre>
     *
     * <code>SQL_DDL_SCHEMA = 501;</code>
     */
    public static final int SQL_DDL_SCHEMA_VALUE = 501;
    /**
     * <pre>
     *
     * Indicates whether the Flight SQL Server supports CREATE and DROP of tables.
     *
     * Returns:
     * - false: if it doesn't support CREATE and DROP of tables.
     * - true: if it supports CREATE and DROP of tables.
     * </pre>
     *
     * <code>SQL_DDL_TABLE = 502;</code>
     */
    public static final int SQL_DDL_TABLE_VALUE = 502;
    /**
     * <pre>
     *
     * Retrieves a int32 ordinal representing the case sensitivity of catalog, table, schema and table names.
     *
     * The possible values are listed in `arrow.flight.protocol.sql.SqlSupportedCaseSensitivity`.
     * </pre>
     *
     * <code>SQL_IDENTIFIER_CASE = 503;</code>
     */
    public static final int SQL_IDENTIFIER_CASE_VALUE = 503;
    /**
     * <pre>
     * Retrieves a UTF-8 string with the supported character(s) used to surround a delimited identifier.
     * </pre>
     *
     * <code>SQL_IDENTIFIER_QUOTE_CHAR = 504;</code>
     */
    public static final int SQL_IDENTIFIER_QUOTE_CHAR_VALUE = 504;
    /**
     * <pre>
     *
     * Retrieves a int32 describing the case sensitivity of quoted identifiers.
     *
     * The possible values are listed in `arrow.flight.protocol.sql.SqlSupportedCaseSensitivity`.
     * </pre>
     *
     * <code>SQL_QUOTED_IDENTIFIER_CASE = 505;</code>
     */
    public static final int SQL_QUOTED_IDENTIFIER_CASE_VALUE = 505;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether all tables are selectable.
     *
     * Returns:
     * - false: if not all tables are selectable or if none are;
     * - true: if all tables are selectable.
     * </pre>
     *
     * <code>SQL_ALL_TABLES_ARE_SELECTABLE = 506;</code>
     */
    public static final int SQL_ALL_TABLES_ARE_SELECTABLE_VALUE = 506;
    /**
     * <pre>
     *
     * Retrieves the null ordering.
     *
     * Returns a int32 ordinal for the null ordering being used, as described in
     * `arrow.flight.protocol.sql.SqlNullOrdering`.
     * </pre>
     *
     * <code>SQL_NULL_ORDERING = 507;</code>
     */
    public static final int SQL_NULL_ORDERING_VALUE = 507;
    /**
     * <pre>
     * Retrieves a UTF-8 string list with values of the supported keywords.
     * </pre>
     *
     * <code>SQL_KEYWORDS = 508;</code>
     */
    public static final int SQL_KEYWORDS_VALUE = 508;
    /**
     * <pre>
     * Retrieves a UTF-8 string list with values of the supported numeric functions.
     * </pre>
     *
     * <code>SQL_NUMERIC_FUNCTIONS = 509;</code>
     */
    public static final int SQL_NUMERIC_FUNCTIONS_VALUE = 509;
    /**
     * <pre>
     * Retrieves a UTF-8 string list with values of the supported string functions.
     * </pre>
     *
     * <code>SQL_STRING_FUNCTIONS = 510;</code>
     */
    public static final int SQL_STRING_FUNCTIONS_VALUE = 510;
    /**
     * <pre>
     * Retrieves a UTF-8 string list with values of the supported system functions.
     * </pre>
     *
     * <code>SQL_SYSTEM_FUNCTIONS = 511;</code>
     */
    public static final int SQL_SYSTEM_FUNCTIONS_VALUE = 511;
    /**
     * <pre>
     * Retrieves a UTF-8 string list with values of the supported datetime functions.
     * </pre>
     *
     * <code>SQL_DATETIME_FUNCTIONS = 512;</code>
     */
    public static final int SQL_DATETIME_FUNCTIONS_VALUE = 512;
    /**
     * <pre>
     *
     * Retrieves the UTF-8 string that can be used to escape wildcard characters.
     * This is the string that can be used to escape '_' or '%' in the catalog search parameters that are a pattern
     * (and therefore use one of the wildcard characters).
     * The '_' character represents any single character; the '%' character represents any sequence of zero or more
     * characters.
     * </pre>
     *
     * <code>SQL_SEARCH_STRING_ESCAPE = 513;</code>
     */
    public static final int SQL_SEARCH_STRING_ESCAPE_VALUE = 513;
    /**
     * <pre>
     *
     * Retrieves a UTF-8 string with all the "extra" characters that can be used in unquoted identifier names
     * (those beyond a-z, A-Z, 0-9 and _).
     * </pre>
     *
     * <code>SQL_EXTRA_NAME_CHARACTERS = 514;</code>
     */
    public static final int SQL_EXTRA_NAME_CHARACTERS_VALUE = 514;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether column aliasing is supported.
     * If so, the SQL AS clause can be used to provide names for computed columns or to provide alias names for columns
     * as required.
     *
     * Returns:
     * - false: if column aliasing is unsupported;
     * - true: if column aliasing is supported.
     * </pre>
     *
     * <code>SQL_SUPPORTS_COLUMN_ALIASING = 515;</code>
     */
    public static final int SQL_SUPPORTS_COLUMN_ALIASING_VALUE = 515;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether concatenations between null and non-null values being
     * null are supported.
     *
     * - Returns:
     * - false: if concatenations between null and non-null values being null are unsupported;
     * - true: if concatenations between null and non-null values being null are supported.
     * </pre>
     *
     * <code>SQL_NULL_PLUS_NULL_IS_NULL = 516;</code>
     */
    public static final int SQL_NULL_PLUS_NULL_IS_NULL_VALUE = 516;
    /**
     * <pre>
     *
     * Retrieves a map where the key is the type to convert from and the value is a list with the types to convert to,
     * indicating the supported conversions. Each key and each item on the list value is a value to a predefined type on
     * SqlSupportsConvert enum.
     * The returned map will be:  map&lt;int32, list&lt;int32&gt;&gt;
     * </pre>
     *
     * <code>SQL_SUPPORTS_CONVERT = 517;</code>
     */
    public static final int SQL_SUPPORTS_CONVERT_VALUE = 517;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether, when table correlation names are supported,
     * they are restricted to being different from the names of the tables.
     *
     * Returns:
     * - false: if table correlation names are unsupported;
     * - true: if table correlation names are supported.
     * </pre>
     *
     * <code>SQL_SUPPORTS_TABLE_CORRELATION_NAMES = 518;</code>
     */
    public static final int SQL_SUPPORTS_TABLE_CORRELATION_NAMES_VALUE = 518;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether, when table correlation names are supported,
     * they are restricted to being different from the names of the tables.
     *
     * Returns:
     * - false: if different table correlation names are unsupported;
     * - true: if different table correlation names are supported
     * </pre>
     *
     * <code>SQL_SUPPORTS_DIFFERENT_TABLE_CORRELATION_NAMES = 519;</code>
     */
    public static final int SQL_SUPPORTS_DIFFERENT_TABLE_CORRELATION_NAMES_VALUE = 519;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether expressions in ORDER BY lists are supported.
     *
     * Returns:
     * - false: if expressions in ORDER BY are unsupported;
     * - true: if expressions in ORDER BY are supported;
     * </pre>
     *
     * <code>SQL_SUPPORTS_EXPRESSIONS_IN_ORDER_BY = 520;</code>
     */
    public static final int SQL_SUPPORTS_EXPRESSIONS_IN_ORDER_BY_VALUE = 520;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether using a column that is not in the SELECT statement in a GROUP BY
     * clause is supported.
     *
     * Returns:
     * - false: if using a column that is not in the SELECT statement in a GROUP BY clause is unsupported;
     * - true: if using a column that is not in the SELECT statement in a GROUP BY clause is supported.
     * </pre>
     *
     * <code>SQL_SUPPORTS_ORDER_BY_UNRELATED = 521;</code>
     */
    public static final int SQL_SUPPORTS_ORDER_BY_UNRELATED_VALUE = 521;
    /**
     * <pre>
     *
     * Retrieves the supported GROUP BY commands;
     *
     * Returns an int32 bitmask value representing the supported commands.
     * The returned bitmask should be parsed in order to retrieve the supported commands.
     *
     * For instance:
     * - return 0 (&#92;b0)   =&gt; [] (GROUP BY is unsupported);
     * - return 1 (&#92;b1)   =&gt; [SQL_GROUP_BY_UNRELATED];
     * - return 2 (&#92;b10)  =&gt; [SQL_GROUP_BY_BEYOND_SELECT];
     * - return 3 (&#92;b11)  =&gt; [SQL_GROUP_BY_UNRELATED, SQL_GROUP_BY_BEYOND_SELECT].
     * Valid GROUP BY types are described under `arrow.flight.protocol.sql.SqlSupportedGroupBy`.
     * </pre>
     *
     * <code>SQL_SUPPORTED_GROUP_BY = 522;</code>
     */
    public static final int SQL_SUPPORTED_GROUP_BY_VALUE = 522;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether specifying a LIKE escape clause is supported.
     *
     * Returns:
     * - false: if specifying a LIKE escape clause is unsupported;
     * - true: if specifying a LIKE escape clause is supported.
     * </pre>
     *
     * <code>SQL_SUPPORTS_LIKE_ESCAPE_CLAUSE = 523;</code>
     */
    public static final int SQL_SUPPORTS_LIKE_ESCAPE_CLAUSE_VALUE = 523;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether columns may be defined as non-nullable.
     *
     * Returns:
     * - false: if columns cannot be defined as non-nullable;
     * - true: if columns may be defined as non-nullable.
     * </pre>
     *
     * <code>SQL_SUPPORTS_NON_NULLABLE_COLUMNS = 524;</code>
     */
    public static final int SQL_SUPPORTS_NON_NULLABLE_COLUMNS_VALUE = 524;
    /**
     * <pre>
     *
     * Retrieves the supported SQL grammar level as per the ODBC specification.
     *
     * Returns an int32 bitmask value representing the supported SQL grammar level.
     * The returned bitmask should be parsed in order to retrieve the supported grammar levels.
     *
     * For instance:
     * - return 0 (&#92;b0)   =&gt; [] (SQL grammar is unsupported);
     * - return 1 (&#92;b1)   =&gt; [SQL_MINIMUM_GRAMMAR];
     * - return 2 (&#92;b10)  =&gt; [SQL_CORE_GRAMMAR];
     * - return 3 (&#92;b11)  =&gt; [SQL_MINIMUM_GRAMMAR, SQL_CORE_GRAMMAR];
     * - return 4 (&#92;b100) =&gt; [SQL_EXTENDED_GRAMMAR];
     * - return 5 (&#92;b101) =&gt; [SQL_MINIMUM_GRAMMAR, SQL_EXTENDED_GRAMMAR];
     * - return 6 (&#92;b110) =&gt; [SQL_CORE_GRAMMAR, SQL_EXTENDED_GRAMMAR];
     * - return 7 (&#92;b111) =&gt; [SQL_MINIMUM_GRAMMAR, SQL_CORE_GRAMMAR, SQL_EXTENDED_GRAMMAR].
     * Valid SQL grammar levels are described under `arrow.flight.protocol.sql.SupportedSqlGrammar`.
     * </pre>
     *
     * <code>SQL_SUPPORTED_GRAMMAR = 525;</code>
     */
    public static final int SQL_SUPPORTED_GRAMMAR_VALUE = 525;
    /**
     * <pre>
     *
     * Retrieves the supported ANSI92 SQL grammar level.
     *
     * Returns an int32 bitmask value representing the supported ANSI92 SQL grammar level.
     * The returned bitmask should be parsed in order to retrieve the supported commands.
     *
     * For instance:
     * - return 0 (&#92;b0)   =&gt; [] (ANSI92 SQL grammar is unsupported);
     * - return 1 (&#92;b1)   =&gt; [ANSI92_ENTRY_SQL];
     * - return 2 (&#92;b10)  =&gt; [ANSI92_INTERMEDIATE_SQL];
     * - return 3 (&#92;b11)  =&gt; [ANSI92_ENTRY_SQL, ANSI92_INTERMEDIATE_SQL];
     * - return 4 (&#92;b100) =&gt; [ANSI92_FULL_SQL];
     * - return 5 (&#92;b101) =&gt; [ANSI92_ENTRY_SQL, ANSI92_FULL_SQL];
     * - return 6 (&#92;b110) =&gt; [ANSI92_INTERMEDIATE_SQL, ANSI92_FULL_SQL];
     * - return 7 (&#92;b111) =&gt; [ANSI92_ENTRY_SQL, ANSI92_INTERMEDIATE_SQL, ANSI92_FULL_SQL].
     * Valid ANSI92 SQL grammar levels are described under `arrow.flight.protocol.sql.SupportedAnsi92SqlGrammarLevel`.
     * </pre>
     *
     * <code>SQL_ANSI92_SUPPORTED_LEVEL = 526;</code>
     */
    public static final int SQL_ANSI92_SUPPORTED_LEVEL_VALUE = 526;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether the SQL Integrity Enhancement Facility is supported.
     *
     * Returns:
     * - false: if the SQL Integrity Enhancement Facility is supported;
     * - true: if the SQL Integrity Enhancement Facility is supported.
     * </pre>
     *
     * <code>SQL_SUPPORTS_INTEGRITY_ENHANCEMENT_FACILITY = 527;</code>
     */
    public static final int SQL_SUPPORTS_INTEGRITY_ENHANCEMENT_FACILITY_VALUE = 527;
    /**
     * <pre>
     *
     * Retrieves the support level for SQL OUTER JOINs.
     *
     * Returns a int32 ordinal for the SQL ordering being used, as described in
     * `arrow.flight.protocol.sql.SqlOuterJoinsSupportLevel`.
     * </pre>
     *
     * <code>SQL_OUTER_JOINS_SUPPORT_LEVEL = 528;</code>
     */
    public static final int SQL_OUTER_JOINS_SUPPORT_LEVEL_VALUE = 528;
    /**
     * <pre>
     * Retrieves a UTF-8 string with the preferred term for "schema".
     * </pre>
     *
     * <code>SQL_SCHEMA_TERM = 529;</code>
     */
    public static final int SQL_SCHEMA_TERM_VALUE = 529;
    /**
     * <pre>
     * Retrieves a UTF-8 string with the preferred term for "procedure".
     * </pre>
     *
     * <code>SQL_PROCEDURE_TERM = 530;</code>
     */
    public static final int SQL_PROCEDURE_TERM_VALUE = 530;
    /**
     * <pre>
     *
     * Retrieves a UTF-8 string with the preferred term for "catalog".
     * If a empty string is returned its assumed that the server does NOT supports catalogs.
     * </pre>
     *
     * <code>SQL_CATALOG_TERM = 531;</code>
     */
    public static final int SQL_CATALOG_TERM_VALUE = 531;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether a catalog appears at the start of a fully qualified table name.
     *
     * - false: if a catalog does not appear at the start of a fully qualified table name;
     * - true: if a catalog appears at the start of a fully qualified table name.
     * </pre>
     *
     * <code>SQL_CATALOG_AT_START = 532;</code>
     */
    public static final int SQL_CATALOG_AT_START_VALUE = 532;
    /**
     * <pre>
     *
     * Retrieves the supported actions for a SQL schema.
     *
     * Returns an int32 bitmask value representing the supported actions for a SQL schema.
     * The returned bitmask should be parsed in order to retrieve the supported actions for a SQL schema.
     *
     * For instance:
     * - return 0 (&#92;b0)   =&gt; [] (no supported actions for SQL schema);
     * - return 1 (&#92;b1)   =&gt; [SQL_ELEMENT_IN_PROCEDURE_CALLS];
     * - return 2 (&#92;b10)  =&gt; [SQL_ELEMENT_IN_INDEX_DEFINITIONS];
     * - return 3 (&#92;b11)  =&gt; [SQL_ELEMENT_IN_PROCEDURE_CALLS, SQL_ELEMENT_IN_INDEX_DEFINITIONS];
     * - return 4 (&#92;b100) =&gt; [SQL_ELEMENT_IN_PRIVILEGE_DEFINITIONS];
     * - return 5 (&#92;b101) =&gt; [SQL_ELEMENT_IN_PROCEDURE_CALLS, SQL_ELEMENT_IN_PRIVILEGE_DEFINITIONS];
     * - return 6 (&#92;b110) =&gt; [SQL_ELEMENT_IN_INDEX_DEFINITIONS, SQL_ELEMENT_IN_PRIVILEGE_DEFINITIONS];
     * - return 7 (&#92;b111) =&gt; [SQL_ELEMENT_IN_PROCEDURE_CALLS, SQL_ELEMENT_IN_INDEX_DEFINITIONS, SQL_ELEMENT_IN_PRIVILEGE_DEFINITIONS].
     * Valid actions for a SQL schema described under `arrow.flight.protocol.sql.SqlSupportedElementActions`.
     * </pre>
     *
     * <code>SQL_SCHEMAS_SUPPORTED_ACTIONS = 533;</code>
     */
    public static final int SQL_SCHEMAS_SUPPORTED_ACTIONS_VALUE = 533;
    /**
     * <pre>
     *
     * Retrieves the supported actions for a SQL schema.
     *
     * Returns an int32 bitmask value representing the supported actions for a SQL catalog.
     * The returned bitmask should be parsed in order to retrieve the supported actions for a SQL catalog.
     *
     * For instance:
     * - return 0 (&#92;b0)   =&gt; [] (no supported actions for SQL catalog);
     * - return 1 (&#92;b1)   =&gt; [SQL_ELEMENT_IN_PROCEDURE_CALLS];
     * - return 2 (&#92;b10)  =&gt; [SQL_ELEMENT_IN_INDEX_DEFINITIONS];
     * - return 3 (&#92;b11)  =&gt; [SQL_ELEMENT_IN_PROCEDURE_CALLS, SQL_ELEMENT_IN_INDEX_DEFINITIONS];
     * - return 4 (&#92;b100) =&gt; [SQL_ELEMENT_IN_PRIVILEGE_DEFINITIONS];
     * - return 5 (&#92;b101) =&gt; [SQL_ELEMENT_IN_PROCEDURE_CALLS, SQL_ELEMENT_IN_PRIVILEGE_DEFINITIONS];
     * - return 6 (&#92;b110) =&gt; [SQL_ELEMENT_IN_INDEX_DEFINITIONS, SQL_ELEMENT_IN_PRIVILEGE_DEFINITIONS];
     * - return 7 (&#92;b111) =&gt; [SQL_ELEMENT_IN_PROCEDURE_CALLS, SQL_ELEMENT_IN_INDEX_DEFINITIONS, SQL_ELEMENT_IN_PRIVILEGE_DEFINITIONS].
     * Valid actions for a SQL catalog are described under `arrow.flight.protocol.sql.SqlSupportedElementActions`.
     * </pre>
     *
     * <code>SQL_CATALOGS_SUPPORTED_ACTIONS = 534;</code>
     */
    public static final int SQL_CATALOGS_SUPPORTED_ACTIONS_VALUE = 534;
    /**
     * <pre>
     *
     * Retrieves the supported SQL positioned commands.
     *
     * Returns an int32 bitmask value representing the supported SQL positioned commands.
     * The returned bitmask should be parsed in order to retrieve the supported SQL positioned commands.
     *
     * For instance:
     * - return 0 (&#92;b0)   =&gt; [] (no supported SQL positioned commands);
     * - return 1 (&#92;b1)   =&gt; [SQL_POSITIONED_DELETE];
     * - return 2 (&#92;b10)  =&gt; [SQL_POSITIONED_UPDATE];
     * - return 3 (&#92;b11)  =&gt; [SQL_POSITIONED_DELETE, SQL_POSITIONED_UPDATE].
     * Valid SQL positioned commands are described under `arrow.flight.protocol.sql.SqlSupportedPositionedCommands`.
     * </pre>
     *
     * <code>SQL_SUPPORTED_POSITIONED_COMMANDS = 535;</code>
     */
    public static final int SQL_SUPPORTED_POSITIONED_COMMANDS_VALUE = 535;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether SELECT FOR UPDATE statements are supported.
     *
     * Returns:
     * - false: if SELECT FOR UPDATE statements are unsupported;
     * - true: if SELECT FOR UPDATE statements are supported.
     * </pre>
     *
     * <code>SQL_SELECT_FOR_UPDATE_SUPPORTED = 536;</code>
     */
    public static final int SQL_SELECT_FOR_UPDATE_SUPPORTED_VALUE = 536;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether stored procedure calls that use the stored procedure escape syntax
     * are supported.
     *
     * Returns:
     * - false: if stored procedure calls that use the stored procedure escape syntax are unsupported;
     * - true: if stored procedure calls that use the stored procedure escape syntax are supported.
     * </pre>
     *
     * <code>SQL_STORED_PROCEDURES_SUPPORTED = 537;</code>
     */
    public static final int SQL_STORED_PROCEDURES_SUPPORTED_VALUE = 537;
    /**
     * <pre>
     *
     * Retrieves the supported SQL subqueries.
     *
     * Returns an int32 bitmask value representing the supported SQL subqueries.
     * The returned bitmask should be parsed in order to retrieve the supported SQL subqueries.
     *
     * For instance:
     * - return 0   (&#92;b0)     =&gt; [] (no supported SQL subqueries);
     * - return 1   (&#92;b1)     =&gt; [SQL_SUBQUERIES_IN_COMPARISONS];
     * - return 2   (&#92;b10)    =&gt; [SQL_SUBQUERIES_IN_EXISTS];
     * - return 3   (&#92;b11)    =&gt; [SQL_SUBQUERIES_IN_COMPARISONS, SQL_SUBQUERIES_IN_EXISTS];
     * - return 4   (&#92;b100)   =&gt; [SQL_SUBQUERIES_IN_INS];
     * - return 5   (&#92;b101)   =&gt; [SQL_SUBQUERIES_IN_COMPARISONS, SQL_SUBQUERIES_IN_INS];
     * - return 6   (&#92;b110)   =&gt; [SQL_SUBQUERIES_IN_INS, SQL_SUBQUERIES_IN_EXISTS];
     * - return 7   (&#92;b111)   =&gt; [SQL_SUBQUERIES_IN_COMPARISONS, SQL_SUBQUERIES_IN_EXISTS, SQL_SUBQUERIES_IN_INS];
     * - return 8   (&#92;b1000)  =&gt; [SQL_SUBQUERIES_IN_QUANTIFIEDS];
     * - return 9   (&#92;b1001)  =&gt; [SQL_SUBQUERIES_IN_COMPARISONS, SQL_SUBQUERIES_IN_QUANTIFIEDS];
     * - return 10  (&#92;b1010)  =&gt; [SQL_SUBQUERIES_IN_EXISTS, SQL_SUBQUERIES_IN_QUANTIFIEDS];
     * - return 11  (&#92;b1011)  =&gt; [SQL_SUBQUERIES_IN_COMPARISONS, SQL_SUBQUERIES_IN_EXISTS, SQL_SUBQUERIES_IN_QUANTIFIEDS];
     * - return 12  (&#92;b1100)  =&gt; [SQL_SUBQUERIES_IN_INS, SQL_SUBQUERIES_IN_QUANTIFIEDS];
     * - return 13  (&#92;b1101)  =&gt; [SQL_SUBQUERIES_IN_COMPARISONS, SQL_SUBQUERIES_IN_INS, SQL_SUBQUERIES_IN_QUANTIFIEDS];
     * - return 14  (&#92;b1110)  =&gt; [SQL_SUBQUERIES_IN_EXISTS, SQL_SUBQUERIES_IN_INS, SQL_SUBQUERIES_IN_QUANTIFIEDS];
     * - return 15  (&#92;b1111)  =&gt; [SQL_SUBQUERIES_IN_COMPARISONS, SQL_SUBQUERIES_IN_EXISTS, SQL_SUBQUERIES_IN_INS, SQL_SUBQUERIES_IN_QUANTIFIEDS];
     * - ...
     * Valid SQL subqueries are described under `arrow.flight.protocol.sql.SqlSupportedSubqueries`.
     * </pre>
     *
     * <code>SQL_SUPPORTED_SUBQUERIES = 538;</code>
     */
    public static final int SQL_SUPPORTED_SUBQUERIES_VALUE = 538;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether correlated subqueries are supported.
     *
     * Returns:
     * - false: if correlated subqueries are unsupported;
     * - true: if correlated subqueries are supported.
     * </pre>
     *
     * <code>SQL_CORRELATED_SUBQUERIES_SUPPORTED = 539;</code>
     */
    public static final int SQL_CORRELATED_SUBQUERIES_SUPPORTED_VALUE = 539;
    /**
     * <pre>
     *
     * Retrieves the supported SQL UNIONs.
     *
     * Returns an int32 bitmask value representing the supported SQL UNIONs.
     * The returned bitmask should be parsed in order to retrieve the supported SQL UNIONs.
     *
     * For instance:
     * - return 0 (&#92;b0)   =&gt; [] (no supported SQL positioned commands);
     * - return 1 (&#92;b1)   =&gt; [SQL_UNION];
     * - return 2 (&#92;b10)  =&gt; [SQL_UNION_ALL];
     * - return 3 (&#92;b11)  =&gt; [SQL_UNION, SQL_UNION_ALL].
     * Valid SQL positioned commands are described under `arrow.flight.protocol.sql.SqlSupportedUnions`.
     * </pre>
     *
     * <code>SQL_SUPPORTED_UNIONS = 540;</code>
     */
    public static final int SQL_SUPPORTED_UNIONS_VALUE = 540;
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of hex characters allowed in an inline binary literal.
     * </pre>
     *
     * <code>SQL_MAX_BINARY_LITERAL_LENGTH = 541;</code>
     */
    public static final int SQL_MAX_BINARY_LITERAL_LENGTH_VALUE = 541;
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of characters allowed for a character literal.
     * </pre>
     *
     * <code>SQL_MAX_CHAR_LITERAL_LENGTH = 542;</code>
     */
    public static final int SQL_MAX_CHAR_LITERAL_LENGTH_VALUE = 542;
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of characters allowed for a column name.
     * </pre>
     *
     * <code>SQL_MAX_COLUMN_NAME_LENGTH = 543;</code>
     */
    public static final int SQL_MAX_COLUMN_NAME_LENGTH_VALUE = 543;
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of columns allowed in a GROUP BY clause.
     * </pre>
     *
     * <code>SQL_MAX_COLUMNS_IN_GROUP_BY = 544;</code>
     */
    public static final int SQL_MAX_COLUMNS_IN_GROUP_BY_VALUE = 544;
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of columns allowed in an index.
     * </pre>
     *
     * <code>SQL_MAX_COLUMNS_IN_INDEX = 545;</code>
     */
    public static final int SQL_MAX_COLUMNS_IN_INDEX_VALUE = 545;
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of columns allowed in an ORDER BY clause.
     * </pre>
     *
     * <code>SQL_MAX_COLUMNS_IN_ORDER_BY = 546;</code>
     */
    public static final int SQL_MAX_COLUMNS_IN_ORDER_BY_VALUE = 546;
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of columns allowed in a SELECT list.
     * </pre>
     *
     * <code>SQL_MAX_COLUMNS_IN_SELECT = 547;</code>
     */
    public static final int SQL_MAX_COLUMNS_IN_SELECT_VALUE = 547;
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of columns allowed in a table.
     * </pre>
     *
     * <code>SQL_MAX_COLUMNS_IN_TABLE = 548;</code>
     */
    public static final int SQL_MAX_COLUMNS_IN_TABLE_VALUE = 548;
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of concurrent connections possible.
     * </pre>
     *
     * <code>SQL_MAX_CONNECTIONS = 549;</code>
     */
    public static final int SQL_MAX_CONNECTIONS_VALUE = 549;
    /**
     * <pre>
     * Retrieves a int64 value the maximum number of characters allowed in a cursor name.
     * </pre>
     *
     * <code>SQL_MAX_CURSOR_NAME_LENGTH = 550;</code>
     */
    public static final int SQL_MAX_CURSOR_NAME_LENGTH_VALUE = 550;
    /**
     * <pre>
     *
     * Retrieves a int64 value representing the maximum number of bytes allowed for an index,
     * including all of the parts of the index.
     * </pre>
     *
     * <code>SQL_MAX_INDEX_LENGTH = 551;</code>
     */
    public static final int SQL_MAX_INDEX_LENGTH_VALUE = 551;
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of characters allowed in a schema name.
     * </pre>
     *
     * <code>SQL_DB_SCHEMA_NAME_LENGTH = 552;</code>
     */
    public static final int SQL_DB_SCHEMA_NAME_LENGTH_VALUE = 552;
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of characters allowed in a procedure name.
     * </pre>
     *
     * <code>SQL_MAX_PROCEDURE_NAME_LENGTH = 553;</code>
     */
    public static final int SQL_MAX_PROCEDURE_NAME_LENGTH_VALUE = 553;
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of characters allowed in a catalog name.
     * </pre>
     *
     * <code>SQL_MAX_CATALOG_NAME_LENGTH = 554;</code>
     */
    public static final int SQL_MAX_CATALOG_NAME_LENGTH_VALUE = 554;
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of bytes allowed in a single row.
     * </pre>
     *
     * <code>SQL_MAX_ROW_SIZE = 555;</code>
     */
    public static final int SQL_MAX_ROW_SIZE_VALUE = 555;
    /**
     * <pre>
     *
     * Retrieves a boolean indicating whether the return value for the JDBC method getMaxRowSize includes the SQL
     * data types LONGVARCHAR and LONGVARBINARY.
     *
     * Returns:
     * - false: if return value for the JDBC method getMaxRowSize does
     *          not include the SQL data types LONGVARCHAR and LONGVARBINARY;
     * - true: if return value for the JDBC method getMaxRowSize includes
     *         the SQL data types LONGVARCHAR and LONGVARBINARY.
     * </pre>
     *
     * <code>SQL_MAX_ROW_SIZE_INCLUDES_BLOBS = 556;</code>
     */
    public static final int SQL_MAX_ROW_SIZE_INCLUDES_BLOBS_VALUE = 556;
    /**
     * <pre>
     *
     * Retrieves a int64 value representing the maximum number of characters allowed for an SQL statement;
     * a result of 0 (zero) means that there is no limit or the limit is not known.
     * </pre>
     *
     * <code>SQL_MAX_STATEMENT_LENGTH = 557;</code>
     */
    public static final int SQL_MAX_STATEMENT_LENGTH_VALUE = 557;
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of active statements that can be open at the same time.
     * </pre>
     *
     * <code>SQL_MAX_STATEMENTS = 558;</code>
     */
    public static final int SQL_MAX_STATEMENTS_VALUE = 558;
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of characters allowed in a table name.
     * </pre>
     *
     * <code>SQL_MAX_TABLE_NAME_LENGTH = 559;</code>
     */
    public static final int SQL_MAX_TABLE_NAME_LENGTH_VALUE = 559;
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of tables allowed in a SELECT statement.
     * </pre>
     *
     * <code>SQL_MAX_TABLES_IN_SELECT = 560;</code>
     */
    public static final int SQL_MAX_TABLES_IN_SELECT_VALUE = 560;
    /**
     * <pre>
     * Retrieves a int64 value representing the maximum number of characters allowed in a user name.
     * </pre>
     *
     * <code>SQL_MAX_USERNAME_LENGTH = 561;</code>
     */
    public static final int SQL_MAX_USERNAME_LENGTH_VALUE = 561;
    /**
     * <pre>
     *
     * Retrieves this database's default transaction isolation level as described in
     * `arrow.flight.protocol.sql.SqlTransactionIsolationLevel`.
     *
     * Returns a int32 ordinal for the SQL transaction isolation level.
     * </pre>
     *
     * <code>SQL_DEFAULT_TRANSACTION_ISOLATION = 562;</code>
     */
    public static final int SQL_DEFAULT_TRANSACTION_ISOLATION_VALUE = 562;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether transactions are supported. If not, invoking the method commit is a
     * noop, and the isolation level is `arrow.flight.protocol.sql.SqlTransactionIsolationLevel.TRANSACTION_NONE`.
     *
     * Returns:
     * - false: if transactions are unsupported;
     * - true: if transactions are supported.
     * </pre>
     *
     * <code>SQL_TRANSACTIONS_SUPPORTED = 563;</code>
     */
    public static final int SQL_TRANSACTIONS_SUPPORTED_VALUE = 563;
    /**
     * <pre>
     *
     * Retrieves the supported transactions isolation levels.
     *
     * Returns an int32 bitmask value representing the supported transactions isolation levels.
     * The returned bitmask should be parsed in order to retrieve the supported transactions isolation levels.
     *
     * For instance:
     * - return 0   (&#92;b0)     =&gt; [] (no supported SQL transactions isolation levels);
     * - return 1   (&#92;b1)     =&gt; [SQL_TRANSACTION_NONE];
     * - return 2   (&#92;b10)    =&gt; [SQL_TRANSACTION_READ_UNCOMMITTED];
     * - return 3   (&#92;b11)    =&gt; [SQL_TRANSACTION_NONE, SQL_TRANSACTION_READ_UNCOMMITTED];
     * - return 4   (&#92;b100)   =&gt; [SQL_TRANSACTION_REPEATABLE_READ];
     * - return 5   (&#92;b101)   =&gt; [SQL_TRANSACTION_NONE, SQL_TRANSACTION_REPEATABLE_READ];
     * - return 6   (&#92;b110)   =&gt; [SQL_TRANSACTION_READ_UNCOMMITTED, SQL_TRANSACTION_REPEATABLE_READ];
     * - return 7   (&#92;b111)   =&gt; [SQL_TRANSACTION_NONE, SQL_TRANSACTION_READ_UNCOMMITTED, SQL_TRANSACTION_REPEATABLE_READ];
     * - return 8   (&#92;b1000)  =&gt; [SQL_TRANSACTION_REPEATABLE_READ];
     * - return 9   (&#92;b1001)  =&gt; [SQL_TRANSACTION_NONE, SQL_TRANSACTION_REPEATABLE_READ];
     * - return 10  (&#92;b1010)  =&gt; [SQL_TRANSACTION_READ_UNCOMMITTED, SQL_TRANSACTION_REPEATABLE_READ];
     * - return 11  (&#92;b1011)  =&gt; [SQL_TRANSACTION_NONE, SQL_TRANSACTION_READ_UNCOMMITTED, SQL_TRANSACTION_REPEATABLE_READ];
     * - return 12  (&#92;b1100)  =&gt; [SQL_TRANSACTION_REPEATABLE_READ, SQL_TRANSACTION_REPEATABLE_READ];
     * - return 13  (&#92;b1101)  =&gt; [SQL_TRANSACTION_NONE, SQL_TRANSACTION_REPEATABLE_READ, SQL_TRANSACTION_REPEATABLE_READ];
     * - return 14  (&#92;b1110)  =&gt; [SQL_TRANSACTION_READ_UNCOMMITTED, SQL_TRANSACTION_REPEATABLE_READ, SQL_TRANSACTION_REPEATABLE_READ];
     * - return 15  (&#92;b1111)  =&gt; [SQL_TRANSACTION_NONE, SQL_TRANSACTION_READ_UNCOMMITTED, SQL_TRANSACTION_REPEATABLE_READ, SQL_TRANSACTION_REPEATABLE_READ];
     * - return 16  (&#92;b10000) =&gt; [SQL_TRANSACTION_SERIALIZABLE];
     * - ...
     * Valid SQL positioned commands are described under `arrow.flight.protocol.sql.SqlTransactionIsolationLevel`.
     * </pre>
     *
     * <code>SQL_SUPPORTED_TRANSACTIONS_ISOLATION_LEVELS = 564;</code>
     */
    public static final int SQL_SUPPORTED_TRANSACTIONS_ISOLATION_LEVELS_VALUE = 564;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether a data definition statement within a transaction forces
     * the transaction to commit.
     *
     * Returns:
     * - false: if a data definition statement within a transaction does not force the transaction to commit;
     * - true: if a data definition statement within a transaction forces the transaction to commit.
     * </pre>
     *
     * <code>SQL_DATA_DEFINITION_CAUSES_TRANSACTION_COMMIT = 565;</code>
     */
    public static final int SQL_DATA_DEFINITION_CAUSES_TRANSACTION_COMMIT_VALUE = 565;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether a data definition statement within a transaction is ignored.
     *
     * Returns:
     * - false: if a data definition statement within a transaction is taken into account;
     * - true: a data definition statement within a transaction is ignored.
     * </pre>
     *
     * <code>SQL_DATA_DEFINITIONS_IN_TRANSACTIONS_IGNORED = 566;</code>
     */
    public static final int SQL_DATA_DEFINITIONS_IN_TRANSACTIONS_IGNORED_VALUE = 566;
    /**
     * <pre>
     *
     * Retrieves an int32 bitmask value representing the supported result set types.
     * The returned bitmask should be parsed in order to retrieve the supported result set types.
     *
     * For instance:
     * - return 0   (&#92;b0)     =&gt; [] (no supported result set types);
     * - return 1   (&#92;b1)     =&gt; [SQL_RESULT_SET_TYPE_UNSPECIFIED];
     * - return 2   (&#92;b10)    =&gt; [SQL_RESULT_SET_TYPE_FORWARD_ONLY];
     * - return 3   (&#92;b11)    =&gt; [SQL_RESULT_SET_TYPE_UNSPECIFIED, SQL_RESULT_SET_TYPE_FORWARD_ONLY];
     * - return 4   (&#92;b100)   =&gt; [SQL_RESULT_SET_TYPE_SCROLL_INSENSITIVE];
     * - return 5   (&#92;b101)   =&gt; [SQL_RESULT_SET_TYPE_UNSPECIFIED, SQL_RESULT_SET_TYPE_SCROLL_INSENSITIVE];
     * - return 6   (&#92;b110)   =&gt; [SQL_RESULT_SET_TYPE_FORWARD_ONLY, SQL_RESULT_SET_TYPE_SCROLL_INSENSITIVE];
     * - return 7   (&#92;b111)   =&gt; [SQL_RESULT_SET_TYPE_UNSPECIFIED, SQL_RESULT_SET_TYPE_FORWARD_ONLY, SQL_RESULT_SET_TYPE_SCROLL_INSENSITIVE];
     * - return 8   (&#92;b1000)  =&gt; [SQL_RESULT_SET_TYPE_SCROLL_SENSITIVE];
     * - ...
     * Valid result set types are described under `arrow.flight.protocol.sql.SqlSupportedResultSetType`.
     * </pre>
     *
     * <code>SQL_SUPPORTED_RESULT_SET_TYPES = 567;</code>
     */
    public static final int SQL_SUPPORTED_RESULT_SET_TYPES_VALUE = 567;
    /**
     * <pre>
     *
     * Returns an int32 bitmask value concurrency types supported for
     * `arrow.flight.protocol.sql.SqlSupportedResultSetType.SQL_RESULT_SET_TYPE_UNSPECIFIED`.
     *
     * For instance:
     * - return 0 (&#92;b0)   =&gt; [] (no supported concurrency types for this result set type)
     * - return 1 (&#92;b1)   =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED]
     * - return 2 (&#92;b10)  =&gt; [SQL_RESULT_SET_CONCURRENCY_READ_ONLY]
     * - return 3 (&#92;b11)  =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED, SQL_RESULT_SET_CONCURRENCY_READ_ONLY]
     * - return 4 (&#92;b100) =&gt; [SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * - return 5 (&#92;b101) =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED, SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * - return 6 (&#92;b110)  =&gt; [SQL_RESULT_SET_CONCURRENCY_READ_ONLY, SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * - return 7 (&#92;b111)  =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED, SQL_RESULT_SET_CONCURRENCY_READ_ONLY, SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * Valid result set types are described under `arrow.flight.protocol.sql.SqlSupportedResultSetConcurrency`.
     * </pre>
     *
     * <code>SQL_SUPPORTED_CONCURRENCIES_FOR_RESULT_SET_UNSPECIFIED = 568;</code>
     */
    public static final int SQL_SUPPORTED_CONCURRENCIES_FOR_RESULT_SET_UNSPECIFIED_VALUE = 568;
    /**
     * <pre>
     *
     * Returns an int32 bitmask value concurrency types supported for
     * `arrow.flight.protocol.sql.SqlSupportedResultSetType.SQL_RESULT_SET_TYPE_FORWARD_ONLY`.
     *
     * For instance:
     * - return 0 (&#92;b0)   =&gt; [] (no supported concurrency types for this result set type)
     * - return 1 (&#92;b1)   =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED]
     * - return 2 (&#92;b10)  =&gt; [SQL_RESULT_SET_CONCURRENCY_READ_ONLY]
     * - return 3 (&#92;b11)  =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED, SQL_RESULT_SET_CONCURRENCY_READ_ONLY]
     * - return 4 (&#92;b100) =&gt; [SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * - return 5 (&#92;b101) =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED, SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * - return 6 (&#92;b110)  =&gt; [SQL_RESULT_SET_CONCURRENCY_READ_ONLY, SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * - return 7 (&#92;b111)  =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED, SQL_RESULT_SET_CONCURRENCY_READ_ONLY, SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * Valid result set types are described under `arrow.flight.protocol.sql.SqlSupportedResultSetConcurrency`.
     * </pre>
     *
     * <code>SQL_SUPPORTED_CONCURRENCIES_FOR_RESULT_SET_FORWARD_ONLY = 569;</code>
     */
    public static final int SQL_SUPPORTED_CONCURRENCIES_FOR_RESULT_SET_FORWARD_ONLY_VALUE = 569;
    /**
     * <pre>
     *
     * Returns an int32 bitmask value concurrency types supported for
     * `arrow.flight.protocol.sql.SqlSupportedResultSetType.SQL_RESULT_SET_TYPE_SCROLL_SENSITIVE`.
     *
     * For instance:
     * - return 0 (&#92;b0)   =&gt; [] (no supported concurrency types for this result set type)
     * - return 1 (&#92;b1)   =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED]
     * - return 2 (&#92;b10)  =&gt; [SQL_RESULT_SET_CONCURRENCY_READ_ONLY]
     * - return 3 (&#92;b11)  =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED, SQL_RESULT_SET_CONCURRENCY_READ_ONLY]
     * - return 4 (&#92;b100) =&gt; [SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * - return 5 (&#92;b101) =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED, SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * - return 6 (&#92;b110)  =&gt; [SQL_RESULT_SET_CONCURRENCY_READ_ONLY, SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * - return 7 (&#92;b111)  =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED, SQL_RESULT_SET_CONCURRENCY_READ_ONLY, SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * Valid result set types are described under `arrow.flight.protocol.sql.SqlSupportedResultSetConcurrency`.
     * </pre>
     *
     * <code>SQL_SUPPORTED_CONCURRENCIES_FOR_RESULT_SET_SCROLL_SENSITIVE = 570;</code>
     */
    public static final int SQL_SUPPORTED_CONCURRENCIES_FOR_RESULT_SET_SCROLL_SENSITIVE_VALUE = 570;
    /**
     * <pre>
     *
     * Returns an int32 bitmask value concurrency types supported for
     * `arrow.flight.protocol.sql.SqlSupportedResultSetType.SQL_RESULT_SET_TYPE_SCROLL_INSENSITIVE`.
     *
     * For instance:
     * - return 0 (&#92;b0)   =&gt; [] (no supported concurrency types for this result set type)
     * - return 1 (&#92;b1)   =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED]
     * - return 2 (&#92;b10)  =&gt; [SQL_RESULT_SET_CONCURRENCY_READ_ONLY]
     * - return 3 (&#92;b11)  =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED, SQL_RESULT_SET_CONCURRENCY_READ_ONLY]
     * - return 4 (&#92;b100) =&gt; [SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * - return 5 (&#92;b101) =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED, SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * - return 6 (&#92;b110)  =&gt; [SQL_RESULT_SET_CONCURRENCY_READ_ONLY, SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * - return 7 (&#92;b111)  =&gt; [SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED, SQL_RESULT_SET_CONCURRENCY_READ_ONLY, SQL_RESULT_SET_CONCURRENCY_UPDATABLE]
     * Valid result set types are described under `arrow.flight.protocol.sql.SqlSupportedResultSetConcurrency`.
     * </pre>
     *
     * <code>SQL_SUPPORTED_CONCURRENCIES_FOR_RESULT_SET_SCROLL_INSENSITIVE = 571;</code>
     */
    public static final int SQL_SUPPORTED_CONCURRENCIES_FOR_RESULT_SET_SCROLL_INSENSITIVE_VALUE = 571;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether this database supports batch updates.
     *
     * - false: if this database does not support batch updates;
     * - true: if this database supports batch updates.
     * </pre>
     *
     * <code>SQL_BATCH_UPDATES_SUPPORTED = 572;</code>
     */
    public static final int SQL_BATCH_UPDATES_SUPPORTED_VALUE = 572;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether this database supports savepoints.
     *
     * Returns:
     * - false: if this database does not support savepoints;
     * - true: if this database supports savepoints.
     * </pre>
     *
     * <code>SQL_SAVEPOINTS_SUPPORTED = 573;</code>
     */
    public static final int SQL_SAVEPOINTS_SUPPORTED_VALUE = 573;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether named parameters are supported in callable statements.
     *
     * Returns:
     * - false: if named parameters in callable statements are unsupported;
     * - true: if named parameters in callable statements are supported.
     * </pre>
     *
     * <code>SQL_NAMED_PARAMETERS_SUPPORTED = 574;</code>
     */
    public static final int SQL_NAMED_PARAMETERS_SUPPORTED_VALUE = 574;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether updates made to a LOB are made on a copy or directly to the LOB.
     *
     * Returns:
     * - false: if updates made to a LOB are made directly to the LOB;
     * - true: if updates made to a LOB are made on a copy.
     * </pre>
     *
     * <code>SQL_LOCATORS_UPDATE_COPY = 575;</code>
     */
    public static final int SQL_LOCATORS_UPDATE_COPY_VALUE = 575;
    /**
     * <pre>
     *
     * Retrieves a boolean value indicating whether invoking user-defined or vendor functions
     * using the stored procedure escape syntax is supported.
     *
     * Returns:
     * - false: if invoking user-defined or vendor functions using the stored procedure escape syntax is unsupported;
     * - true: if invoking user-defined or vendor functions using the stored procedure escape syntax is supported.
     * </pre>
     *
     * <code>SQL_STORED_FUNCTIONS_USING_CALL_SYNTAX_SUPPORTED = 576;</code>
     */
    public static final int SQL_STORED_FUNCTIONS_USING_CALL_SYNTAX_SUPPORTED_VALUE = 576;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static SqlInfo valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static SqlInfo forNumber(int value) {
      switch (value) {
        case 0: return FLIGHT_SQL_SERVER_NAME;
        case 1: return FLIGHT_SQL_SERVER_VERSION;
        case 2: return FLIGHT_SQL_SERVER_ARROW_VERSION;
        case 3: return FLIGHT_SQL_SERVER_READ_ONLY;
        case 4: return FLIGHT_SQL_SERVER_SQL;
        case 5: return FLIGHT_SQL_SERVER_SUBSTRAIT;
        case 6: return FLIGHT_SQL_SERVER_SUBSTRAIT_MIN_VERSION;
        case 7: return FLIGHT_SQL_SERVER_SUBSTRAIT_MAX_VERSION;
        case 8: return FLIGHT_SQL_SERVER_TRANSACTION;
        case 9: return FLIGHT_SQL_SERVER_CANCEL;
        case 10: return FLIGHT_SQL_SERVER_BULK_INGESTION;
        case 11: return FLIGHT_SQL_SERVER_INGEST_TRANSACTIONS_SUPPORTED;
        case 100: return FLIGHT_SQL_SERVER_STATEMENT_TIMEOUT;
        case 101: return FLIGHT_SQL_SERVER_TRANSACTION_TIMEOUT;
        case 500: return SQL_DDL_CATALOG;
        case 501: return SQL_DDL_SCHEMA;
        case 502: return SQL_DDL_TABLE;
        case 503: return SQL_IDENTIFIER_CASE;
        case 504: return SQL_IDENTIFIER_QUOTE_CHAR;
        case 505: return SQL_QUOTED_IDENTIFIER_CASE;
        case 506: return SQL_ALL_TABLES_ARE_SELECTABLE;
        case 507: return SQL_NULL_ORDERING;
        case 508: return SQL_KEYWORDS;
        case 509: return SQL_NUMERIC_FUNCTIONS;
        case 510: return SQL_STRING_FUNCTIONS;
        case 511: return SQL_SYSTEM_FUNCTIONS;
        case 512: return SQL_DATETIME_FUNCTIONS;
        case 513: return SQL_SEARCH_STRING_ESCAPE;
        case 514: return SQL_EXTRA_NAME_CHARACTERS;
        case 515: return SQL_SUPPORTS_COLUMN_ALIASING;
        case 516: return SQL_NULL_PLUS_NULL_IS_NULL;
        case 517: return SQL_SUPPORTS_CONVERT;
        case 518: return SQL_SUPPORTS_TABLE_CORRELATION_NAMES;
        case 519: return SQL_SUPPORTS_DIFFERENT_TABLE_CORRELATION_NAMES;
        case 520: return SQL_SUPPORTS_EXPRESSIONS_IN_ORDER_BY;
        case 521: return SQL_SUPPORTS_ORDER_BY_UNRELATED;
        case 522: return SQL_SUPPORTED_GROUP_BY;
        case 523: return SQL_SUPPORTS_LIKE_ESCAPE_CLAUSE;
        case 524: return SQL_SUPPORTS_NON_NULLABLE_COLUMNS;
        case 525: return SQL_SUPPORTED_GRAMMAR;
        case 526: return SQL_ANSI92_SUPPORTED_LEVEL;
        case 527: return SQL_SUPPORTS_INTEGRITY_ENHANCEMENT_FACILITY;
        case 528: return SQL_OUTER_JOINS_SUPPORT_LEVEL;
        case 529: return SQL_SCHEMA_TERM;
        case 530: return SQL_PROCEDURE_TERM;
        case 531: return SQL_CATALOG_TERM;
        case 532: return SQL_CATALOG_AT_START;
        case 533: return SQL_SCHEMAS_SUPPORTED_ACTIONS;
        case 534: return SQL_CATALOGS_SUPPORTED_ACTIONS;
        case 535: return SQL_SUPPORTED_POSITIONED_COMMANDS;
        case 536: return SQL_SELECT_FOR_UPDATE_SUPPORTED;
        case 537: return SQL_STORED_PROCEDURES_SUPPORTED;
        case 538: return SQL_SUPPORTED_SUBQUERIES;
        case 539: return SQL_CORRELATED_SUBQUERIES_SUPPORTED;
        case 540: return SQL_SUPPORTED_UNIONS;
        case 541: return SQL_MAX_BINARY_LITERAL_LENGTH;
        case 542: return SQL_MAX_CHAR_LITERAL_LENGTH;
        case 543: return SQL_MAX_COLUMN_NAME_LENGTH;
        case 544: return SQL_MAX_COLUMNS_IN_GROUP_BY;
        case 545: return SQL_MAX_COLUMNS_IN_INDEX;
        case 546: return SQL_MAX_COLUMNS_IN_ORDER_BY;
        case 547: return SQL_MAX_COLUMNS_IN_SELECT;
        case 548: return SQL_MAX_COLUMNS_IN_TABLE;
        case 549: return SQL_MAX_CONNECTIONS;
        case 550: return SQL_MAX_CURSOR_NAME_LENGTH;
        case 551: return SQL_MAX_INDEX_LENGTH;
        case 552: return SQL_DB_SCHEMA_NAME_LENGTH;
        case 553: return SQL_MAX_PROCEDURE_NAME_LENGTH;
        case 554: return SQL_MAX_CATALOG_NAME_LENGTH;
        case 555: return SQL_MAX_ROW_SIZE;
        case 556: return SQL_MAX_ROW_SIZE_INCLUDES_BLOBS;
        case 557: return SQL_MAX_STATEMENT_LENGTH;
        case 558: return SQL_MAX_STATEMENTS;
        case 559: return SQL_MAX_TABLE_NAME_LENGTH;
        case 560: return SQL_MAX_TABLES_IN_SELECT;
        case 561: return SQL_MAX_USERNAME_LENGTH;
        case 562: return SQL_DEFAULT_TRANSACTION_ISOLATION;
        case 563: return SQL_TRANSACTIONS_SUPPORTED;
        case 564: return SQL_SUPPORTED_TRANSACTIONS_ISOLATION_LEVELS;
        case 565: return SQL_DATA_DEFINITION_CAUSES_TRANSACTION_COMMIT;
        case 566: return SQL_DATA_DEFINITIONS_IN_TRANSACTIONS_IGNORED;
        case 567: return SQL_SUPPORTED_RESULT_SET_TYPES;
        case 568: return SQL_SUPPORTED_CONCURRENCIES_FOR_RESULT_SET_UNSPECIFIED;
        case 569: return SQL_SUPPORTED_CONCURRENCIES_FOR_RESULT_SET_FORWARD_ONLY;
        case 570: return SQL_SUPPORTED_CONCURRENCIES_FOR_RESULT_SET_SCROLL_SENSITIVE;
        case 571: return SQL_SUPPORTED_CONCURRENCIES_FOR_RESULT_SET_SCROLL_INSENSITIVE;
        case 572: return SQL_BATCH_UPDATES_SUPPORTED;
        case 573: return SQL_SAVEPOINTS_SUPPORTED;
        case 574: return SQL_NAMED_PARAMETERS_SUPPORTED;
        case 575: return SQL_LOCATORS_UPDATE_COPY;
        case 576: return SQL_STORED_FUNCTIONS_USING_CALL_SYNTAX_SUPPORTED;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<SqlInfo>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        SqlInfo> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<SqlInfo>() {
            public SqlInfo findValueByNumber(int number) {
              return SqlInfo.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.getDescriptor().getEnumTypes().get(0);
    }

    private static final SqlInfo[] VALUES = values();

    public static SqlInfo valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private SqlInfo(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.SqlInfo)
  }

  /**
   * <pre>
   * The level of support for Flight SQL transaction RPCs.
   * </pre>
   *
   * Protobuf enum {@code arrow.flight.protocol.sql.SqlSupportedTransaction}
   */
  public enum SqlSupportedTransaction
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <pre>
     * Unknown/not indicated/no support
     * </pre>
     *
     * <code>SQL_SUPPORTED_TRANSACTION_NONE = 0;</code>
     */
    SQL_SUPPORTED_TRANSACTION_NONE(0),
    /**
     * <pre>
     * Transactions, but not savepoints.
     * A savepoint is a mark within a transaction that can be individually
     * rolled back to. Not all databases support savepoints.
     * </pre>
     *
     * <code>SQL_SUPPORTED_TRANSACTION_TRANSACTION = 1;</code>
     */
    SQL_SUPPORTED_TRANSACTION_TRANSACTION(1),
    /**
     * <pre>
     * Transactions and savepoints
     * </pre>
     *
     * <code>SQL_SUPPORTED_TRANSACTION_SAVEPOINT = 2;</code>
     */
    SQL_SUPPORTED_TRANSACTION_SAVEPOINT(2),
    UNRECOGNIZED(-1),
    ;

    /**
     * <pre>
     * Unknown/not indicated/no support
     * </pre>
     *
     * <code>SQL_SUPPORTED_TRANSACTION_NONE = 0;</code>
     */
    public static final int SQL_SUPPORTED_TRANSACTION_NONE_VALUE = 0;
    /**
     * <pre>
     * Transactions, but not savepoints.
     * A savepoint is a mark within a transaction that can be individually
     * rolled back to. Not all databases support savepoints.
     * </pre>
     *
     * <code>SQL_SUPPORTED_TRANSACTION_TRANSACTION = 1;</code>
     */
    public static final int SQL_SUPPORTED_TRANSACTION_TRANSACTION_VALUE = 1;
    /**
     * <pre>
     * Transactions and savepoints
     * </pre>
     *
     * <code>SQL_SUPPORTED_TRANSACTION_SAVEPOINT = 2;</code>
     */
    public static final int SQL_SUPPORTED_TRANSACTION_SAVEPOINT_VALUE = 2;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static SqlSupportedTransaction valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static SqlSupportedTransaction forNumber(int value) {
      switch (value) {
        case 0: return SQL_SUPPORTED_TRANSACTION_NONE;
        case 1: return SQL_SUPPORTED_TRANSACTION_TRANSACTION;
        case 2: return SQL_SUPPORTED_TRANSACTION_SAVEPOINT;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<SqlSupportedTransaction>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        SqlSupportedTransaction> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<SqlSupportedTransaction>() {
            public SqlSupportedTransaction findValueByNumber(int number) {
              return SqlSupportedTransaction.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.getDescriptor().getEnumTypes().get(1);
    }

    private static final SqlSupportedTransaction[] VALUES = values();

    public static SqlSupportedTransaction valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private SqlSupportedTransaction(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.SqlSupportedTransaction)
  }

  /**
   * Protobuf enum {@code arrow.flight.protocol.sql.SqlSupportedCaseSensitivity}
   */
  public enum SqlSupportedCaseSensitivity
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>SQL_CASE_SENSITIVITY_UNKNOWN = 0;</code>
     */
    SQL_CASE_SENSITIVITY_UNKNOWN(0),
    /**
     * <code>SQL_CASE_SENSITIVITY_CASE_INSENSITIVE = 1;</code>
     */
    SQL_CASE_SENSITIVITY_CASE_INSENSITIVE(1),
    /**
     * <code>SQL_CASE_SENSITIVITY_UPPERCASE = 2;</code>
     */
    SQL_CASE_SENSITIVITY_UPPERCASE(2),
    /**
     * <code>SQL_CASE_SENSITIVITY_LOWERCASE = 3;</code>
     */
    SQL_CASE_SENSITIVITY_LOWERCASE(3),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>SQL_CASE_SENSITIVITY_UNKNOWN = 0;</code>
     */
    public static final int SQL_CASE_SENSITIVITY_UNKNOWN_VALUE = 0;
    /**
     * <code>SQL_CASE_SENSITIVITY_CASE_INSENSITIVE = 1;</code>
     */
    public static final int SQL_CASE_SENSITIVITY_CASE_INSENSITIVE_VALUE = 1;
    /**
     * <code>SQL_CASE_SENSITIVITY_UPPERCASE = 2;</code>
     */
    public static final int SQL_CASE_SENSITIVITY_UPPERCASE_VALUE = 2;
    /**
     * <code>SQL_CASE_SENSITIVITY_LOWERCASE = 3;</code>
     */
    public static final int SQL_CASE_SENSITIVITY_LOWERCASE_VALUE = 3;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static SqlSupportedCaseSensitivity valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static SqlSupportedCaseSensitivity forNumber(int value) {
      switch (value) {
        case 0: return SQL_CASE_SENSITIVITY_UNKNOWN;
        case 1: return SQL_CASE_SENSITIVITY_CASE_INSENSITIVE;
        case 2: return SQL_CASE_SENSITIVITY_UPPERCASE;
        case 3: return SQL_CASE_SENSITIVITY_LOWERCASE;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<SqlSupportedCaseSensitivity>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        SqlSupportedCaseSensitivity> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<SqlSupportedCaseSensitivity>() {
            public SqlSupportedCaseSensitivity findValueByNumber(int number) {
              return SqlSupportedCaseSensitivity.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.getDescriptor().getEnumTypes().get(2);
    }

    private static final SqlSupportedCaseSensitivity[] VALUES = values();

    public static SqlSupportedCaseSensitivity valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private SqlSupportedCaseSensitivity(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.SqlSupportedCaseSensitivity)
  }

  /**
   * Protobuf enum {@code arrow.flight.protocol.sql.SqlNullOrdering}
   */
  public enum SqlNullOrdering
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>SQL_NULLS_SORTED_HIGH = 0;</code>
     */
    SQL_NULLS_SORTED_HIGH(0),
    /**
     * <code>SQL_NULLS_SORTED_LOW = 1;</code>
     */
    SQL_NULLS_SORTED_LOW(1),
    /**
     * <code>SQL_NULLS_SORTED_AT_START = 2;</code>
     */
    SQL_NULLS_SORTED_AT_START(2),
    /**
     * <code>SQL_NULLS_SORTED_AT_END = 3;</code>
     */
    SQL_NULLS_SORTED_AT_END(3),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>SQL_NULLS_SORTED_HIGH = 0;</code>
     */
    public static final int SQL_NULLS_SORTED_HIGH_VALUE = 0;
    /**
     * <code>SQL_NULLS_SORTED_LOW = 1;</code>
     */
    public static final int SQL_NULLS_SORTED_LOW_VALUE = 1;
    /**
     * <code>SQL_NULLS_SORTED_AT_START = 2;</code>
     */
    public static final int SQL_NULLS_SORTED_AT_START_VALUE = 2;
    /**
     * <code>SQL_NULLS_SORTED_AT_END = 3;</code>
     */
    public static final int SQL_NULLS_SORTED_AT_END_VALUE = 3;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static SqlNullOrdering valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static SqlNullOrdering forNumber(int value) {
      switch (value) {
        case 0: return SQL_NULLS_SORTED_HIGH;
        case 1: return SQL_NULLS_SORTED_LOW;
        case 2: return SQL_NULLS_SORTED_AT_START;
        case 3: return SQL_NULLS_SORTED_AT_END;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<SqlNullOrdering>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        SqlNullOrdering> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<SqlNullOrdering>() {
            public SqlNullOrdering findValueByNumber(int number) {
              return SqlNullOrdering.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.getDescriptor().getEnumTypes().get(3);
    }

    private static final SqlNullOrdering[] VALUES = values();

    public static SqlNullOrdering valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private SqlNullOrdering(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.SqlNullOrdering)
  }

  /**
   * Protobuf enum {@code arrow.flight.protocol.sql.SupportedSqlGrammar}
   */
  public enum SupportedSqlGrammar
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>SQL_MINIMUM_GRAMMAR = 0;</code>
     */
    SQL_MINIMUM_GRAMMAR(0),
    /**
     * <code>SQL_CORE_GRAMMAR = 1;</code>
     */
    SQL_CORE_GRAMMAR(1),
    /**
     * <code>SQL_EXTENDED_GRAMMAR = 2;</code>
     */
    SQL_EXTENDED_GRAMMAR(2),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>SQL_MINIMUM_GRAMMAR = 0;</code>
     */
    public static final int SQL_MINIMUM_GRAMMAR_VALUE = 0;
    /**
     * <code>SQL_CORE_GRAMMAR = 1;</code>
     */
    public static final int SQL_CORE_GRAMMAR_VALUE = 1;
    /**
     * <code>SQL_EXTENDED_GRAMMAR = 2;</code>
     */
    public static final int SQL_EXTENDED_GRAMMAR_VALUE = 2;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static SupportedSqlGrammar valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static SupportedSqlGrammar forNumber(int value) {
      switch (value) {
        case 0: return SQL_MINIMUM_GRAMMAR;
        case 1: return SQL_CORE_GRAMMAR;
        case 2: return SQL_EXTENDED_GRAMMAR;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<SupportedSqlGrammar>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        SupportedSqlGrammar> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<SupportedSqlGrammar>() {
            public SupportedSqlGrammar findValueByNumber(int number) {
              return SupportedSqlGrammar.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.getDescriptor().getEnumTypes().get(4);
    }

    private static final SupportedSqlGrammar[] VALUES = values();

    public static SupportedSqlGrammar valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private SupportedSqlGrammar(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.SupportedSqlGrammar)
  }

  /**
   * Protobuf enum {@code arrow.flight.protocol.sql.SupportedAnsi92SqlGrammarLevel}
   */
  public enum SupportedAnsi92SqlGrammarLevel
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>ANSI92_ENTRY_SQL = 0;</code>
     */
    ANSI92_ENTRY_SQL(0),
    /**
     * <code>ANSI92_INTERMEDIATE_SQL = 1;</code>
     */
    ANSI92_INTERMEDIATE_SQL(1),
    /**
     * <code>ANSI92_FULL_SQL = 2;</code>
     */
    ANSI92_FULL_SQL(2),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>ANSI92_ENTRY_SQL = 0;</code>
     */
    public static final int ANSI92_ENTRY_SQL_VALUE = 0;
    /**
     * <code>ANSI92_INTERMEDIATE_SQL = 1;</code>
     */
    public static final int ANSI92_INTERMEDIATE_SQL_VALUE = 1;
    /**
     * <code>ANSI92_FULL_SQL = 2;</code>
     */
    public static final int ANSI92_FULL_SQL_VALUE = 2;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static SupportedAnsi92SqlGrammarLevel valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static SupportedAnsi92SqlGrammarLevel forNumber(int value) {
      switch (value) {
        case 0: return ANSI92_ENTRY_SQL;
        case 1: return ANSI92_INTERMEDIATE_SQL;
        case 2: return ANSI92_FULL_SQL;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<SupportedAnsi92SqlGrammarLevel>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        SupportedAnsi92SqlGrammarLevel> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<SupportedAnsi92SqlGrammarLevel>() {
            public SupportedAnsi92SqlGrammarLevel findValueByNumber(int number) {
              return SupportedAnsi92SqlGrammarLevel.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.getDescriptor().getEnumTypes().get(5);
    }

    private static final SupportedAnsi92SqlGrammarLevel[] VALUES = values();

    public static SupportedAnsi92SqlGrammarLevel valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private SupportedAnsi92SqlGrammarLevel(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.SupportedAnsi92SqlGrammarLevel)
  }

  /**
   * Protobuf enum {@code arrow.flight.protocol.sql.SqlOuterJoinsSupportLevel}
   */
  public enum SqlOuterJoinsSupportLevel
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>SQL_JOINS_UNSUPPORTED = 0;</code>
     */
    SQL_JOINS_UNSUPPORTED(0),
    /**
     * <code>SQL_LIMITED_OUTER_JOINS = 1;</code>
     */
    SQL_LIMITED_OUTER_JOINS(1),
    /**
     * <code>SQL_FULL_OUTER_JOINS = 2;</code>
     */
    SQL_FULL_OUTER_JOINS(2),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>SQL_JOINS_UNSUPPORTED = 0;</code>
     */
    public static final int SQL_JOINS_UNSUPPORTED_VALUE = 0;
    /**
     * <code>SQL_LIMITED_OUTER_JOINS = 1;</code>
     */
    public static final int SQL_LIMITED_OUTER_JOINS_VALUE = 1;
    /**
     * <code>SQL_FULL_OUTER_JOINS = 2;</code>
     */
    public static final int SQL_FULL_OUTER_JOINS_VALUE = 2;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static SqlOuterJoinsSupportLevel valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static SqlOuterJoinsSupportLevel forNumber(int value) {
      switch (value) {
        case 0: return SQL_JOINS_UNSUPPORTED;
        case 1: return SQL_LIMITED_OUTER_JOINS;
        case 2: return SQL_FULL_OUTER_JOINS;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<SqlOuterJoinsSupportLevel>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        SqlOuterJoinsSupportLevel> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<SqlOuterJoinsSupportLevel>() {
            public SqlOuterJoinsSupportLevel findValueByNumber(int number) {
              return SqlOuterJoinsSupportLevel.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.getDescriptor().getEnumTypes().get(6);
    }

    private static final SqlOuterJoinsSupportLevel[] VALUES = values();

    public static SqlOuterJoinsSupportLevel valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private SqlOuterJoinsSupportLevel(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.SqlOuterJoinsSupportLevel)
  }

  /**
   * Protobuf enum {@code arrow.flight.protocol.sql.SqlSupportedGroupBy}
   */
  public enum SqlSupportedGroupBy
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>SQL_GROUP_BY_UNRELATED = 0;</code>
     */
    SQL_GROUP_BY_UNRELATED(0),
    /**
     * <code>SQL_GROUP_BY_BEYOND_SELECT = 1;</code>
     */
    SQL_GROUP_BY_BEYOND_SELECT(1),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>SQL_GROUP_BY_UNRELATED = 0;</code>
     */
    public static final int SQL_GROUP_BY_UNRELATED_VALUE = 0;
    /**
     * <code>SQL_GROUP_BY_BEYOND_SELECT = 1;</code>
     */
    public static final int SQL_GROUP_BY_BEYOND_SELECT_VALUE = 1;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static SqlSupportedGroupBy valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static SqlSupportedGroupBy forNumber(int value) {
      switch (value) {
        case 0: return SQL_GROUP_BY_UNRELATED;
        case 1: return SQL_GROUP_BY_BEYOND_SELECT;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<SqlSupportedGroupBy>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        SqlSupportedGroupBy> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<SqlSupportedGroupBy>() {
            public SqlSupportedGroupBy findValueByNumber(int number) {
              return SqlSupportedGroupBy.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.getDescriptor().getEnumTypes().get(7);
    }

    private static final SqlSupportedGroupBy[] VALUES = values();

    public static SqlSupportedGroupBy valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private SqlSupportedGroupBy(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.SqlSupportedGroupBy)
  }

  /**
   * Protobuf enum {@code arrow.flight.protocol.sql.SqlSupportedElementActions}
   */
  public enum SqlSupportedElementActions
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>SQL_ELEMENT_IN_PROCEDURE_CALLS = 0;</code>
     */
    SQL_ELEMENT_IN_PROCEDURE_CALLS(0),
    /**
     * <code>SQL_ELEMENT_IN_INDEX_DEFINITIONS = 1;</code>
     */
    SQL_ELEMENT_IN_INDEX_DEFINITIONS(1),
    /**
     * <code>SQL_ELEMENT_IN_PRIVILEGE_DEFINITIONS = 2;</code>
     */
    SQL_ELEMENT_IN_PRIVILEGE_DEFINITIONS(2),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>SQL_ELEMENT_IN_PROCEDURE_CALLS = 0;</code>
     */
    public static final int SQL_ELEMENT_IN_PROCEDURE_CALLS_VALUE = 0;
    /**
     * <code>SQL_ELEMENT_IN_INDEX_DEFINITIONS = 1;</code>
     */
    public static final int SQL_ELEMENT_IN_INDEX_DEFINITIONS_VALUE = 1;
    /**
     * <code>SQL_ELEMENT_IN_PRIVILEGE_DEFINITIONS = 2;</code>
     */
    public static final int SQL_ELEMENT_IN_PRIVILEGE_DEFINITIONS_VALUE = 2;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static SqlSupportedElementActions valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static SqlSupportedElementActions forNumber(int value) {
      switch (value) {
        case 0: return SQL_ELEMENT_IN_PROCEDURE_CALLS;
        case 1: return SQL_ELEMENT_IN_INDEX_DEFINITIONS;
        case 2: return SQL_ELEMENT_IN_PRIVILEGE_DEFINITIONS;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<SqlSupportedElementActions>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        SqlSupportedElementActions> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<SqlSupportedElementActions>() {
            public SqlSupportedElementActions findValueByNumber(int number) {
              return SqlSupportedElementActions.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.getDescriptor().getEnumTypes().get(8);
    }

    private static final SqlSupportedElementActions[] VALUES = values();

    public static SqlSupportedElementActions valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private SqlSupportedElementActions(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.SqlSupportedElementActions)
  }

  /**
   * Protobuf enum {@code arrow.flight.protocol.sql.SqlSupportedPositionedCommands}
   */
  public enum SqlSupportedPositionedCommands
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>SQL_POSITIONED_DELETE = 0;</code>
     */
    SQL_POSITIONED_DELETE(0),
    /**
     * <code>SQL_POSITIONED_UPDATE = 1;</code>
     */
    SQL_POSITIONED_UPDATE(1),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>SQL_POSITIONED_DELETE = 0;</code>
     */
    public static final int SQL_POSITIONED_DELETE_VALUE = 0;
    /**
     * <code>SQL_POSITIONED_UPDATE = 1;</code>
     */
    public static final int SQL_POSITIONED_UPDATE_VALUE = 1;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static SqlSupportedPositionedCommands valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static SqlSupportedPositionedCommands forNumber(int value) {
      switch (value) {
        case 0: return SQL_POSITIONED_DELETE;
        case 1: return SQL_POSITIONED_UPDATE;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<SqlSupportedPositionedCommands>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        SqlSupportedPositionedCommands> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<SqlSupportedPositionedCommands>() {
            public SqlSupportedPositionedCommands findValueByNumber(int number) {
              return SqlSupportedPositionedCommands.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.getDescriptor().getEnumTypes().get(9);
    }

    private static final SqlSupportedPositionedCommands[] VALUES = values();

    public static SqlSupportedPositionedCommands valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private SqlSupportedPositionedCommands(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.SqlSupportedPositionedCommands)
  }

  /**
   * Protobuf enum {@code arrow.flight.protocol.sql.SqlSupportedSubqueries}
   */
  public enum SqlSupportedSubqueries
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>SQL_SUBQUERIES_IN_COMPARISONS = 0;</code>
     */
    SQL_SUBQUERIES_IN_COMPARISONS(0),
    /**
     * <code>SQL_SUBQUERIES_IN_EXISTS = 1;</code>
     */
    SQL_SUBQUERIES_IN_EXISTS(1),
    /**
     * <code>SQL_SUBQUERIES_IN_INS = 2;</code>
     */
    SQL_SUBQUERIES_IN_INS(2),
    /**
     * <code>SQL_SUBQUERIES_IN_QUANTIFIEDS = 3;</code>
     */
    SQL_SUBQUERIES_IN_QUANTIFIEDS(3),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>SQL_SUBQUERIES_IN_COMPARISONS = 0;</code>
     */
    public static final int SQL_SUBQUERIES_IN_COMPARISONS_VALUE = 0;
    /**
     * <code>SQL_SUBQUERIES_IN_EXISTS = 1;</code>
     */
    public static final int SQL_SUBQUERIES_IN_EXISTS_VALUE = 1;
    /**
     * <code>SQL_SUBQUERIES_IN_INS = 2;</code>
     */
    public static final int SQL_SUBQUERIES_IN_INS_VALUE = 2;
    /**
     * <code>SQL_SUBQUERIES_IN_QUANTIFIEDS = 3;</code>
     */
    public static final int SQL_SUBQUERIES_IN_QUANTIFIEDS_VALUE = 3;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static SqlSupportedSubqueries valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static SqlSupportedSubqueries forNumber(int value) {
      switch (value) {
        case 0: return SQL_SUBQUERIES_IN_COMPARISONS;
        case 1: return SQL_SUBQUERIES_IN_EXISTS;
        case 2: return SQL_SUBQUERIES_IN_INS;
        case 3: return SQL_SUBQUERIES_IN_QUANTIFIEDS;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<SqlSupportedSubqueries>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        SqlSupportedSubqueries> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<SqlSupportedSubqueries>() {
            public SqlSupportedSubqueries findValueByNumber(int number) {
              return SqlSupportedSubqueries.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.getDescriptor().getEnumTypes().get(10);
    }

    private static final SqlSupportedSubqueries[] VALUES = values();

    public static SqlSupportedSubqueries valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private SqlSupportedSubqueries(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.SqlSupportedSubqueries)
  }

  /**
   * Protobuf enum {@code arrow.flight.protocol.sql.SqlSupportedUnions}
   */
  public enum SqlSupportedUnions
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>SQL_UNION = 0;</code>
     */
    SQL_UNION(0),
    /**
     * <code>SQL_UNION_ALL = 1;</code>
     */
    SQL_UNION_ALL(1),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>SQL_UNION = 0;</code>
     */
    public static final int SQL_UNION_VALUE = 0;
    /**
     * <code>SQL_UNION_ALL = 1;</code>
     */
    public static final int SQL_UNION_ALL_VALUE = 1;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static SqlSupportedUnions valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static SqlSupportedUnions forNumber(int value) {
      switch (value) {
        case 0: return SQL_UNION;
        case 1: return SQL_UNION_ALL;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<SqlSupportedUnions>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        SqlSupportedUnions> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<SqlSupportedUnions>() {
            public SqlSupportedUnions findValueByNumber(int number) {
              return SqlSupportedUnions.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.getDescriptor().getEnumTypes().get(11);
    }

    private static final SqlSupportedUnions[] VALUES = values();

    public static SqlSupportedUnions valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private SqlSupportedUnions(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.SqlSupportedUnions)
  }

  /**
   * Protobuf enum {@code arrow.flight.protocol.sql.SqlTransactionIsolationLevel}
   */
  public enum SqlTransactionIsolationLevel
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>SQL_TRANSACTION_NONE = 0;</code>
     */
    SQL_TRANSACTION_NONE(0),
    /**
     * <code>SQL_TRANSACTION_READ_UNCOMMITTED = 1;</code>
     */
    SQL_TRANSACTION_READ_UNCOMMITTED(1),
    /**
     * <code>SQL_TRANSACTION_READ_COMMITTED = 2;</code>
     */
    SQL_TRANSACTION_READ_COMMITTED(2),
    /**
     * <code>SQL_TRANSACTION_REPEATABLE_READ = 3;</code>
     */
    SQL_TRANSACTION_REPEATABLE_READ(3),
    /**
     * <code>SQL_TRANSACTION_SERIALIZABLE = 4;</code>
     */
    SQL_TRANSACTION_SERIALIZABLE(4),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>SQL_TRANSACTION_NONE = 0;</code>
     */
    public static final int SQL_TRANSACTION_NONE_VALUE = 0;
    /**
     * <code>SQL_TRANSACTION_READ_UNCOMMITTED = 1;</code>
     */
    public static final int SQL_TRANSACTION_READ_UNCOMMITTED_VALUE = 1;
    /**
     * <code>SQL_TRANSACTION_READ_COMMITTED = 2;</code>
     */
    public static final int SQL_TRANSACTION_READ_COMMITTED_VALUE = 2;
    /**
     * <code>SQL_TRANSACTION_REPEATABLE_READ = 3;</code>
     */
    public static final int SQL_TRANSACTION_REPEATABLE_READ_VALUE = 3;
    /**
     * <code>SQL_TRANSACTION_SERIALIZABLE = 4;</code>
     */
    public static final int SQL_TRANSACTION_SERIALIZABLE_VALUE = 4;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static SqlTransactionIsolationLevel valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static SqlTransactionIsolationLevel forNumber(int value) {
      switch (value) {
        case 0: return SQL_TRANSACTION_NONE;
        case 1: return SQL_TRANSACTION_READ_UNCOMMITTED;
        case 2: return SQL_TRANSACTION_READ_COMMITTED;
        case 3: return SQL_TRANSACTION_REPEATABLE_READ;
        case 4: return SQL_TRANSACTION_SERIALIZABLE;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<SqlTransactionIsolationLevel>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        SqlTransactionIsolationLevel> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<SqlTransactionIsolationLevel>() {
            public SqlTransactionIsolationLevel findValueByNumber(int number) {
              return SqlTransactionIsolationLevel.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.getDescriptor().getEnumTypes().get(12);
    }

    private static final SqlTransactionIsolationLevel[] VALUES = values();

    public static SqlTransactionIsolationLevel valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private SqlTransactionIsolationLevel(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.SqlTransactionIsolationLevel)
  }

  /**
   * Protobuf enum {@code arrow.flight.protocol.sql.SqlSupportedTransactions}
   */
  public enum SqlSupportedTransactions
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>SQL_TRANSACTION_UNSPECIFIED = 0;</code>
     */
    SQL_TRANSACTION_UNSPECIFIED(0),
    /**
     * <code>SQL_DATA_DEFINITION_TRANSACTIONS = 1;</code>
     */
    SQL_DATA_DEFINITION_TRANSACTIONS(1),
    /**
     * <code>SQL_DATA_MANIPULATION_TRANSACTIONS = 2;</code>
     */
    SQL_DATA_MANIPULATION_TRANSACTIONS(2),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>SQL_TRANSACTION_UNSPECIFIED = 0;</code>
     */
    public static final int SQL_TRANSACTION_UNSPECIFIED_VALUE = 0;
    /**
     * <code>SQL_DATA_DEFINITION_TRANSACTIONS = 1;</code>
     */
    public static final int SQL_DATA_DEFINITION_TRANSACTIONS_VALUE = 1;
    /**
     * <code>SQL_DATA_MANIPULATION_TRANSACTIONS = 2;</code>
     */
    public static final int SQL_DATA_MANIPULATION_TRANSACTIONS_VALUE = 2;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static SqlSupportedTransactions valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static SqlSupportedTransactions forNumber(int value) {
      switch (value) {
        case 0: return SQL_TRANSACTION_UNSPECIFIED;
        case 1: return SQL_DATA_DEFINITION_TRANSACTIONS;
        case 2: return SQL_DATA_MANIPULATION_TRANSACTIONS;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<SqlSupportedTransactions>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        SqlSupportedTransactions> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<SqlSupportedTransactions>() {
            public SqlSupportedTransactions findValueByNumber(int number) {
              return SqlSupportedTransactions.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.getDescriptor().getEnumTypes().get(13);
    }

    private static final SqlSupportedTransactions[] VALUES = values();

    public static SqlSupportedTransactions valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private SqlSupportedTransactions(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.SqlSupportedTransactions)
  }

  /**
   * Protobuf enum {@code arrow.flight.protocol.sql.SqlSupportedResultSetType}
   */
  public enum SqlSupportedResultSetType
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>SQL_RESULT_SET_TYPE_UNSPECIFIED = 0;</code>
     */
    SQL_RESULT_SET_TYPE_UNSPECIFIED(0),
    /**
     * <code>SQL_RESULT_SET_TYPE_FORWARD_ONLY = 1;</code>
     */
    SQL_RESULT_SET_TYPE_FORWARD_ONLY(1),
    /**
     * <code>SQL_RESULT_SET_TYPE_SCROLL_INSENSITIVE = 2;</code>
     */
    SQL_RESULT_SET_TYPE_SCROLL_INSENSITIVE(2),
    /**
     * <code>SQL_RESULT_SET_TYPE_SCROLL_SENSITIVE = 3;</code>
     */
    SQL_RESULT_SET_TYPE_SCROLL_SENSITIVE(3),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>SQL_RESULT_SET_TYPE_UNSPECIFIED = 0;</code>
     */
    public static final int SQL_RESULT_SET_TYPE_UNSPECIFIED_VALUE = 0;
    /**
     * <code>SQL_RESULT_SET_TYPE_FORWARD_ONLY = 1;</code>
     */
    public static final int SQL_RESULT_SET_TYPE_FORWARD_ONLY_VALUE = 1;
    /**
     * <code>SQL_RESULT_SET_TYPE_SCROLL_INSENSITIVE = 2;</code>
     */
    public static final int SQL_RESULT_SET_TYPE_SCROLL_INSENSITIVE_VALUE = 2;
    /**
     * <code>SQL_RESULT_SET_TYPE_SCROLL_SENSITIVE = 3;</code>
     */
    public static final int SQL_RESULT_SET_TYPE_SCROLL_SENSITIVE_VALUE = 3;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static SqlSupportedResultSetType valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static SqlSupportedResultSetType forNumber(int value) {
      switch (value) {
        case 0: return SQL_RESULT_SET_TYPE_UNSPECIFIED;
        case 1: return SQL_RESULT_SET_TYPE_FORWARD_ONLY;
        case 2: return SQL_RESULT_SET_TYPE_SCROLL_INSENSITIVE;
        case 3: return SQL_RESULT_SET_TYPE_SCROLL_SENSITIVE;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<SqlSupportedResultSetType>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        SqlSupportedResultSetType> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<SqlSupportedResultSetType>() {
            public SqlSupportedResultSetType findValueByNumber(int number) {
              return SqlSupportedResultSetType.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.getDescriptor().getEnumTypes().get(14);
    }

    private static final SqlSupportedResultSetType[] VALUES = values();

    public static SqlSupportedResultSetType valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private SqlSupportedResultSetType(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.SqlSupportedResultSetType)
  }

  /**
   * Protobuf enum {@code arrow.flight.protocol.sql.SqlSupportedResultSetConcurrency}
   */
  public enum SqlSupportedResultSetConcurrency
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED = 0;</code>
     */
    SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED(0),
    /**
     * <code>SQL_RESULT_SET_CONCURRENCY_READ_ONLY = 1;</code>
     */
    SQL_RESULT_SET_CONCURRENCY_READ_ONLY(1),
    /**
     * <code>SQL_RESULT_SET_CONCURRENCY_UPDATABLE = 2;</code>
     */
    SQL_RESULT_SET_CONCURRENCY_UPDATABLE(2),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED = 0;</code>
     */
    public static final int SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED_VALUE = 0;
    /**
     * <code>SQL_RESULT_SET_CONCURRENCY_READ_ONLY = 1;</code>
     */
    public static final int SQL_RESULT_SET_CONCURRENCY_READ_ONLY_VALUE = 1;
    /**
     * <code>SQL_RESULT_SET_CONCURRENCY_UPDATABLE = 2;</code>
     */
    public static final int SQL_RESULT_SET_CONCURRENCY_UPDATABLE_VALUE = 2;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static SqlSupportedResultSetConcurrency valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static SqlSupportedResultSetConcurrency forNumber(int value) {
      switch (value) {
        case 0: return SQL_RESULT_SET_CONCURRENCY_UNSPECIFIED;
        case 1: return SQL_RESULT_SET_CONCURRENCY_READ_ONLY;
        case 2: return SQL_RESULT_SET_CONCURRENCY_UPDATABLE;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<SqlSupportedResultSetConcurrency>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        SqlSupportedResultSetConcurrency> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<SqlSupportedResultSetConcurrency>() {
            public SqlSupportedResultSetConcurrency findValueByNumber(int number) {
              return SqlSupportedResultSetConcurrency.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.getDescriptor().getEnumTypes().get(15);
    }

    private static final SqlSupportedResultSetConcurrency[] VALUES = values();

    public static SqlSupportedResultSetConcurrency valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private SqlSupportedResultSetConcurrency(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.SqlSupportedResultSetConcurrency)
  }

  /**
   * Protobuf enum {@code arrow.flight.protocol.sql.SqlSupportsConvert}
   */
  public enum SqlSupportsConvert
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>SQL_CONVERT_BIGINT = 0;</code>
     */
    SQL_CONVERT_BIGINT(0),
    /**
     * <code>SQL_CONVERT_BINARY = 1;</code>
     */
    SQL_CONVERT_BINARY(1),
    /**
     * <code>SQL_CONVERT_BIT = 2;</code>
     */
    SQL_CONVERT_BIT(2),
    /**
     * <code>SQL_CONVERT_CHAR = 3;</code>
     */
    SQL_CONVERT_CHAR(3),
    /**
     * <code>SQL_CONVERT_DATE = 4;</code>
     */
    SQL_CONVERT_DATE(4),
    /**
     * <code>SQL_CONVERT_DECIMAL = 5;</code>
     */
    SQL_CONVERT_DECIMAL(5),
    /**
     * <code>SQL_CONVERT_FLOAT = 6;</code>
     */
    SQL_CONVERT_FLOAT(6),
    /**
     * <code>SQL_CONVERT_INTEGER = 7;</code>
     */
    SQL_CONVERT_INTEGER(7),
    /**
     * <code>SQL_CONVERT_INTERVAL_DAY_TIME = 8;</code>
     */
    SQL_CONVERT_INTERVAL_DAY_TIME(8),
    /**
     * <code>SQL_CONVERT_INTERVAL_YEAR_MONTH = 9;</code>
     */
    SQL_CONVERT_INTERVAL_YEAR_MONTH(9),
    /**
     * <code>SQL_CONVERT_LONGVARBINARY = 10;</code>
     */
    SQL_CONVERT_LONGVARBINARY(10),
    /**
     * <code>SQL_CONVERT_LONGVARCHAR = 11;</code>
     */
    SQL_CONVERT_LONGVARCHAR(11),
    /**
     * <code>SQL_CONVERT_NUMERIC = 12;</code>
     */
    SQL_CONVERT_NUMERIC(12),
    /**
     * <code>SQL_CONVERT_REAL = 13;</code>
     */
    SQL_CONVERT_REAL(13),
    /**
     * <code>SQL_CONVERT_SMALLINT = 14;</code>
     */
    SQL_CONVERT_SMALLINT(14),
    /**
     * <code>SQL_CONVERT_TIME = 15;</code>
     */
    SQL_CONVERT_TIME(15),
    /**
     * <code>SQL_CONVERT_TIMESTAMP = 16;</code>
     */
    SQL_CONVERT_TIMESTAMP(16),
    /**
     * <code>SQL_CONVERT_TINYINT = 17;</code>
     */
    SQL_CONVERT_TINYINT(17),
    /**
     * <code>SQL_CONVERT_VARBINARY = 18;</code>
     */
    SQL_CONVERT_VARBINARY(18),
    /**
     * <code>SQL_CONVERT_VARCHAR = 19;</code>
     */
    SQL_CONVERT_VARCHAR(19),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>SQL_CONVERT_BIGINT = 0;</code>
     */
    public static final int SQL_CONVERT_BIGINT_VALUE = 0;
    /**
     * <code>SQL_CONVERT_BINARY = 1;</code>
     */
    public static final int SQL_CONVERT_BINARY_VALUE = 1;
    /**
     * <code>SQL_CONVERT_BIT = 2;</code>
     */
    public static final int SQL_CONVERT_BIT_VALUE = 2;
    /**
     * <code>SQL_CONVERT_CHAR = 3;</code>
     */
    public static final int SQL_CONVERT_CHAR_VALUE = 3;
    /**
     * <code>SQL_CONVERT_DATE = 4;</code>
     */
    public static final int SQL_CONVERT_DATE_VALUE = 4;
    /**
     * <code>SQL_CONVERT_DECIMAL = 5;</code>
     */
    public static final int SQL_CONVERT_DECIMAL_VALUE = 5;
    /**
     * <code>SQL_CONVERT_FLOAT = 6;</code>
     */
    public static final int SQL_CONVERT_FLOAT_VALUE = 6;
    /**
     * <code>SQL_CONVERT_INTEGER = 7;</code>
     */
    public static final int SQL_CONVERT_INTEGER_VALUE = 7;
    /**
     * <code>SQL_CONVERT_INTERVAL_DAY_TIME = 8;</code>
     */
    public static final int SQL_CONVERT_INTERVAL_DAY_TIME_VALUE = 8;
    /**
     * <code>SQL_CONVERT_INTERVAL_YEAR_MONTH = 9;</code>
     */
    public static final int SQL_CONVERT_INTERVAL_YEAR_MONTH_VALUE = 9;
    /**
     * <code>SQL_CONVERT_LONGVARBINARY = 10;</code>
     */
    public static final int SQL_CONVERT_LONGVARBINARY_VALUE = 10;
    /**
     * <code>SQL_CONVERT_LONGVARCHAR = 11;</code>
     */
    public static final int SQL_CONVERT_LONGVARCHAR_VALUE = 11;
    /**
     * <code>SQL_CONVERT_NUMERIC = 12;</code>
     */
    public static final int SQL_CONVERT_NUMERIC_VALUE = 12;
    /**
     * <code>SQL_CONVERT_REAL = 13;</code>
     */
    public static final int SQL_CONVERT_REAL_VALUE = 13;
    /**
     * <code>SQL_CONVERT_SMALLINT = 14;</code>
     */
    public static final int SQL_CONVERT_SMALLINT_VALUE = 14;
    /**
     * <code>SQL_CONVERT_TIME = 15;</code>
     */
    public static final int SQL_CONVERT_TIME_VALUE = 15;
    /**
     * <code>SQL_CONVERT_TIMESTAMP = 16;</code>
     */
    public static final int SQL_CONVERT_TIMESTAMP_VALUE = 16;
    /**
     * <code>SQL_CONVERT_TINYINT = 17;</code>
     */
    public static final int SQL_CONVERT_TINYINT_VALUE = 17;
    /**
     * <code>SQL_CONVERT_VARBINARY = 18;</code>
     */
    public static final int SQL_CONVERT_VARBINARY_VALUE = 18;
    /**
     * <code>SQL_CONVERT_VARCHAR = 19;</code>
     */
    public static final int SQL_CONVERT_VARCHAR_VALUE = 19;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static SqlSupportsConvert valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static SqlSupportsConvert forNumber(int value) {
      switch (value) {
        case 0: return SQL_CONVERT_BIGINT;
        case 1: return SQL_CONVERT_BINARY;
        case 2: return SQL_CONVERT_BIT;
        case 3: return SQL_CONVERT_CHAR;
        case 4: return SQL_CONVERT_DATE;
        case 5: return SQL_CONVERT_DECIMAL;
        case 6: return SQL_CONVERT_FLOAT;
        case 7: return SQL_CONVERT_INTEGER;
        case 8: return SQL_CONVERT_INTERVAL_DAY_TIME;
        case 9: return SQL_CONVERT_INTERVAL_YEAR_MONTH;
        case 10: return SQL_CONVERT_LONGVARBINARY;
        case 11: return SQL_CONVERT_LONGVARCHAR;
        case 12: return SQL_CONVERT_NUMERIC;
        case 13: return SQL_CONVERT_REAL;
        case 14: return SQL_CONVERT_SMALLINT;
        case 15: return SQL_CONVERT_TIME;
        case 16: return SQL_CONVERT_TIMESTAMP;
        case 17: return SQL_CONVERT_TINYINT;
        case 18: return SQL_CONVERT_VARBINARY;
        case 19: return SQL_CONVERT_VARCHAR;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<SqlSupportsConvert>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        SqlSupportsConvert> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<SqlSupportsConvert>() {
            public SqlSupportsConvert findValueByNumber(int number) {
              return SqlSupportsConvert.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.getDescriptor().getEnumTypes().get(16);
    }

    private static final SqlSupportsConvert[] VALUES = values();

    public static SqlSupportsConvert valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private SqlSupportsConvert(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.SqlSupportsConvert)
  }

  /**
   * <pre>
   **
   * The JDBC/ODBC-defined type of any object.
   * All the values here are the same as in the JDBC and ODBC specs.
   * </pre>
   *
   * Protobuf enum {@code arrow.flight.protocol.sql.XdbcDataType}
   */
  public enum XdbcDataType
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>XDBC_UNKNOWN_TYPE = 0;</code>
     */
    XDBC_UNKNOWN_TYPE(0),
    /**
     * <code>XDBC_CHAR = 1;</code>
     */
    XDBC_CHAR(1),
    /**
     * <code>XDBC_NUMERIC = 2;</code>
     */
    XDBC_NUMERIC(2),
    /**
     * <code>XDBC_DECIMAL = 3;</code>
     */
    XDBC_DECIMAL(3),
    /**
     * <code>XDBC_INTEGER = 4;</code>
     */
    XDBC_INTEGER(4),
    /**
     * <code>XDBC_SMALLINT = 5;</code>
     */
    XDBC_SMALLINT(5),
    /**
     * <code>XDBC_FLOAT = 6;</code>
     */
    XDBC_FLOAT(6),
    /**
     * <code>XDBC_REAL = 7;</code>
     */
    XDBC_REAL(7),
    /**
     * <code>XDBC_DOUBLE = 8;</code>
     */
    XDBC_DOUBLE(8),
    /**
     * <code>XDBC_DATETIME = 9;</code>
     */
    XDBC_DATETIME(9),
    /**
     * <code>XDBC_INTERVAL = 10;</code>
     */
    XDBC_INTERVAL(10),
    /**
     * <code>XDBC_VARCHAR = 12;</code>
     */
    XDBC_VARCHAR(12),
    /**
     * <code>XDBC_DATE = 91;</code>
     */
    XDBC_DATE(91),
    /**
     * <code>XDBC_TIME = 92;</code>
     */
    XDBC_TIME(92),
    /**
     * <code>XDBC_TIMESTAMP = 93;</code>
     */
    XDBC_TIMESTAMP(93),
    /**
     * <code>XDBC_LONGVARCHAR = -1;</code>
     */
    XDBC_LONGVARCHAR(-1),
    /**
     * <code>XDBC_BINARY = -2;</code>
     */
    XDBC_BINARY(-2),
    /**
     * <code>XDBC_VARBINARY = -3;</code>
     */
    XDBC_VARBINARY(-3),
    /**
     * <code>XDBC_LONGVARBINARY = -4;</code>
     */
    XDBC_LONGVARBINARY(-4),
    /**
     * <code>XDBC_BIGINT = -5;</code>
     */
    XDBC_BIGINT(-5),
    /**
     * <code>XDBC_TINYINT = -6;</code>
     */
    XDBC_TINYINT(-6),
    /**
     * <code>XDBC_BIT = -7;</code>
     */
    XDBC_BIT(-7),
    /**
     * <code>XDBC_WCHAR = -8;</code>
     */
    XDBC_WCHAR(-8),
    /**
     * <code>XDBC_WVARCHAR = -9;</code>
     */
    XDBC_WVARCHAR(-9),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>XDBC_UNKNOWN_TYPE = 0;</code>
     */
    public static final int XDBC_UNKNOWN_TYPE_VALUE = 0;
    /**
     * <code>XDBC_CHAR = 1;</code>
     */
    public static final int XDBC_CHAR_VALUE = 1;
    /**
     * <code>XDBC_NUMERIC = 2;</code>
     */
    public static final int XDBC_NUMERIC_VALUE = 2;
    /**
     * <code>XDBC_DECIMAL = 3;</code>
     */
    public static final int XDBC_DECIMAL_VALUE = 3;
    /**
     * <code>XDBC_INTEGER = 4;</code>
     */
    public static final int XDBC_INTEGER_VALUE = 4;
    /**
     * <code>XDBC_SMALLINT = 5;</code>
     */
    public static final int XDBC_SMALLINT_VALUE = 5;
    /**
     * <code>XDBC_FLOAT = 6;</code>
     */
    public static final int XDBC_FLOAT_VALUE = 6;
    /**
     * <code>XDBC_REAL = 7;</code>
     */
    public static final int XDBC_REAL_VALUE = 7;
    /**
     * <code>XDBC_DOUBLE = 8;</code>
     */
    public static final int XDBC_DOUBLE_VALUE = 8;
    /**
     * <code>XDBC_DATETIME = 9;</code>
     */
    public static final int XDBC_DATETIME_VALUE = 9;
    /**
     * <code>XDBC_INTERVAL = 10;</code>
     */
    public static final int XDBC_INTERVAL_VALUE = 10;
    /**
     * <code>XDBC_VARCHAR = 12;</code>
     */
    public static final int XDBC_VARCHAR_VALUE = 12;
    /**
     * <code>XDBC_DATE = 91;</code>
     */
    public static final int XDBC_DATE_VALUE = 91;
    /**
     * <code>XDBC_TIME = 92;</code>
     */
    public static final int XDBC_TIME_VALUE = 92;
    /**
     * <code>XDBC_TIMESTAMP = 93;</code>
     */
    public static final int XDBC_TIMESTAMP_VALUE = 93;
    /**
     * <code>XDBC_LONGVARCHAR = -1;</code>
     */
    public static final int XDBC_LONGVARCHAR_VALUE = -1;
    /**
     * <code>XDBC_BINARY = -2;</code>
     */
    public static final int XDBC_BINARY_VALUE = -2;
    /**
     * <code>XDBC_VARBINARY = -3;</code>
     */
    public static final int XDBC_VARBINARY_VALUE = -3;
    /**
     * <code>XDBC_LONGVARBINARY = -4;</code>
     */
    public static final int XDBC_LONGVARBINARY_VALUE = -4;
    /**
     * <code>XDBC_BIGINT = -5;</code>
     */
    public static final int XDBC_BIGINT_VALUE = -5;
    /**
     * <code>XDBC_TINYINT = -6;</code>
     */
    public static final int XDBC_TINYINT_VALUE = -6;
    /**
     * <code>XDBC_BIT = -7;</code>
     */
    public static final int XDBC_BIT_VALUE = -7;
    /**
     * <code>XDBC_WCHAR = -8;</code>
     */
    public static final int XDBC_WCHAR_VALUE = -8;
    /**
     * <code>XDBC_WVARCHAR = -9;</code>
     */
    public static final int XDBC_WVARCHAR_VALUE = -9;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static XdbcDataType valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static XdbcDataType forNumber(int value) {
      switch (value) {
        case 0: return XDBC_UNKNOWN_TYPE;
        case 1: return XDBC_CHAR;
        case 2: return XDBC_NUMERIC;
        case 3: return XDBC_DECIMAL;
        case 4: return XDBC_INTEGER;
        case 5: return XDBC_SMALLINT;
        case 6: return XDBC_FLOAT;
        case 7: return XDBC_REAL;
        case 8: return XDBC_DOUBLE;
        case 9: return XDBC_DATETIME;
        case 10: return XDBC_INTERVAL;
        case 12: return XDBC_VARCHAR;
        case 91: return XDBC_DATE;
        case 92: return XDBC_TIME;
        case 93: return XDBC_TIMESTAMP;
        case -1: return XDBC_LONGVARCHAR;
        case -2: return XDBC_BINARY;
        case -3: return XDBC_VARBINARY;
        case -4: return XDBC_LONGVARBINARY;
        case -5: return XDBC_BIGINT;
        case -6: return XDBC_TINYINT;
        case -7: return XDBC_BIT;
        case -8: return XDBC_WCHAR;
        case -9: return XDBC_WVARCHAR;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<XdbcDataType>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        XdbcDataType> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<XdbcDataType>() {
            public XdbcDataType findValueByNumber(int number) {
              return XdbcDataType.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.getDescriptor().getEnumTypes().get(17);
    }

    private static final XdbcDataType[] VALUES = values();

    public static XdbcDataType valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private XdbcDataType(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.XdbcDataType)
  }

  /**
   * <pre>
   **
   * Detailed subtype information for XDBC_TYPE_DATETIME and XDBC_TYPE_INTERVAL.
   * </pre>
   *
   * Protobuf enum {@code arrow.flight.protocol.sql.XdbcDatetimeSubcode}
   */
  public enum XdbcDatetimeSubcode
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>XDBC_SUBCODE_UNKNOWN = 0;</code>
     */
    XDBC_SUBCODE_UNKNOWN(0, 0),
    /**
     * <code>XDBC_SUBCODE_YEAR = 1;</code>
     */
    XDBC_SUBCODE_YEAR(1, 1),
    /**
     * <code>XDBC_SUBCODE_TIME = 2;</code>
     */
    XDBC_SUBCODE_TIME(3, 2),
    /**
     * <code>XDBC_SUBCODE_TIMESTAMP = 3;</code>
     */
    XDBC_SUBCODE_TIMESTAMP(5, 3),
    /**
     * <code>XDBC_SUBCODE_TIME_WITH_TIMEZONE = 4;</code>
     */
    XDBC_SUBCODE_TIME_WITH_TIMEZONE(7, 4),
    /**
     * <code>XDBC_SUBCODE_TIMESTAMP_WITH_TIMEZONE = 5;</code>
     */
    XDBC_SUBCODE_TIMESTAMP_WITH_TIMEZONE(9, 5),
    /**
     * <code>XDBC_SUBCODE_SECOND = 6;</code>
     */
    XDBC_SUBCODE_SECOND(11, 6),
    /**
     * <code>XDBC_SUBCODE_YEAR_TO_MONTH = 7;</code>
     */
    XDBC_SUBCODE_YEAR_TO_MONTH(12, 7),
    /**
     * <code>XDBC_SUBCODE_DAY_TO_HOUR = 8;</code>
     */
    XDBC_SUBCODE_DAY_TO_HOUR(13, 8),
    /**
     * <code>XDBC_SUBCODE_DAY_TO_MINUTE = 9;</code>
     */
    XDBC_SUBCODE_DAY_TO_MINUTE(14, 9),
    /**
     * <code>XDBC_SUBCODE_DAY_TO_SECOND = 10;</code>
     */
    XDBC_SUBCODE_DAY_TO_SECOND(15, 10),
    /**
     * <code>XDBC_SUBCODE_HOUR_TO_MINUTE = 11;</code>
     */
    XDBC_SUBCODE_HOUR_TO_MINUTE(16, 11),
    /**
     * <code>XDBC_SUBCODE_HOUR_TO_SECOND = 12;</code>
     */
    XDBC_SUBCODE_HOUR_TO_SECOND(17, 12),
    /**
     * <code>XDBC_SUBCODE_MINUTE_TO_SECOND = 13;</code>
     */
    XDBC_SUBCODE_MINUTE_TO_SECOND(18, 13),
    /**
     * <code>XDBC_SUBCODE_INTERVAL_YEAR = 101;</code>
     */
    XDBC_SUBCODE_INTERVAL_YEAR(19, 101),
    /**
     * <code>XDBC_SUBCODE_INTERVAL_MONTH = 102;</code>
     */
    XDBC_SUBCODE_INTERVAL_MONTH(20, 102),
    /**
     * <code>XDBC_SUBCODE_INTERVAL_DAY = 103;</code>
     */
    XDBC_SUBCODE_INTERVAL_DAY(21, 103),
    /**
     * <code>XDBC_SUBCODE_INTERVAL_HOUR = 104;</code>
     */
    XDBC_SUBCODE_INTERVAL_HOUR(22, 104),
    /**
     * <code>XDBC_SUBCODE_INTERVAL_MINUTE = 105;</code>
     */
    XDBC_SUBCODE_INTERVAL_MINUTE(23, 105),
    /**
     * <code>XDBC_SUBCODE_INTERVAL_SECOND = 106;</code>
     */
    XDBC_SUBCODE_INTERVAL_SECOND(24, 106),
    /**
     * <code>XDBC_SUBCODE_INTERVAL_YEAR_TO_MONTH = 107;</code>
     */
    XDBC_SUBCODE_INTERVAL_YEAR_TO_MONTH(25, 107),
    /**
     * <code>XDBC_SUBCODE_INTERVAL_DAY_TO_HOUR = 108;</code>
     */
    XDBC_SUBCODE_INTERVAL_DAY_TO_HOUR(26, 108),
    /**
     * <code>XDBC_SUBCODE_INTERVAL_DAY_TO_MINUTE = 109;</code>
     */
    XDBC_SUBCODE_INTERVAL_DAY_TO_MINUTE(27, 109),
    /**
     * <code>XDBC_SUBCODE_INTERVAL_DAY_TO_SECOND = 110;</code>
     */
    XDBC_SUBCODE_INTERVAL_DAY_TO_SECOND(28, 110),
    /**
     * <code>XDBC_SUBCODE_INTERVAL_HOUR_TO_MINUTE = 111;</code>
     */
    XDBC_SUBCODE_INTERVAL_HOUR_TO_MINUTE(29, 111),
    /**
     * <code>XDBC_SUBCODE_INTERVAL_HOUR_TO_SECOND = 112;</code>
     */
    XDBC_SUBCODE_INTERVAL_HOUR_TO_SECOND(30, 112),
    /**
     * <code>XDBC_SUBCODE_INTERVAL_MINUTE_TO_SECOND = 113;</code>
     */
    XDBC_SUBCODE_INTERVAL_MINUTE_TO_SECOND(31, 113),
    UNRECOGNIZED(-1, -1),
    ;

    /**
     * <code>XDBC_SUBCODE_DATE = 1;</code>
     */
    public static final XdbcDatetimeSubcode XDBC_SUBCODE_DATE = XDBC_SUBCODE_YEAR;
    /**
     * <code>XDBC_SUBCODE_MONTH = 2;</code>
     */
    public static final XdbcDatetimeSubcode XDBC_SUBCODE_MONTH = XDBC_SUBCODE_TIME;
    /**
     * <code>XDBC_SUBCODE_DAY = 3;</code>
     */
    public static final XdbcDatetimeSubcode XDBC_SUBCODE_DAY = XDBC_SUBCODE_TIMESTAMP;
    /**
     * <code>XDBC_SUBCODE_HOUR = 4;</code>
     */
    public static final XdbcDatetimeSubcode XDBC_SUBCODE_HOUR = XDBC_SUBCODE_TIME_WITH_TIMEZONE;
    /**
     * <code>XDBC_SUBCODE_MINUTE = 5;</code>
     */
    public static final XdbcDatetimeSubcode XDBC_SUBCODE_MINUTE = XDBC_SUBCODE_TIMESTAMP_WITH_TIMEZONE;
    /**
     * <code>XDBC_SUBCODE_UNKNOWN = 0;</code>
     */
    public static final int XDBC_SUBCODE_UNKNOWN_VALUE = 0;
    /**
     * <code>XDBC_SUBCODE_YEAR = 1;</code>
     */
    public static final int XDBC_SUBCODE_YEAR_VALUE = 1;
    /**
     * <code>XDBC_SUBCODE_DATE = 1;</code>
     */
    public static final int XDBC_SUBCODE_DATE_VALUE = 1;
    /**
     * <code>XDBC_SUBCODE_TIME = 2;</code>
     */
    public static final int XDBC_SUBCODE_TIME_VALUE = 2;
    /**
     * <code>XDBC_SUBCODE_MONTH = 2;</code>
     */
    public static final int XDBC_SUBCODE_MONTH_VALUE = 2;
    /**
     * <code>XDBC_SUBCODE_TIMESTAMP = 3;</code>
     */
    public static final int XDBC_SUBCODE_TIMESTAMP_VALUE = 3;
    /**
     * <code>XDBC_SUBCODE_DAY = 3;</code>
     */
    public static final int XDBC_SUBCODE_DAY_VALUE = 3;
    /**
     * <code>XDBC_SUBCODE_TIME_WITH_TIMEZONE = 4;</code>
     */
    public static final int XDBC_SUBCODE_TIME_WITH_TIMEZONE_VALUE = 4;
    /**
     * <code>XDBC_SUBCODE_HOUR = 4;</code>
     */
    public static final int XDBC_SUBCODE_HOUR_VALUE = 4;
    /**
     * <code>XDBC_SUBCODE_TIMESTAMP_WITH_TIMEZONE = 5;</code>
     */
    public static final int XDBC_SUBCODE_TIMESTAMP_WITH_TIMEZONE_VALUE = 5;
    /**
     * <code>XDBC_SUBCODE_MINUTE = 5;</code>
     */
    public static final int XDBC_SUBCODE_MINUTE_VALUE = 5;
    /**
     * <code>XDBC_SUBCODE_SECOND = 6;</code>
     */
    public static final int XDBC_SUBCODE_SECOND_VALUE = 6;
    /**
     * <code>XDBC_SUBCODE_YEAR_TO_MONTH = 7;</code>
     */
    public static final int XDBC_SUBCODE_YEAR_TO_MONTH_VALUE = 7;
    /**
     * <code>XDBC_SUBCODE_DAY_TO_HOUR = 8;</code>
     */
    public static final int XDBC_SUBCODE_DAY_TO_HOUR_VALUE = 8;
    /**
     * <code>XDBC_SUBCODE_DAY_TO_MINUTE = 9;</code>
     */
    public static final int XDBC_SUBCODE_DAY_TO_MINUTE_VALUE = 9;
    /**
     * <code>XDBC_SUBCODE_DAY_TO_SECOND = 10;</code>
     */
    public static final int XDBC_SUBCODE_DAY_TO_SECOND_VALUE = 10;
    /**
     * <code>XDBC_SUBCODE_HOUR_TO_MINUTE = 11;</code>
     */
    public static final int XDBC_SUBCODE_HOUR_TO_MINUTE_VALUE = 11;
    /**
     * <code>XDBC_SUBCODE_HOUR_TO_SECOND = 12;</code>
     */
    public static final int XDBC_SUBCODE_HOUR_TO_SECOND_VALUE = 12;
    /**
     * <code>XDBC_SUBCODE_MINUTE_TO_SECOND = 13;</code>
     */
    public static final int XDBC_SUBCODE_MINUTE_TO_SECOND_VALUE = 13;
    /**
     * <code>XDBC_SUBCODE_INTERVAL_YEAR = 101;</code>
     */
    public static final int XDBC_SUBCODE_INTERVAL_YEAR_VALUE = 101;
    /**
     * <code>XDBC_SUBCODE_INTERVAL_MONTH = 102;</code>
     */
    public static final int XDBC_SUBCODE_INTERVAL_MONTH_VALUE = 102;
    /**
     * <code>XDBC_SUBCODE_INTERVAL_DAY = 103;</code>
     */
    public static final int XDBC_SUBCODE_INTERVAL_DAY_VALUE = 103;
    /**
     * <code>XDBC_SUBCODE_INTERVAL_HOUR = 104;</code>
     */
    public static final int XDBC_SUBCODE_INTERVAL_HOUR_VALUE = 104;
    /**
     * <code>XDBC_SUBCODE_INTERVAL_MINUTE = 105;</code>
     */
    public static final int XDBC_SUBCODE_INTERVAL_MINUTE_VALUE = 105;
    /**
     * <code>XDBC_SUBCODE_INTERVAL_SECOND = 106;</code>
     */
    public static final int XDBC_SUBCODE_INTERVAL_SECOND_VALUE = 106;
    /**
     * <code>XDBC_SUBCODE_INTERVAL_YEAR_TO_MONTH = 107;</code>
     */
    public static final int XDBC_SUBCODE_INTERVAL_YEAR_TO_MONTH_VALUE = 107;
    /**
     * <code>XDBC_SUBCODE_INTERVAL_DAY_TO_HOUR = 108;</code>
     */
    public static final int XDBC_SUBCODE_INTERVAL_DAY_TO_HOUR_VALUE = 108;
    /**
     * <code>XDBC_SUBCODE_INTERVAL_DAY_TO_MINUTE = 109;</code>
     */
    public static final int XDBC_SUBCODE_INTERVAL_DAY_TO_MINUTE_VALUE = 109;
    /**
     * <code>XDBC_SUBCODE_INTERVAL_DAY_TO_SECOND = 110;</code>
     */
    public static final int XDBC_SUBCODE_INTERVAL_DAY_TO_SECOND_VALUE = 110;
    /**
     * <code>XDBC_SUBCODE_INTERVAL_HOUR_TO_MINUTE = 111;</code>
     */
    public static final int XDBC_SUBCODE_INTERVAL_HOUR_TO_MINUTE_VALUE = 111;
    /**
     * <code>XDBC_SUBCODE_INTERVAL_HOUR_TO_SECOND = 112;</code>
     */
    public static final int XDBC_SUBCODE_INTERVAL_HOUR_TO_SECOND_VALUE = 112;
    /**
     * <code>XDBC_SUBCODE_INTERVAL_MINUTE_TO_SECOND = 113;</code>
     */
    public static final int XDBC_SUBCODE_INTERVAL_MINUTE_TO_SECOND_VALUE = 113;


    public final int getNumber() {
      if (index == -1) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static XdbcDatetimeSubcode valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static XdbcDatetimeSubcode forNumber(int value) {
      switch (value) {
        case 0: return XDBC_SUBCODE_UNKNOWN;
        case 1: return XDBC_SUBCODE_YEAR;
        case 2: return XDBC_SUBCODE_TIME;
        case 3: return XDBC_SUBCODE_TIMESTAMP;
        case 4: return XDBC_SUBCODE_TIME_WITH_TIMEZONE;
        case 5: return XDBC_SUBCODE_TIMESTAMP_WITH_TIMEZONE;
        case 6: return XDBC_SUBCODE_SECOND;
        case 7: return XDBC_SUBCODE_YEAR_TO_MONTH;
        case 8: return XDBC_SUBCODE_DAY_TO_HOUR;
        case 9: return XDBC_SUBCODE_DAY_TO_MINUTE;
        case 10: return XDBC_SUBCODE_DAY_TO_SECOND;
        case 11: return XDBC_SUBCODE_HOUR_TO_MINUTE;
        case 12: return XDBC_SUBCODE_HOUR_TO_SECOND;
        case 13: return XDBC_SUBCODE_MINUTE_TO_SECOND;
        case 101: return XDBC_SUBCODE_INTERVAL_YEAR;
        case 102: return XDBC_SUBCODE_INTERVAL_MONTH;
        case 103: return XDBC_SUBCODE_INTERVAL_DAY;
        case 104: return XDBC_SUBCODE_INTERVAL_HOUR;
        case 105: return XDBC_SUBCODE_INTERVAL_MINUTE;
        case 106: return XDBC_SUBCODE_INTERVAL_SECOND;
        case 107: return XDBC_SUBCODE_INTERVAL_YEAR_TO_MONTH;
        case 108: return XDBC_SUBCODE_INTERVAL_DAY_TO_HOUR;
        case 109: return XDBC_SUBCODE_INTERVAL_DAY_TO_MINUTE;
        case 110: return XDBC_SUBCODE_INTERVAL_DAY_TO_SECOND;
        case 111: return XDBC_SUBCODE_INTERVAL_HOUR_TO_MINUTE;
        case 112: return XDBC_SUBCODE_INTERVAL_HOUR_TO_SECOND;
        case 113: return XDBC_SUBCODE_INTERVAL_MINUTE_TO_SECOND;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<XdbcDatetimeSubcode>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        XdbcDatetimeSubcode> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<XdbcDatetimeSubcode>() {
            public XdbcDatetimeSubcode findValueByNumber(int number) {
              return XdbcDatetimeSubcode.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (index == -1) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(index);
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.getDescriptor().getEnumTypes().get(18);
    }

    private static final XdbcDatetimeSubcode[] VALUES = getStaticValuesArray();
    private static XdbcDatetimeSubcode[] getStaticValuesArray() {
      return new XdbcDatetimeSubcode[] {
      XDBC_SUBCODE_UNKNOWN, XDBC_SUBCODE_YEAR, XDBC_SUBCODE_DATE, XDBC_SUBCODE_TIME, XDBC_SUBCODE_MONTH, XDBC_SUBCODE_TIMESTAMP, XDBC_SUBCODE_DAY, XDBC_SUBCODE_TIME_WITH_TIMEZONE, XDBC_SUBCODE_HOUR, XDBC_SUBCODE_TIMESTAMP_WITH_TIMEZONE, XDBC_SUBCODE_MINUTE, XDBC_SUBCODE_SECOND, XDBC_SUBCODE_YEAR_TO_MONTH, XDBC_SUBCODE_DAY_TO_HOUR, XDBC_SUBCODE_DAY_TO_MINUTE, XDBC_SUBCODE_DAY_TO_SECOND, XDBC_SUBCODE_HOUR_TO_MINUTE, XDBC_SUBCODE_HOUR_TO_SECOND, XDBC_SUBCODE_MINUTE_TO_SECOND, XDBC_SUBCODE_INTERVAL_YEAR, XDBC_SUBCODE_INTERVAL_MONTH, XDBC_SUBCODE_INTERVAL_DAY, XDBC_SUBCODE_INTERVAL_HOUR, XDBC_SUBCODE_INTERVAL_MINUTE, XDBC_SUBCODE_INTERVAL_SECOND, XDBC_SUBCODE_INTERVAL_YEAR_TO_MONTH, XDBC_SUBCODE_INTERVAL_DAY_TO_HOUR, XDBC_SUBCODE_INTERVAL_DAY_TO_MINUTE, XDBC_SUBCODE_INTERVAL_DAY_TO_SECOND, XDBC_SUBCODE_INTERVAL_HOUR_TO_MINUTE, XDBC_SUBCODE_INTERVAL_HOUR_TO_SECOND, XDBC_SUBCODE_INTERVAL_MINUTE_TO_SECOND, 
      };
    }
    public static XdbcDatetimeSubcode valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int index;
    private final int value;

    private XdbcDatetimeSubcode(int index, int value) {
      this.index = index;
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.XdbcDatetimeSubcode)
  }

  /**
   * Protobuf enum {@code arrow.flight.protocol.sql.Nullable}
   */
  public enum Nullable
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <pre>
     **
     * Indicates that the fields does not allow the use of null values.
     * </pre>
     *
     * <code>NULLABILITY_NO_NULLS = 0;</code>
     */
    NULLABILITY_NO_NULLS(0),
    /**
     * <pre>
     **
     * Indicates that the fields allow the use of null values.
     * </pre>
     *
     * <code>NULLABILITY_NULLABLE = 1;</code>
     */
    NULLABILITY_NULLABLE(1),
    /**
     * <pre>
     **
     * Indicates that nullability of the fields cannot be determined.
     * </pre>
     *
     * <code>NULLABILITY_UNKNOWN = 2;</code>
     */
    NULLABILITY_UNKNOWN(2),
    UNRECOGNIZED(-1),
    ;

    /**
     * <pre>
     **
     * Indicates that the fields does not allow the use of null values.
     * </pre>
     *
     * <code>NULLABILITY_NO_NULLS = 0;</code>
     */
    public static final int NULLABILITY_NO_NULLS_VALUE = 0;
    /**
     * <pre>
     **
     * Indicates that the fields allow the use of null values.
     * </pre>
     *
     * <code>NULLABILITY_NULLABLE = 1;</code>
     */
    public static final int NULLABILITY_NULLABLE_VALUE = 1;
    /**
     * <pre>
     **
     * Indicates that nullability of the fields cannot be determined.
     * </pre>
     *
     * <code>NULLABILITY_UNKNOWN = 2;</code>
     */
    public static final int NULLABILITY_UNKNOWN_VALUE = 2;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static Nullable valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static Nullable forNumber(int value) {
      switch (value) {
        case 0: return NULLABILITY_NO_NULLS;
        case 1: return NULLABILITY_NULLABLE;
        case 2: return NULLABILITY_UNKNOWN;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<Nullable>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        Nullable> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<Nullable>() {
            public Nullable findValueByNumber(int number) {
              return Nullable.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.getDescriptor().getEnumTypes().get(19);
    }

    private static final Nullable[] VALUES = values();

    public static Nullable valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private Nullable(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.Nullable)
  }

  /**
   * Protobuf enum {@code arrow.flight.protocol.sql.Searchable}
   */
  public enum Searchable
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <pre>
     **
     * Indicates that column cannot be used in a WHERE clause.
     * </pre>
     *
     * <code>SEARCHABLE_NONE = 0;</code>
     */
    SEARCHABLE_NONE(0),
    /**
     * <pre>
     **
     * Indicates that the column can be used in a WHERE clause if it is using a
     * LIKE operator.
     * </pre>
     *
     * <code>SEARCHABLE_CHAR = 1;</code>
     */
    SEARCHABLE_CHAR(1),
    /**
     * <pre>
     **
     * Indicates that the column can be used In a WHERE clause with any
     * operator other than LIKE.
     *
     * - Allowed operators: comparison, quantified comparison, BETWEEN,
     *                      DISTINCT, IN, MATCH, and UNIQUE.
     * </pre>
     *
     * <code>SEARCHABLE_BASIC = 2;</code>
     */
    SEARCHABLE_BASIC(2),
    /**
     * <pre>
     **
     * Indicates that the column can be used in a WHERE clause using any operator.
     * </pre>
     *
     * <code>SEARCHABLE_FULL = 3;</code>
     */
    SEARCHABLE_FULL(3),
    UNRECOGNIZED(-1),
    ;

    /**
     * <pre>
     **
     * Indicates that column cannot be used in a WHERE clause.
     * </pre>
     *
     * <code>SEARCHABLE_NONE = 0;</code>
     */
    public static final int SEARCHABLE_NONE_VALUE = 0;
    /**
     * <pre>
     **
     * Indicates that the column can be used in a WHERE clause if it is using a
     * LIKE operator.
     * </pre>
     *
     * <code>SEARCHABLE_CHAR = 1;</code>
     */
    public static final int SEARCHABLE_CHAR_VALUE = 1;
    /**
     * <pre>
     **
     * Indicates that the column can be used In a WHERE clause with any
     * operator other than LIKE.
     *
     * - Allowed operators: comparison, quantified comparison, BETWEEN,
     *                      DISTINCT, IN, MATCH, and UNIQUE.
     * </pre>
     *
     * <code>SEARCHABLE_BASIC = 2;</code>
     */
    public static final int SEARCHABLE_BASIC_VALUE = 2;
    /**
     * <pre>
     **
     * Indicates that the column can be used in a WHERE clause using any operator.
     * </pre>
     *
     * <code>SEARCHABLE_FULL = 3;</code>
     */
    public static final int SEARCHABLE_FULL_VALUE = 3;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static Searchable valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static Searchable forNumber(int value) {
      switch (value) {
        case 0: return SEARCHABLE_NONE;
        case 1: return SEARCHABLE_CHAR;
        case 2: return SEARCHABLE_BASIC;
        case 3: return SEARCHABLE_FULL;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<Searchable>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        Searchable> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<Searchable>() {
            public Searchable findValueByNumber(int number) {
              return Searchable.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.getDescriptor().getEnumTypes().get(20);
    }

    private static final Searchable[] VALUES = values();

    public static Searchable valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private Searchable(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.Searchable)
  }

  /**
   * Protobuf enum {@code arrow.flight.protocol.sql.UpdateDeleteRules}
   */
  public enum UpdateDeleteRules
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>CASCADE = 0;</code>
     */
    CASCADE(0),
    /**
     * <code>RESTRICT = 1;</code>
     */
    RESTRICT(1),
    /**
     * <code>SET_NULL = 2;</code>
     */
    SET_NULL(2),
    /**
     * <code>NO_ACTION = 3;</code>
     */
    NO_ACTION(3),
    /**
     * <code>SET_DEFAULT = 4;</code>
     */
    SET_DEFAULT(4),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>CASCADE = 0;</code>
     */
    public static final int CASCADE_VALUE = 0;
    /**
     * <code>RESTRICT = 1;</code>
     */
    public static final int RESTRICT_VALUE = 1;
    /**
     * <code>SET_NULL = 2;</code>
     */
    public static final int SET_NULL_VALUE = 2;
    /**
     * <code>NO_ACTION = 3;</code>
     */
    public static final int NO_ACTION_VALUE = 3;
    /**
     * <code>SET_DEFAULT = 4;</code>
     */
    public static final int SET_DEFAULT_VALUE = 4;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static UpdateDeleteRules valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static UpdateDeleteRules forNumber(int value) {
      switch (value) {
        case 0: return CASCADE;
        case 1: return RESTRICT;
        case 2: return SET_NULL;
        case 3: return NO_ACTION;
        case 4: return SET_DEFAULT;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<UpdateDeleteRules>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        UpdateDeleteRules> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<UpdateDeleteRules>() {
            public UpdateDeleteRules findValueByNumber(int number) {
              return UpdateDeleteRules.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.getDescriptor().getEnumTypes().get(21);
    }

    private static final UpdateDeleteRules[] VALUES = values();

    public static UpdateDeleteRules valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private UpdateDeleteRules(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.UpdateDeleteRules)
  }

  public interface CommandGetSqlInfoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.CommandGetSqlInfo)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *
     * Values are modelled after ODBC's SQLGetInfo() function. This information is intended to provide
     * Flight SQL clients with basic, SQL syntax and SQL functions related information.
     * More information types can be added in future releases.
     * E.g. more SQL syntax support types, scalar functions support, type conversion support etc.
     *
     * Note that the set of metadata may expand.
     *
     * Initially, Flight SQL will support the following information types:
     * - Server Information - Range [0-500)
     * - Syntax Information - Range [500-1000)
     * Range [0-10,000) is reserved for defaults (see SqlInfo enum for default options).
     * Custom options should start at 10,000.
     *
     * If omitted, then all metadata will be retrieved.
     * Flight SQL Servers may choose to include additional metadata above and beyond the specified set, however they must
     * at least return the specified set. IDs ranging from 0 to 10,000 (exclusive) are reserved for future use.
     * If additional metadata is included, the metadata IDs should start from 10,000.
     * </pre>
     *
     * <code>repeated uint32 info = 1;</code>
     * @return A list containing the info.
     */
    java.util.List<java.lang.Integer> getInfoList();
    /**
     * <pre>
     *
     * Values are modelled after ODBC's SQLGetInfo() function. This information is intended to provide
     * Flight SQL clients with basic, SQL syntax and SQL functions related information.
     * More information types can be added in future releases.
     * E.g. more SQL syntax support types, scalar functions support, type conversion support etc.
     *
     * Note that the set of metadata may expand.
     *
     * Initially, Flight SQL will support the following information types:
     * - Server Information - Range [0-500)
     * - Syntax Information - Range [500-1000)
     * Range [0-10,000) is reserved for defaults (see SqlInfo enum for default options).
     * Custom options should start at 10,000.
     *
     * If omitted, then all metadata will be retrieved.
     * Flight SQL Servers may choose to include additional metadata above and beyond the specified set, however they must
     * at least return the specified set. IDs ranging from 0 to 10,000 (exclusive) are reserved for future use.
     * If additional metadata is included, the metadata IDs should start from 10,000.
     * </pre>
     *
     * <code>repeated uint32 info = 1;</code>
     * @return The count of info.
     */
    int getInfoCount();
    /**
     * <pre>
     *
     * Values are modelled after ODBC's SQLGetInfo() function. This information is intended to provide
     * Flight SQL clients with basic, SQL syntax and SQL functions related information.
     * More information types can be added in future releases.
     * E.g. more SQL syntax support types, scalar functions support, type conversion support etc.
     *
     * Note that the set of metadata may expand.
     *
     * Initially, Flight SQL will support the following information types:
     * - Server Information - Range [0-500)
     * - Syntax Information - Range [500-1000)
     * Range [0-10,000) is reserved for defaults (see SqlInfo enum for default options).
     * Custom options should start at 10,000.
     *
     * If omitted, then all metadata will be retrieved.
     * Flight SQL Servers may choose to include additional metadata above and beyond the specified set, however they must
     * at least return the specified set. IDs ranging from 0 to 10,000 (exclusive) are reserved for future use.
     * If additional metadata is included, the metadata IDs should start from 10,000.
     * </pre>
     *
     * <code>repeated uint32 info = 1;</code>
     * @param index The index of the element to return.
     * @return The info at the given index.
     */
    int getInfo(int index);
  }
  /**
   * <pre>
   *
   * Represents a metadata request. Used in the command member of FlightDescriptor
   * for the following RPC calls:
   *  - GetSchema: return the Arrow schema of the query.
   *  - GetFlightInfo: execute the metadata request.
   *
   * The returned Arrow schema will be:
   * &lt;
   *  info_name: uint32 not null,
   *  value: dense_union&lt;
   *              string_value: utf8,
   *              bool_value: bool,
   *              bigint_value: int64,
   *              int32_bitmask: int32,
   *              string_list: list&lt;string_data: utf8&gt;
   *              int32_to_int32_list_map: map&lt;key: int32, value: list&lt;$data$: int32&gt;&gt;
   * &gt;
   * where there is one row per requested piece of metadata information.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.CommandGetSqlInfo}
   */
  public static final class CommandGetSqlInfo extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.CommandGetSqlInfo)
      CommandGetSqlInfoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CommandGetSqlInfo.newBuilder() to construct.
    private CommandGetSqlInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CommandGetSqlInfo() {
      info_ = emptyIntList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CommandGetSqlInfo();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetSqlInfo_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetSqlInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo.Builder.class);
    }

    public static final int INFO_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList info_ =
        emptyIntList();
    /**
     * <pre>
     *
     * Values are modelled after ODBC's SQLGetInfo() function. This information is intended to provide
     * Flight SQL clients with basic, SQL syntax and SQL functions related information.
     * More information types can be added in future releases.
     * E.g. more SQL syntax support types, scalar functions support, type conversion support etc.
     *
     * Note that the set of metadata may expand.
     *
     * Initially, Flight SQL will support the following information types:
     * - Server Information - Range [0-500)
     * - Syntax Information - Range [500-1000)
     * Range [0-10,000) is reserved for defaults (see SqlInfo enum for default options).
     * Custom options should start at 10,000.
     *
     * If omitted, then all metadata will be retrieved.
     * Flight SQL Servers may choose to include additional metadata above and beyond the specified set, however they must
     * at least return the specified set. IDs ranging from 0 to 10,000 (exclusive) are reserved for future use.
     * If additional metadata is included, the metadata IDs should start from 10,000.
     * </pre>
     *
     * <code>repeated uint32 info = 1;</code>
     * @return A list containing the info.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getInfoList() {
      return info_;
    }
    /**
     * <pre>
     *
     * Values are modelled after ODBC's SQLGetInfo() function. This information is intended to provide
     * Flight SQL clients with basic, SQL syntax and SQL functions related information.
     * More information types can be added in future releases.
     * E.g. more SQL syntax support types, scalar functions support, type conversion support etc.
     *
     * Note that the set of metadata may expand.
     *
     * Initially, Flight SQL will support the following information types:
     * - Server Information - Range [0-500)
     * - Syntax Information - Range [500-1000)
     * Range [0-10,000) is reserved for defaults (see SqlInfo enum for default options).
     * Custom options should start at 10,000.
     *
     * If omitted, then all metadata will be retrieved.
     * Flight SQL Servers may choose to include additional metadata above and beyond the specified set, however they must
     * at least return the specified set. IDs ranging from 0 to 10,000 (exclusive) are reserved for future use.
     * If additional metadata is included, the metadata IDs should start from 10,000.
     * </pre>
     *
     * <code>repeated uint32 info = 1;</code>
     * @return The count of info.
     */
    public int getInfoCount() {
      return info_.size();
    }
    /**
     * <pre>
     *
     * Values are modelled after ODBC's SQLGetInfo() function. This information is intended to provide
     * Flight SQL clients with basic, SQL syntax and SQL functions related information.
     * More information types can be added in future releases.
     * E.g. more SQL syntax support types, scalar functions support, type conversion support etc.
     *
     * Note that the set of metadata may expand.
     *
     * Initially, Flight SQL will support the following information types:
     * - Server Information - Range [0-500)
     * - Syntax Information - Range [500-1000)
     * Range [0-10,000) is reserved for defaults (see SqlInfo enum for default options).
     * Custom options should start at 10,000.
     *
     * If omitted, then all metadata will be retrieved.
     * Flight SQL Servers may choose to include additional metadata above and beyond the specified set, however they must
     * at least return the specified set. IDs ranging from 0 to 10,000 (exclusive) are reserved for future use.
     * If additional metadata is included, the metadata IDs should start from 10,000.
     * </pre>
     *
     * <code>repeated uint32 info = 1;</code>
     * @param index The index of the element to return.
     * @return The info at the given index.
     */
    public int getInfo(int index) {
      return info_.getInt(index);
    }
    private int infoMemoizedSerializedSize = -1;

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (getInfoList().size() > 0) {
        output.writeUInt32NoTag(10);
        output.writeUInt32NoTag(infoMemoizedSerializedSize);
      }
      for (int i = 0; i < info_.size(); i++) {
        output.writeUInt32NoTag(info_.getInt(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < info_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(info_.getInt(i));
        }
        size += dataSize;
        if (!getInfoList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        infoMemoizedSerializedSize = dataSize;
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo other = (org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo) obj;

      if (!getInfoList()
          .equals(other.getInfoList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getInfoCount() > 0) {
        hash = (37 * hash) + INFO_FIELD_NUMBER;
        hash = (53 * hash) + getInfoList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Represents a metadata request. Used in the command member of FlightDescriptor
     * for the following RPC calls:
     *  - GetSchema: return the Arrow schema of the query.
     *  - GetFlightInfo: execute the metadata request.
     *
     * The returned Arrow schema will be:
     * &lt;
     *  info_name: uint32 not null,
     *  value: dense_union&lt;
     *              string_value: utf8,
     *              bool_value: bool,
     *              bigint_value: int64,
     *              int32_bitmask: int32,
     *              string_list: list&lt;string_data: utf8&gt;
     *              int32_to_int32_list_map: map&lt;key: int32, value: list&lt;$data$: int32&gt;&gt;
     * &gt;
     * where there is one row per requested piece of metadata information.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.CommandGetSqlInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.CommandGetSqlInfo)
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetSqlInfo_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetSqlInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        info_ = emptyIntList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetSqlInfo_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo build() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo result = new org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          info_.makeImmutable();
          result.info_ = info_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo.getDefaultInstance()) return this;
        if (!other.info_.isEmpty()) {
          if (info_.isEmpty()) {
            info_ = other.info_;
            info_.makeImmutable();
            bitField0_ |= 0x00000001;
          } else {
            ensureInfoIsMutable();
            info_.addAll(other.info_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                int v = input.readUInt32();
                ensureInfoIsMutable();
                info_.addInt(v);
                break;
              } // case 8
              case 10: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureInfoIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  info_.addInt(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.Internal.IntList info_ = emptyIntList();
      private void ensureInfoIsMutable() {
        if (!info_.isModifiable()) {
          info_ = makeMutableCopy(info_);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <pre>
       *
       * Values are modelled after ODBC's SQLGetInfo() function. This information is intended to provide
       * Flight SQL clients with basic, SQL syntax and SQL functions related information.
       * More information types can be added in future releases.
       * E.g. more SQL syntax support types, scalar functions support, type conversion support etc.
       *
       * Note that the set of metadata may expand.
       *
       * Initially, Flight SQL will support the following information types:
       * - Server Information - Range [0-500)
       * - Syntax Information - Range [500-1000)
       * Range [0-10,000) is reserved for defaults (see SqlInfo enum for default options).
       * Custom options should start at 10,000.
       *
       * If omitted, then all metadata will be retrieved.
       * Flight SQL Servers may choose to include additional metadata above and beyond the specified set, however they must
       * at least return the specified set. IDs ranging from 0 to 10,000 (exclusive) are reserved for future use.
       * If additional metadata is included, the metadata IDs should start from 10,000.
       * </pre>
       *
       * <code>repeated uint32 info = 1;</code>
       * @return A list containing the info.
       */
      public java.util.List<java.lang.Integer>
          getInfoList() {
        info_.makeImmutable();
        return info_;
      }
      /**
       * <pre>
       *
       * Values are modelled after ODBC's SQLGetInfo() function. This information is intended to provide
       * Flight SQL clients with basic, SQL syntax and SQL functions related information.
       * More information types can be added in future releases.
       * E.g. more SQL syntax support types, scalar functions support, type conversion support etc.
       *
       * Note that the set of metadata may expand.
       *
       * Initially, Flight SQL will support the following information types:
       * - Server Information - Range [0-500)
       * - Syntax Information - Range [500-1000)
       * Range [0-10,000) is reserved for defaults (see SqlInfo enum for default options).
       * Custom options should start at 10,000.
       *
       * If omitted, then all metadata will be retrieved.
       * Flight SQL Servers may choose to include additional metadata above and beyond the specified set, however they must
       * at least return the specified set. IDs ranging from 0 to 10,000 (exclusive) are reserved for future use.
       * If additional metadata is included, the metadata IDs should start from 10,000.
       * </pre>
       *
       * <code>repeated uint32 info = 1;</code>
       * @return The count of info.
       */
      public int getInfoCount() {
        return info_.size();
      }
      /**
       * <pre>
       *
       * Values are modelled after ODBC's SQLGetInfo() function. This information is intended to provide
       * Flight SQL clients with basic, SQL syntax and SQL functions related information.
       * More information types can be added in future releases.
       * E.g. more SQL syntax support types, scalar functions support, type conversion support etc.
       *
       * Note that the set of metadata may expand.
       *
       * Initially, Flight SQL will support the following information types:
       * - Server Information - Range [0-500)
       * - Syntax Information - Range [500-1000)
       * Range [0-10,000) is reserved for defaults (see SqlInfo enum for default options).
       * Custom options should start at 10,000.
       *
       * If omitted, then all metadata will be retrieved.
       * Flight SQL Servers may choose to include additional metadata above and beyond the specified set, however they must
       * at least return the specified set. IDs ranging from 0 to 10,000 (exclusive) are reserved for future use.
       * If additional metadata is included, the metadata IDs should start from 10,000.
       * </pre>
       *
       * <code>repeated uint32 info = 1;</code>
       * @param index The index of the element to return.
       * @return The info at the given index.
       */
      public int getInfo(int index) {
        return info_.getInt(index);
      }
      /**
       * <pre>
       *
       * Values are modelled after ODBC's SQLGetInfo() function. This information is intended to provide
       * Flight SQL clients with basic, SQL syntax and SQL functions related information.
       * More information types can be added in future releases.
       * E.g. more SQL syntax support types, scalar functions support, type conversion support etc.
       *
       * Note that the set of metadata may expand.
       *
       * Initially, Flight SQL will support the following information types:
       * - Server Information - Range [0-500)
       * - Syntax Information - Range [500-1000)
       * Range [0-10,000) is reserved for defaults (see SqlInfo enum for default options).
       * Custom options should start at 10,000.
       *
       * If omitted, then all metadata will be retrieved.
       * Flight SQL Servers may choose to include additional metadata above and beyond the specified set, however they must
       * at least return the specified set. IDs ranging from 0 to 10,000 (exclusive) are reserved for future use.
       * If additional metadata is included, the metadata IDs should start from 10,000.
       * </pre>
       *
       * <code>repeated uint32 info = 1;</code>
       * @param index The index to set the value at.
       * @param value The info to set.
       * @return This builder for chaining.
       */
      public Builder setInfo(
          int index, int value) {

        ensureInfoIsMutable();
        info_.setInt(index, value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Values are modelled after ODBC's SQLGetInfo() function. This information is intended to provide
       * Flight SQL clients with basic, SQL syntax and SQL functions related information.
       * More information types can be added in future releases.
       * E.g. more SQL syntax support types, scalar functions support, type conversion support etc.
       *
       * Note that the set of metadata may expand.
       *
       * Initially, Flight SQL will support the following information types:
       * - Server Information - Range [0-500)
       * - Syntax Information - Range [500-1000)
       * Range [0-10,000) is reserved for defaults (see SqlInfo enum for default options).
       * Custom options should start at 10,000.
       *
       * If omitted, then all metadata will be retrieved.
       * Flight SQL Servers may choose to include additional metadata above and beyond the specified set, however they must
       * at least return the specified set. IDs ranging from 0 to 10,000 (exclusive) are reserved for future use.
       * If additional metadata is included, the metadata IDs should start from 10,000.
       * </pre>
       *
       * <code>repeated uint32 info = 1;</code>
       * @param value The info to add.
       * @return This builder for chaining.
       */
      public Builder addInfo(int value) {

        ensureInfoIsMutable();
        info_.addInt(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Values are modelled after ODBC's SQLGetInfo() function. This information is intended to provide
       * Flight SQL clients with basic, SQL syntax and SQL functions related information.
       * More information types can be added in future releases.
       * E.g. more SQL syntax support types, scalar functions support, type conversion support etc.
       *
       * Note that the set of metadata may expand.
       *
       * Initially, Flight SQL will support the following information types:
       * - Server Information - Range [0-500)
       * - Syntax Information - Range [500-1000)
       * Range [0-10,000) is reserved for defaults (see SqlInfo enum for default options).
       * Custom options should start at 10,000.
       *
       * If omitted, then all metadata will be retrieved.
       * Flight SQL Servers may choose to include additional metadata above and beyond the specified set, however they must
       * at least return the specified set. IDs ranging from 0 to 10,000 (exclusive) are reserved for future use.
       * If additional metadata is included, the metadata IDs should start from 10,000.
       * </pre>
       *
       * <code>repeated uint32 info = 1;</code>
       * @param values The info to add.
       * @return This builder for chaining.
       */
      public Builder addAllInfo(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureInfoIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, info_);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Values are modelled after ODBC's SQLGetInfo() function. This information is intended to provide
       * Flight SQL clients with basic, SQL syntax and SQL functions related information.
       * More information types can be added in future releases.
       * E.g. more SQL syntax support types, scalar functions support, type conversion support etc.
       *
       * Note that the set of metadata may expand.
       *
       * Initially, Flight SQL will support the following information types:
       * - Server Information - Range [0-500)
       * - Syntax Information - Range [500-1000)
       * Range [0-10,000) is reserved for defaults (see SqlInfo enum for default options).
       * Custom options should start at 10,000.
       *
       * If omitted, then all metadata will be retrieved.
       * Flight SQL Servers may choose to include additional metadata above and beyond the specified set, however they must
       * at least return the specified set. IDs ranging from 0 to 10,000 (exclusive) are reserved for future use.
       * If additional metadata is included, the metadata IDs should start from 10,000.
       * </pre>
       *
       * <code>repeated uint32 info = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearInfo() {
        info_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.CommandGetSqlInfo)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.CommandGetSqlInfo)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CommandGetSqlInfo>
        PARSER = new com.google.protobuf.AbstractParser<CommandGetSqlInfo>() {
      @java.lang.Override
      public CommandGetSqlInfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CommandGetSqlInfo> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CommandGetSqlInfo> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetSqlInfo getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CommandGetXdbcTypeInfoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.CommandGetXdbcTypeInfo)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *
     * Specifies the data type to search for the info.
     * </pre>
     *
     * <code>optional int32 data_type = 1;</code>
     * @return Whether the dataType field is set.
     */
    boolean hasDataType();
    /**
     * <pre>
     *
     * Specifies the data type to search for the info.
     * </pre>
     *
     * <code>optional int32 data_type = 1;</code>
     * @return The dataType.
     */
    int getDataType();
  }
  /**
   * <pre>
   *
   * Represents a request to retrieve information about data type supported on a Flight SQL enabled backend.
   * Used in the command member of FlightDescriptor for the following RPC calls:
   *  - GetSchema: return the schema of the query.
   *  - GetFlightInfo: execute the catalog metadata request.
   *
   * The returned schema will be:
   * &lt;
   *   type_name: utf8 not null (The name of the data type, for example: VARCHAR, INTEGER, etc),
   *   data_type: int32 not null (The SQL data type),
   *   column_size: int32 (The maximum size supported by that column.
   *                       In case of exact numeric types, this represents the maximum precision.
   *                       In case of string types, this represents the character length.
   *                       In case of datetime data types, this represents the length in characters of the string representation.
   *                       NULL is returned for data types where column size is not applicable.),
   *   literal_prefix: utf8 (Character or characters used to prefix a literal, NULL is returned for
   *                         data types where a literal prefix is not applicable.),
   *   literal_suffix: utf8 (Character or characters used to terminate a literal,
   *                         NULL is returned for data types where a literal suffix is not applicable.),
   *   create_params: list&lt;utf8 not null&gt;
   *                        (A list of keywords corresponding to which parameters can be used when creating
   *                         a column for that specific type.
   *                         NULL is returned if there are no parameters for the data type definition.),
   *   nullable: int32 not null (Shows if the data type accepts a NULL value. The possible values can be seen in the
   *                             Nullable enum.),
   *   case_sensitive: bool not null (Shows if a character data type is case-sensitive in collations and comparisons),
   *   searchable: int32 not null (Shows how the data type is used in a WHERE clause. The possible values can be seen in the
   *                               Searchable enum.),
   *   unsigned_attribute: bool (Shows if the data type is unsigned. NULL is returned if the attribute is
   *                             not applicable to the data type or the data type is not numeric.),
   *   fixed_prec_scale: bool not null (Shows if the data type has predefined fixed precision and scale.),
   *   auto_increment: bool (Shows if the data type is auto incremental. NULL is returned if the attribute
   *                         is not applicable to the data type or the data type is not numeric.),
   *   local_type_name: utf8 (Localized version of the data source-dependent name of the data type. NULL
   *                          is returned if a localized name is not supported by the data source),
   *   minimum_scale: int32 (The minimum scale of the data type on the data source.
   *                         If a data type has a fixed scale, the MINIMUM_SCALE and MAXIMUM_SCALE
   *                         columns both contain this value. NULL is returned if scale is not applicable.),
   *   maximum_scale: int32 (The maximum scale of the data type on the data source.
   *                         NULL is returned if scale is not applicable.),
   *   sql_data_type: int32 not null (The value of the SQL DATA TYPE which has the same values
   *                                  as data_type value. Except for interval and datetime, which
   *                                  uses generic values. More info about those types can be
   *                                  obtained through datetime_subcode. The possible values can be seen
   *                                  in the XdbcDataType enum.),
   *   datetime_subcode: int32 (Only used when the SQL DATA TYPE is interval or datetime. It contains
   *                            its sub types. For type different from interval and datetime, this value
   *                            is NULL. The possible values can be seen in the XdbcDatetimeSubcode enum.),
   *   num_prec_radix: int32 (If the data type is an approximate numeric type, this column contains
   *                          the value 2 to indicate that COLUMN_SIZE specifies a number of bits. For
   *                          exact numeric types, this column contains the value 10 to indicate that
   *                          column size specifies a number of decimal digits. Otherwise, this column is NULL.),
   *   interval_precision: int32 (If the data type is an interval data type, then this column contains the value
   *                              of the interval leading precision. Otherwise, this column is NULL. This fields
   *                              is only relevant to be used by ODBC).
   * &gt;
   * The returned data should be ordered by data_type and then by type_name.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.CommandGetXdbcTypeInfo}
   */
  public static final class CommandGetXdbcTypeInfo extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.CommandGetXdbcTypeInfo)
      CommandGetXdbcTypeInfoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CommandGetXdbcTypeInfo.newBuilder() to construct.
    private CommandGetXdbcTypeInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CommandGetXdbcTypeInfo() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CommandGetXdbcTypeInfo();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetXdbcTypeInfo_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetXdbcTypeInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo.Builder.class);
    }

    private int bitField0_;
    public static final int DATA_TYPE_FIELD_NUMBER = 1;
    private int dataType_ = 0;
    /**
     * <pre>
     *
     * Specifies the data type to search for the info.
     * </pre>
     *
     * <code>optional int32 data_type = 1;</code>
     * @return Whether the dataType field is set.
     */
    @java.lang.Override
    public boolean hasDataType() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     *
     * Specifies the data type to search for the info.
     * </pre>
     *
     * <code>optional int32 data_type = 1;</code>
     * @return The dataType.
     */
    @java.lang.Override
    public int getDataType() {
      return dataType_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt32(1, dataType_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, dataType_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo other = (org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo) obj;

      if (hasDataType() != other.hasDataType()) return false;
      if (hasDataType()) {
        if (getDataType()
            != other.getDataType()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasDataType()) {
        hash = (37 * hash) + DATA_TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getDataType();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Represents a request to retrieve information about data type supported on a Flight SQL enabled backend.
     * Used in the command member of FlightDescriptor for the following RPC calls:
     *  - GetSchema: return the schema of the query.
     *  - GetFlightInfo: execute the catalog metadata request.
     *
     * The returned schema will be:
     * &lt;
     *   type_name: utf8 not null (The name of the data type, for example: VARCHAR, INTEGER, etc),
     *   data_type: int32 not null (The SQL data type),
     *   column_size: int32 (The maximum size supported by that column.
     *                       In case of exact numeric types, this represents the maximum precision.
     *                       In case of string types, this represents the character length.
     *                       In case of datetime data types, this represents the length in characters of the string representation.
     *                       NULL is returned for data types where column size is not applicable.),
     *   literal_prefix: utf8 (Character or characters used to prefix a literal, NULL is returned for
     *                         data types where a literal prefix is not applicable.),
     *   literal_suffix: utf8 (Character or characters used to terminate a literal,
     *                         NULL is returned for data types where a literal suffix is not applicable.),
     *   create_params: list&lt;utf8 not null&gt;
     *                        (A list of keywords corresponding to which parameters can be used when creating
     *                         a column for that specific type.
     *                         NULL is returned if there are no parameters for the data type definition.),
     *   nullable: int32 not null (Shows if the data type accepts a NULL value. The possible values can be seen in the
     *                             Nullable enum.),
     *   case_sensitive: bool not null (Shows if a character data type is case-sensitive in collations and comparisons),
     *   searchable: int32 not null (Shows how the data type is used in a WHERE clause. The possible values can be seen in the
     *                               Searchable enum.),
     *   unsigned_attribute: bool (Shows if the data type is unsigned. NULL is returned if the attribute is
     *                             not applicable to the data type or the data type is not numeric.),
     *   fixed_prec_scale: bool not null (Shows if the data type has predefined fixed precision and scale.),
     *   auto_increment: bool (Shows if the data type is auto incremental. NULL is returned if the attribute
     *                         is not applicable to the data type or the data type is not numeric.),
     *   local_type_name: utf8 (Localized version of the data source-dependent name of the data type. NULL
     *                          is returned if a localized name is not supported by the data source),
     *   minimum_scale: int32 (The minimum scale of the data type on the data source.
     *                         If a data type has a fixed scale, the MINIMUM_SCALE and MAXIMUM_SCALE
     *                         columns both contain this value. NULL is returned if scale is not applicable.),
     *   maximum_scale: int32 (The maximum scale of the data type on the data source.
     *                         NULL is returned if scale is not applicable.),
     *   sql_data_type: int32 not null (The value of the SQL DATA TYPE which has the same values
     *                                  as data_type value. Except for interval and datetime, which
     *                                  uses generic values. More info about those types can be
     *                                  obtained through datetime_subcode. The possible values can be seen
     *                                  in the XdbcDataType enum.),
     *   datetime_subcode: int32 (Only used when the SQL DATA TYPE is interval or datetime. It contains
     *                            its sub types. For type different from interval and datetime, this value
     *                            is NULL. The possible values can be seen in the XdbcDatetimeSubcode enum.),
     *   num_prec_radix: int32 (If the data type is an approximate numeric type, this column contains
     *                          the value 2 to indicate that COLUMN_SIZE specifies a number of bits. For
     *                          exact numeric types, this column contains the value 10 to indicate that
     *                          column size specifies a number of decimal digits. Otherwise, this column is NULL.),
     *   interval_precision: int32 (If the data type is an interval data type, then this column contains the value
     *                              of the interval leading precision. Otherwise, this column is NULL. This fields
     *                              is only relevant to be used by ODBC).
     * &gt;
     * The returned data should be ordered by data_type and then by type_name.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.CommandGetXdbcTypeInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.CommandGetXdbcTypeInfo)
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetXdbcTypeInfo_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetXdbcTypeInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        dataType_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetXdbcTypeInfo_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo build() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo result = new org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.dataType_ = dataType_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo.getDefaultInstance()) return this;
        if (other.hasDataType()) {
          setDataType(other.getDataType());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                dataType_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int dataType_ ;
      /**
       * <pre>
       *
       * Specifies the data type to search for the info.
       * </pre>
       *
       * <code>optional int32 data_type = 1;</code>
       * @return Whether the dataType field is set.
       */
      @java.lang.Override
      public boolean hasDataType() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       *
       * Specifies the data type to search for the info.
       * </pre>
       *
       * <code>optional int32 data_type = 1;</code>
       * @return The dataType.
       */
      @java.lang.Override
      public int getDataType() {
        return dataType_;
      }
      /**
       * <pre>
       *
       * Specifies the data type to search for the info.
       * </pre>
       *
       * <code>optional int32 data_type = 1;</code>
       * @param value The dataType to set.
       * @return This builder for chaining.
       */
      public Builder setDataType(int value) {

        dataType_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies the data type to search for the info.
       * </pre>
       *
       * <code>optional int32 data_type = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearDataType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        dataType_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.CommandGetXdbcTypeInfo)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.CommandGetXdbcTypeInfo)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CommandGetXdbcTypeInfo>
        PARSER = new com.google.protobuf.AbstractParser<CommandGetXdbcTypeInfo>() {
      @java.lang.Override
      public CommandGetXdbcTypeInfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CommandGetXdbcTypeInfo> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CommandGetXdbcTypeInfo> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetXdbcTypeInfo getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CommandGetCatalogsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.CommandGetCatalogs)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   *
   * Represents a request to retrieve the list of catalogs on a Flight SQL enabled backend.
   * The definition of a catalog depends on vendor/implementation. It is usually the database itself
   * Used in the command member of FlightDescriptor for the following RPC calls:
   *  - GetSchema: return the Arrow schema of the query.
   *  - GetFlightInfo: execute the catalog metadata request.
   *
   * The returned Arrow schema will be:
   * &lt;
   *  catalog_name: utf8 not null
   * &gt;
   * The returned data should be ordered by catalog_name.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.CommandGetCatalogs}
   */
  public static final class CommandGetCatalogs extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.CommandGetCatalogs)
      CommandGetCatalogsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CommandGetCatalogs.newBuilder() to construct.
    private CommandGetCatalogs(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CommandGetCatalogs() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CommandGetCatalogs();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetCatalogs_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetCatalogs_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs other = (org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs) obj;

      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Represents a request to retrieve the list of catalogs on a Flight SQL enabled backend.
     * The definition of a catalog depends on vendor/implementation. It is usually the database itself
     * Used in the command member of FlightDescriptor for the following RPC calls:
     *  - GetSchema: return the Arrow schema of the query.
     *  - GetFlightInfo: execute the catalog metadata request.
     *
     * The returned Arrow schema will be:
     * &lt;
     *  catalog_name: utf8 not null
     * &gt;
     * The returned data should be ordered by catalog_name.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.CommandGetCatalogs}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.CommandGetCatalogs)
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetCatalogs_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetCatalogs_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetCatalogs_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs build() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs result = new org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.CommandGetCatalogs)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.CommandGetCatalogs)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CommandGetCatalogs>
        PARSER = new com.google.protobuf.AbstractParser<CommandGetCatalogs>() {
      @java.lang.Override
      public CommandGetCatalogs parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CommandGetCatalogs> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CommandGetCatalogs> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCatalogs getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CommandGetDbSchemasOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.CommandGetDbSchemas)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *
     * Specifies the Catalog to search for the tables.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return Whether the catalog field is set.
     */
    boolean hasCatalog();
    /**
     * <pre>
     *
     * Specifies the Catalog to search for the tables.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return The catalog.
     */
    java.lang.String getCatalog();
    /**
     * <pre>
     *
     * Specifies the Catalog to search for the tables.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return The bytes for catalog.
     */
    com.google.protobuf.ByteString
        getCatalogBytes();

    /**
     * <pre>
     *
     * Specifies a filter pattern for schemas to search for.
     * When no db_schema_filter_pattern is provided, the pattern will not be used to narrow the search.
     * In the pattern string, two special characters can be used to denote matching rules:
     *    - "%" means to match any substring with 0 or more characters.
     *    - "_" means to match any one character.
     * </pre>
     *
     * <code>optional string db_schema_filter_pattern = 2;</code>
     * @return Whether the dbSchemaFilterPattern field is set.
     */
    boolean hasDbSchemaFilterPattern();
    /**
     * <pre>
     *
     * Specifies a filter pattern for schemas to search for.
     * When no db_schema_filter_pattern is provided, the pattern will not be used to narrow the search.
     * In the pattern string, two special characters can be used to denote matching rules:
     *    - "%" means to match any substring with 0 or more characters.
     *    - "_" means to match any one character.
     * </pre>
     *
     * <code>optional string db_schema_filter_pattern = 2;</code>
     * @return The dbSchemaFilterPattern.
     */
    java.lang.String getDbSchemaFilterPattern();
    /**
     * <pre>
     *
     * Specifies a filter pattern for schemas to search for.
     * When no db_schema_filter_pattern is provided, the pattern will not be used to narrow the search.
     * In the pattern string, two special characters can be used to denote matching rules:
     *    - "%" means to match any substring with 0 or more characters.
     *    - "_" means to match any one character.
     * </pre>
     *
     * <code>optional string db_schema_filter_pattern = 2;</code>
     * @return The bytes for dbSchemaFilterPattern.
     */
    com.google.protobuf.ByteString
        getDbSchemaFilterPatternBytes();
  }
  /**
   * <pre>
   *
   * Represents a request to retrieve the list of database schemas on a Flight SQL enabled backend.
   * The definition of a database schema depends on vendor/implementation. It is usually a collection of tables.
   * Used in the command member of FlightDescriptor for the following RPC calls:
   *  - GetSchema: return the Arrow schema of the query.
   *  - GetFlightInfo: execute the catalog metadata request.
   *
   * The returned Arrow schema will be:
   * &lt;
   *  catalog_name: utf8,
   *  db_schema_name: utf8 not null
   * &gt;
   * The returned data should be ordered by catalog_name, then db_schema_name.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.CommandGetDbSchemas}
   */
  public static final class CommandGetDbSchemas extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.CommandGetDbSchemas)
      CommandGetDbSchemasOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CommandGetDbSchemas.newBuilder() to construct.
    private CommandGetDbSchemas(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CommandGetDbSchemas() {
      catalog_ = "";
      dbSchemaFilterPattern_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CommandGetDbSchemas();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetDbSchemas_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetDbSchemas_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas.Builder.class);
    }

    private int bitField0_;
    public static final int CATALOG_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object catalog_ = "";
    /**
     * <pre>
     *
     * Specifies the Catalog to search for the tables.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return Whether the catalog field is set.
     */
    @java.lang.Override
    public boolean hasCatalog() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     *
     * Specifies the Catalog to search for the tables.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return The catalog.
     */
    @java.lang.Override
    public java.lang.String getCatalog() {
      java.lang.Object ref = catalog_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        catalog_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *
     * Specifies the Catalog to search for the tables.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return The bytes for catalog.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCatalogBytes() {
      java.lang.Object ref = catalog_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        catalog_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DB_SCHEMA_FILTER_PATTERN_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object dbSchemaFilterPattern_ = "";
    /**
     * <pre>
     *
     * Specifies a filter pattern for schemas to search for.
     * When no db_schema_filter_pattern is provided, the pattern will not be used to narrow the search.
     * In the pattern string, two special characters can be used to denote matching rules:
     *    - "%" means to match any substring with 0 or more characters.
     *    - "_" means to match any one character.
     * </pre>
     *
     * <code>optional string db_schema_filter_pattern = 2;</code>
     * @return Whether the dbSchemaFilterPattern field is set.
     */
    @java.lang.Override
    public boolean hasDbSchemaFilterPattern() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     *
     * Specifies a filter pattern for schemas to search for.
     * When no db_schema_filter_pattern is provided, the pattern will not be used to narrow the search.
     * In the pattern string, two special characters can be used to denote matching rules:
     *    - "%" means to match any substring with 0 or more characters.
     *    - "_" means to match any one character.
     * </pre>
     *
     * <code>optional string db_schema_filter_pattern = 2;</code>
     * @return The dbSchemaFilterPattern.
     */
    @java.lang.Override
    public java.lang.String getDbSchemaFilterPattern() {
      java.lang.Object ref = dbSchemaFilterPattern_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        dbSchemaFilterPattern_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *
     * Specifies a filter pattern for schemas to search for.
     * When no db_schema_filter_pattern is provided, the pattern will not be used to narrow the search.
     * In the pattern string, two special characters can be used to denote matching rules:
     *    - "%" means to match any substring with 0 or more characters.
     *    - "_" means to match any one character.
     * </pre>
     *
     * <code>optional string db_schema_filter_pattern = 2;</code>
     * @return The bytes for dbSchemaFilterPattern.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDbSchemaFilterPatternBytes() {
      java.lang.Object ref = dbSchemaFilterPattern_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        dbSchemaFilterPattern_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, catalog_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dbSchemaFilterPattern_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, catalog_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dbSchemaFilterPattern_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas other = (org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas) obj;

      if (hasCatalog() != other.hasCatalog()) return false;
      if (hasCatalog()) {
        if (!getCatalog()
            .equals(other.getCatalog())) return false;
      }
      if (hasDbSchemaFilterPattern() != other.hasDbSchemaFilterPattern()) return false;
      if (hasDbSchemaFilterPattern()) {
        if (!getDbSchemaFilterPattern()
            .equals(other.getDbSchemaFilterPattern())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasCatalog()) {
        hash = (37 * hash) + CATALOG_FIELD_NUMBER;
        hash = (53 * hash) + getCatalog().hashCode();
      }
      if (hasDbSchemaFilterPattern()) {
        hash = (37 * hash) + DB_SCHEMA_FILTER_PATTERN_FIELD_NUMBER;
        hash = (53 * hash) + getDbSchemaFilterPattern().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Represents a request to retrieve the list of database schemas on a Flight SQL enabled backend.
     * The definition of a database schema depends on vendor/implementation. It is usually a collection of tables.
     * Used in the command member of FlightDescriptor for the following RPC calls:
     *  - GetSchema: return the Arrow schema of the query.
     *  - GetFlightInfo: execute the catalog metadata request.
     *
     * The returned Arrow schema will be:
     * &lt;
     *  catalog_name: utf8,
     *  db_schema_name: utf8 not null
     * &gt;
     * The returned data should be ordered by catalog_name, then db_schema_name.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.CommandGetDbSchemas}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.CommandGetDbSchemas)
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemasOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetDbSchemas_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetDbSchemas_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        catalog_ = "";
        dbSchemaFilterPattern_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetDbSchemas_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas build() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas result = new org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.catalog_ = catalog_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.dbSchemaFilterPattern_ = dbSchemaFilterPattern_;
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas.getDefaultInstance()) return this;
        if (other.hasCatalog()) {
          catalog_ = other.catalog_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasDbSchemaFilterPattern()) {
          dbSchemaFilterPattern_ = other.dbSchemaFilterPattern_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                catalog_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                dbSchemaFilterPattern_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object catalog_ = "";
      /**
       * <pre>
       *
       * Specifies the Catalog to search for the tables.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @return Whether the catalog field is set.
       */
      public boolean hasCatalog() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       *
       * Specifies the Catalog to search for the tables.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @return The catalog.
       */
      public java.lang.String getCatalog() {
        java.lang.Object ref = catalog_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          catalog_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *
       * Specifies the Catalog to search for the tables.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @return The bytes for catalog.
       */
      public com.google.protobuf.ByteString
          getCatalogBytes() {
        java.lang.Object ref = catalog_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          catalog_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *
       * Specifies the Catalog to search for the tables.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @param value The catalog to set.
       * @return This builder for chaining.
       */
      public Builder setCatalog(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        catalog_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies the Catalog to search for the tables.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearCatalog() {
        catalog_ = getDefaultInstance().getCatalog();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies the Catalog to search for the tables.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @param value The bytes for catalog to set.
       * @return This builder for chaining.
       */
      public Builder setCatalogBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        catalog_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object dbSchemaFilterPattern_ = "";
      /**
       * <pre>
       *
       * Specifies a filter pattern for schemas to search for.
       * When no db_schema_filter_pattern is provided, the pattern will not be used to narrow the search.
       * In the pattern string, two special characters can be used to denote matching rules:
       *    - "%" means to match any substring with 0 or more characters.
       *    - "_" means to match any one character.
       * </pre>
       *
       * <code>optional string db_schema_filter_pattern = 2;</code>
       * @return Whether the dbSchemaFilterPattern field is set.
       */
      public boolean hasDbSchemaFilterPattern() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       *
       * Specifies a filter pattern for schemas to search for.
       * When no db_schema_filter_pattern is provided, the pattern will not be used to narrow the search.
       * In the pattern string, two special characters can be used to denote matching rules:
       *    - "%" means to match any substring with 0 or more characters.
       *    - "_" means to match any one character.
       * </pre>
       *
       * <code>optional string db_schema_filter_pattern = 2;</code>
       * @return The dbSchemaFilterPattern.
       */
      public java.lang.String getDbSchemaFilterPattern() {
        java.lang.Object ref = dbSchemaFilterPattern_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          dbSchemaFilterPattern_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *
       * Specifies a filter pattern for schemas to search for.
       * When no db_schema_filter_pattern is provided, the pattern will not be used to narrow the search.
       * In the pattern string, two special characters can be used to denote matching rules:
       *    - "%" means to match any substring with 0 or more characters.
       *    - "_" means to match any one character.
       * </pre>
       *
       * <code>optional string db_schema_filter_pattern = 2;</code>
       * @return The bytes for dbSchemaFilterPattern.
       */
      public com.google.protobuf.ByteString
          getDbSchemaFilterPatternBytes() {
        java.lang.Object ref = dbSchemaFilterPattern_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          dbSchemaFilterPattern_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *
       * Specifies a filter pattern for schemas to search for.
       * When no db_schema_filter_pattern is provided, the pattern will not be used to narrow the search.
       * In the pattern string, two special characters can be used to denote matching rules:
       *    - "%" means to match any substring with 0 or more characters.
       *    - "_" means to match any one character.
       * </pre>
       *
       * <code>optional string db_schema_filter_pattern = 2;</code>
       * @param value The dbSchemaFilterPattern to set.
       * @return This builder for chaining.
       */
      public Builder setDbSchemaFilterPattern(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        dbSchemaFilterPattern_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies a filter pattern for schemas to search for.
       * When no db_schema_filter_pattern is provided, the pattern will not be used to narrow the search.
       * In the pattern string, two special characters can be used to denote matching rules:
       *    - "%" means to match any substring with 0 or more characters.
       *    - "_" means to match any one character.
       * </pre>
       *
       * <code>optional string db_schema_filter_pattern = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDbSchemaFilterPattern() {
        dbSchemaFilterPattern_ = getDefaultInstance().getDbSchemaFilterPattern();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies a filter pattern for schemas to search for.
       * When no db_schema_filter_pattern is provided, the pattern will not be used to narrow the search.
       * In the pattern string, two special characters can be used to denote matching rules:
       *    - "%" means to match any substring with 0 or more characters.
       *    - "_" means to match any one character.
       * </pre>
       *
       * <code>optional string db_schema_filter_pattern = 2;</code>
       * @param value The bytes for dbSchemaFilterPattern to set.
       * @return This builder for chaining.
       */
      public Builder setDbSchemaFilterPatternBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        dbSchemaFilterPattern_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.CommandGetDbSchemas)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.CommandGetDbSchemas)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CommandGetDbSchemas>
        PARSER = new com.google.protobuf.AbstractParser<CommandGetDbSchemas>() {
      @java.lang.Override
      public CommandGetDbSchemas parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CommandGetDbSchemas> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CommandGetDbSchemas> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetDbSchemas getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CommandGetTablesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.CommandGetTables)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *
     * Specifies the Catalog to search for the tables.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return Whether the catalog field is set.
     */
    boolean hasCatalog();
    /**
     * <pre>
     *
     * Specifies the Catalog to search for the tables.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return The catalog.
     */
    java.lang.String getCatalog();
    /**
     * <pre>
     *
     * Specifies the Catalog to search for the tables.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return The bytes for catalog.
     */
    com.google.protobuf.ByteString
        getCatalogBytes();

    /**
     * <pre>
     *
     * Specifies a filter pattern for schemas to search for.
     * When no db_schema_filter_pattern is provided, all schemas matching other filters are searched.
     * In the pattern string, two special characters can be used to denote matching rules:
     *    - "%" means to match any substring with 0 or more characters.
     *    - "_" means to match any one character.
     * </pre>
     *
     * <code>optional string db_schema_filter_pattern = 2;</code>
     * @return Whether the dbSchemaFilterPattern field is set.
     */
    boolean hasDbSchemaFilterPattern();
    /**
     * <pre>
     *
     * Specifies a filter pattern for schemas to search for.
     * When no db_schema_filter_pattern is provided, all schemas matching other filters are searched.
     * In the pattern string, two special characters can be used to denote matching rules:
     *    - "%" means to match any substring with 0 or more characters.
     *    - "_" means to match any one character.
     * </pre>
     *
     * <code>optional string db_schema_filter_pattern = 2;</code>
     * @return The dbSchemaFilterPattern.
     */
    java.lang.String getDbSchemaFilterPattern();
    /**
     * <pre>
     *
     * Specifies a filter pattern for schemas to search for.
     * When no db_schema_filter_pattern is provided, all schemas matching other filters are searched.
     * In the pattern string, two special characters can be used to denote matching rules:
     *    - "%" means to match any substring with 0 or more characters.
     *    - "_" means to match any one character.
     * </pre>
     *
     * <code>optional string db_schema_filter_pattern = 2;</code>
     * @return The bytes for dbSchemaFilterPattern.
     */
    com.google.protobuf.ByteString
        getDbSchemaFilterPatternBytes();

    /**
     * <pre>
     *
     * Specifies a filter pattern for tables to search for.
     * When no table_name_filter_pattern is provided, all tables matching other filters are searched.
     * In the pattern string, two special characters can be used to denote matching rules:
     *    - "%" means to match any substring with 0 or more characters.
     *    - "_" means to match any one character.
     * </pre>
     *
     * <code>optional string table_name_filter_pattern = 3;</code>
     * @return Whether the tableNameFilterPattern field is set.
     */
    boolean hasTableNameFilterPattern();
    /**
     * <pre>
     *
     * Specifies a filter pattern for tables to search for.
     * When no table_name_filter_pattern is provided, all tables matching other filters are searched.
     * In the pattern string, two special characters can be used to denote matching rules:
     *    - "%" means to match any substring with 0 or more characters.
     *    - "_" means to match any one character.
     * </pre>
     *
     * <code>optional string table_name_filter_pattern = 3;</code>
     * @return The tableNameFilterPattern.
     */
    java.lang.String getTableNameFilterPattern();
    /**
     * <pre>
     *
     * Specifies a filter pattern for tables to search for.
     * When no table_name_filter_pattern is provided, all tables matching other filters are searched.
     * In the pattern string, two special characters can be used to denote matching rules:
     *    - "%" means to match any substring with 0 or more characters.
     *    - "_" means to match any one character.
     * </pre>
     *
     * <code>optional string table_name_filter_pattern = 3;</code>
     * @return The bytes for tableNameFilterPattern.
     */
    com.google.protobuf.ByteString
        getTableNameFilterPatternBytes();

    /**
     * <pre>
     *
     * Specifies a filter of table types which must match.
     * The table types depend on vendor/implementation. It is usually used to separate tables from views or system tables.
     * TABLE, VIEW, and SYSTEM TABLE are commonly supported.
     * </pre>
     *
     * <code>repeated string table_types = 4;</code>
     * @return A list containing the tableTypes.
     */
    java.util.List<java.lang.String>
        getTableTypesList();
    /**
     * <pre>
     *
     * Specifies a filter of table types which must match.
     * The table types depend on vendor/implementation. It is usually used to separate tables from views or system tables.
     * TABLE, VIEW, and SYSTEM TABLE are commonly supported.
     * </pre>
     *
     * <code>repeated string table_types = 4;</code>
     * @return The count of tableTypes.
     */
    int getTableTypesCount();
    /**
     * <pre>
     *
     * Specifies a filter of table types which must match.
     * The table types depend on vendor/implementation. It is usually used to separate tables from views or system tables.
     * TABLE, VIEW, and SYSTEM TABLE are commonly supported.
     * </pre>
     *
     * <code>repeated string table_types = 4;</code>
     * @param index The index of the element to return.
     * @return The tableTypes at the given index.
     */
    java.lang.String getTableTypes(int index);
    /**
     * <pre>
     *
     * Specifies a filter of table types which must match.
     * The table types depend on vendor/implementation. It is usually used to separate tables from views or system tables.
     * TABLE, VIEW, and SYSTEM TABLE are commonly supported.
     * </pre>
     *
     * <code>repeated string table_types = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the tableTypes at the given index.
     */
    com.google.protobuf.ByteString
        getTableTypesBytes(int index);

    /**
     * <pre>
     * Specifies if the Arrow schema should be returned for found tables.
     * </pre>
     *
     * <code>bool include_schema = 5;</code>
     * @return The includeSchema.
     */
    boolean getIncludeSchema();
  }
  /**
   * <pre>
   *
   * Represents a request to retrieve the list of tables, and optionally their schemas, on a Flight SQL enabled backend.
   * Used in the command member of FlightDescriptor for the following RPC calls:
   *  - GetSchema: return the Arrow schema of the query.
   *  - GetFlightInfo: execute the catalog metadata request.
   *
   * The returned Arrow schema will be:
   * &lt;
   *  catalog_name: utf8,
   *  db_schema_name: utf8,
   *  table_name: utf8 not null,
   *  table_type: utf8 not null,
   *  [optional] table_schema: bytes not null (schema of the table as described in Schema.fbs::Schema,
   *                                           it is serialized as an IPC message.)
   * &gt;
   * Fields on table_schema may contain the following metadata:
   *  - ARROW:FLIGHT:SQL:CATALOG_NAME      - Table's catalog name
   *  - ARROW:FLIGHT:SQL:DB_SCHEMA_NAME    - Database schema name
   *  - ARROW:FLIGHT:SQL:TABLE_NAME        - Table name
   *  - ARROW:FLIGHT:SQL:TYPE_NAME         - The data source-specific name for the data type of the column.
   *  - ARROW:FLIGHT:SQL:PRECISION         - Column precision/size
   *  - ARROW:FLIGHT:SQL:SCALE             - Column scale/decimal digits if applicable
   *  - ARROW:FLIGHT:SQL:IS_AUTO_INCREMENT - "1" indicates if the column is auto incremented, "0" otherwise.
   *  - ARROW:FLIGHT:SQL:IS_CASE_SENSITIVE - "1" indicates if the column is case-sensitive, "0" otherwise.
   *  - ARROW:FLIGHT:SQL:IS_READ_ONLY      - "1" indicates if the column is read only, "0" otherwise.
   *  - ARROW:FLIGHT:SQL:IS_SEARCHABLE     - "1" indicates if the column is searchable via WHERE clause, "0" otherwise.
   * The returned data should be ordered by catalog_name, db_schema_name, table_name, then table_type, followed by table_schema if requested.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.CommandGetTables}
   */
  public static final class CommandGetTables extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.CommandGetTables)
      CommandGetTablesOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CommandGetTables.newBuilder() to construct.
    private CommandGetTables(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CommandGetTables() {
      catalog_ = "";
      dbSchemaFilterPattern_ = "";
      tableNameFilterPattern_ = "";
      tableTypes_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CommandGetTables();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetTables_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetTables_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables.Builder.class);
    }

    private int bitField0_;
    public static final int CATALOG_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object catalog_ = "";
    /**
     * <pre>
     *
     * Specifies the Catalog to search for the tables.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return Whether the catalog field is set.
     */
    @java.lang.Override
    public boolean hasCatalog() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     *
     * Specifies the Catalog to search for the tables.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return The catalog.
     */
    @java.lang.Override
    public java.lang.String getCatalog() {
      java.lang.Object ref = catalog_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        catalog_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *
     * Specifies the Catalog to search for the tables.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return The bytes for catalog.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCatalogBytes() {
      java.lang.Object ref = catalog_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        catalog_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DB_SCHEMA_FILTER_PATTERN_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object dbSchemaFilterPattern_ = "";
    /**
     * <pre>
     *
     * Specifies a filter pattern for schemas to search for.
     * When no db_schema_filter_pattern is provided, all schemas matching other filters are searched.
     * In the pattern string, two special characters can be used to denote matching rules:
     *    - "%" means to match any substring with 0 or more characters.
     *    - "_" means to match any one character.
     * </pre>
     *
     * <code>optional string db_schema_filter_pattern = 2;</code>
     * @return Whether the dbSchemaFilterPattern field is set.
     */
    @java.lang.Override
    public boolean hasDbSchemaFilterPattern() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     *
     * Specifies a filter pattern for schemas to search for.
     * When no db_schema_filter_pattern is provided, all schemas matching other filters are searched.
     * In the pattern string, two special characters can be used to denote matching rules:
     *    - "%" means to match any substring with 0 or more characters.
     *    - "_" means to match any one character.
     * </pre>
     *
     * <code>optional string db_schema_filter_pattern = 2;</code>
     * @return The dbSchemaFilterPattern.
     */
    @java.lang.Override
    public java.lang.String getDbSchemaFilterPattern() {
      java.lang.Object ref = dbSchemaFilterPattern_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        dbSchemaFilterPattern_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *
     * Specifies a filter pattern for schemas to search for.
     * When no db_schema_filter_pattern is provided, all schemas matching other filters are searched.
     * In the pattern string, two special characters can be used to denote matching rules:
     *    - "%" means to match any substring with 0 or more characters.
     *    - "_" means to match any one character.
     * </pre>
     *
     * <code>optional string db_schema_filter_pattern = 2;</code>
     * @return The bytes for dbSchemaFilterPattern.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDbSchemaFilterPatternBytes() {
      java.lang.Object ref = dbSchemaFilterPattern_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        dbSchemaFilterPattern_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TABLE_NAME_FILTER_PATTERN_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object tableNameFilterPattern_ = "";
    /**
     * <pre>
     *
     * Specifies a filter pattern for tables to search for.
     * When no table_name_filter_pattern is provided, all tables matching other filters are searched.
     * In the pattern string, two special characters can be used to denote matching rules:
     *    - "%" means to match any substring with 0 or more characters.
     *    - "_" means to match any one character.
     * </pre>
     *
     * <code>optional string table_name_filter_pattern = 3;</code>
     * @return Whether the tableNameFilterPattern field is set.
     */
    @java.lang.Override
    public boolean hasTableNameFilterPattern() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     *
     * Specifies a filter pattern for tables to search for.
     * When no table_name_filter_pattern is provided, all tables matching other filters are searched.
     * In the pattern string, two special characters can be used to denote matching rules:
     *    - "%" means to match any substring with 0 or more characters.
     *    - "_" means to match any one character.
     * </pre>
     *
     * <code>optional string table_name_filter_pattern = 3;</code>
     * @return The tableNameFilterPattern.
     */
    @java.lang.Override
    public java.lang.String getTableNameFilterPattern() {
      java.lang.Object ref = tableNameFilterPattern_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        tableNameFilterPattern_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *
     * Specifies a filter pattern for tables to search for.
     * When no table_name_filter_pattern is provided, all tables matching other filters are searched.
     * In the pattern string, two special characters can be used to denote matching rules:
     *    - "%" means to match any substring with 0 or more characters.
     *    - "_" means to match any one character.
     * </pre>
     *
     * <code>optional string table_name_filter_pattern = 3;</code>
     * @return The bytes for tableNameFilterPattern.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTableNameFilterPatternBytes() {
      java.lang.Object ref = tableNameFilterPattern_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        tableNameFilterPattern_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TABLE_TYPES_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList tableTypes_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     *
     * Specifies a filter of table types which must match.
     * The table types depend on vendor/implementation. It is usually used to separate tables from views or system tables.
     * TABLE, VIEW, and SYSTEM TABLE are commonly supported.
     * </pre>
     *
     * <code>repeated string table_types = 4;</code>
     * @return A list containing the tableTypes.
     */
    public com.google.protobuf.ProtocolStringList
        getTableTypesList() {
      return tableTypes_;
    }
    /**
     * <pre>
     *
     * Specifies a filter of table types which must match.
     * The table types depend on vendor/implementation. It is usually used to separate tables from views or system tables.
     * TABLE, VIEW, and SYSTEM TABLE are commonly supported.
     * </pre>
     *
     * <code>repeated string table_types = 4;</code>
     * @return The count of tableTypes.
     */
    public int getTableTypesCount() {
      return tableTypes_.size();
    }
    /**
     * <pre>
     *
     * Specifies a filter of table types which must match.
     * The table types depend on vendor/implementation. It is usually used to separate tables from views or system tables.
     * TABLE, VIEW, and SYSTEM TABLE are commonly supported.
     * </pre>
     *
     * <code>repeated string table_types = 4;</code>
     * @param index The index of the element to return.
     * @return The tableTypes at the given index.
     */
    public java.lang.String getTableTypes(int index) {
      return tableTypes_.get(index);
    }
    /**
     * <pre>
     *
     * Specifies a filter of table types which must match.
     * The table types depend on vendor/implementation. It is usually used to separate tables from views or system tables.
     * TABLE, VIEW, and SYSTEM TABLE are commonly supported.
     * </pre>
     *
     * <code>repeated string table_types = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the tableTypes at the given index.
     */
    public com.google.protobuf.ByteString
        getTableTypesBytes(int index) {
      return tableTypes_.getByteString(index);
    }

    public static final int INCLUDE_SCHEMA_FIELD_NUMBER = 5;
    private boolean includeSchema_ = false;
    /**
     * <pre>
     * Specifies if the Arrow schema should be returned for found tables.
     * </pre>
     *
     * <code>bool include_schema = 5;</code>
     * @return The includeSchema.
     */
    @java.lang.Override
    public boolean getIncludeSchema() {
      return includeSchema_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, catalog_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dbSchemaFilterPattern_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, tableNameFilterPattern_);
      }
      for (int i = 0; i < tableTypes_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, tableTypes_.getRaw(i));
      }
      if (includeSchema_ != false) {
        output.writeBool(5, includeSchema_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, catalog_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dbSchemaFilterPattern_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, tableNameFilterPattern_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < tableTypes_.size(); i++) {
          dataSize += computeStringSizeNoTag(tableTypes_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getTableTypesList().size();
      }
      if (includeSchema_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, includeSchema_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables other = (org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables) obj;

      if (hasCatalog() != other.hasCatalog()) return false;
      if (hasCatalog()) {
        if (!getCatalog()
            .equals(other.getCatalog())) return false;
      }
      if (hasDbSchemaFilterPattern() != other.hasDbSchemaFilterPattern()) return false;
      if (hasDbSchemaFilterPattern()) {
        if (!getDbSchemaFilterPattern()
            .equals(other.getDbSchemaFilterPattern())) return false;
      }
      if (hasTableNameFilterPattern() != other.hasTableNameFilterPattern()) return false;
      if (hasTableNameFilterPattern()) {
        if (!getTableNameFilterPattern()
            .equals(other.getTableNameFilterPattern())) return false;
      }
      if (!getTableTypesList()
          .equals(other.getTableTypesList())) return false;
      if (getIncludeSchema()
          != other.getIncludeSchema()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasCatalog()) {
        hash = (37 * hash) + CATALOG_FIELD_NUMBER;
        hash = (53 * hash) + getCatalog().hashCode();
      }
      if (hasDbSchemaFilterPattern()) {
        hash = (37 * hash) + DB_SCHEMA_FILTER_PATTERN_FIELD_NUMBER;
        hash = (53 * hash) + getDbSchemaFilterPattern().hashCode();
      }
      if (hasTableNameFilterPattern()) {
        hash = (37 * hash) + TABLE_NAME_FILTER_PATTERN_FIELD_NUMBER;
        hash = (53 * hash) + getTableNameFilterPattern().hashCode();
      }
      if (getTableTypesCount() > 0) {
        hash = (37 * hash) + TABLE_TYPES_FIELD_NUMBER;
        hash = (53 * hash) + getTableTypesList().hashCode();
      }
      hash = (37 * hash) + INCLUDE_SCHEMA_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIncludeSchema());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Represents a request to retrieve the list of tables, and optionally their schemas, on a Flight SQL enabled backend.
     * Used in the command member of FlightDescriptor for the following RPC calls:
     *  - GetSchema: return the Arrow schema of the query.
     *  - GetFlightInfo: execute the catalog metadata request.
     *
     * The returned Arrow schema will be:
     * &lt;
     *  catalog_name: utf8,
     *  db_schema_name: utf8,
     *  table_name: utf8 not null,
     *  table_type: utf8 not null,
     *  [optional] table_schema: bytes not null (schema of the table as described in Schema.fbs::Schema,
     *                                           it is serialized as an IPC message.)
     * &gt;
     * Fields on table_schema may contain the following metadata:
     *  - ARROW:FLIGHT:SQL:CATALOG_NAME      - Table's catalog name
     *  - ARROW:FLIGHT:SQL:DB_SCHEMA_NAME    - Database schema name
     *  - ARROW:FLIGHT:SQL:TABLE_NAME        - Table name
     *  - ARROW:FLIGHT:SQL:TYPE_NAME         - The data source-specific name for the data type of the column.
     *  - ARROW:FLIGHT:SQL:PRECISION         - Column precision/size
     *  - ARROW:FLIGHT:SQL:SCALE             - Column scale/decimal digits if applicable
     *  - ARROW:FLIGHT:SQL:IS_AUTO_INCREMENT - "1" indicates if the column is auto incremented, "0" otherwise.
     *  - ARROW:FLIGHT:SQL:IS_CASE_SENSITIVE - "1" indicates if the column is case-sensitive, "0" otherwise.
     *  - ARROW:FLIGHT:SQL:IS_READ_ONLY      - "1" indicates if the column is read only, "0" otherwise.
     *  - ARROW:FLIGHT:SQL:IS_SEARCHABLE     - "1" indicates if the column is searchable via WHERE clause, "0" otherwise.
     * The returned data should be ordered by catalog_name, db_schema_name, table_name, then table_type, followed by table_schema if requested.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.CommandGetTables}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.CommandGetTables)
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTablesOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetTables_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetTables_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        catalog_ = "";
        dbSchemaFilterPattern_ = "";
        tableNameFilterPattern_ = "";
        tableTypes_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        includeSchema_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetTables_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables build() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables result = new org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.catalog_ = catalog_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.dbSchemaFilterPattern_ = dbSchemaFilterPattern_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.tableNameFilterPattern_ = tableNameFilterPattern_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          tableTypes_.makeImmutable();
          result.tableTypes_ = tableTypes_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.includeSchema_ = includeSchema_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables.getDefaultInstance()) return this;
        if (other.hasCatalog()) {
          catalog_ = other.catalog_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasDbSchemaFilterPattern()) {
          dbSchemaFilterPattern_ = other.dbSchemaFilterPattern_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasTableNameFilterPattern()) {
          tableNameFilterPattern_ = other.tableNameFilterPattern_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (!other.tableTypes_.isEmpty()) {
          if (tableTypes_.isEmpty()) {
            tableTypes_ = other.tableTypes_;
            bitField0_ |= 0x00000008;
          } else {
            ensureTableTypesIsMutable();
            tableTypes_.addAll(other.tableTypes_);
          }
          onChanged();
        }
        if (other.getIncludeSchema() != false) {
          setIncludeSchema(other.getIncludeSchema());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                catalog_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                dbSchemaFilterPattern_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                tableNameFilterPattern_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureTableTypesIsMutable();
                tableTypes_.add(s);
                break;
              } // case 34
              case 40: {
                includeSchema_ = input.readBool();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object catalog_ = "";
      /**
       * <pre>
       *
       * Specifies the Catalog to search for the tables.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @return Whether the catalog field is set.
       */
      public boolean hasCatalog() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       *
       * Specifies the Catalog to search for the tables.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @return The catalog.
       */
      public java.lang.String getCatalog() {
        java.lang.Object ref = catalog_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          catalog_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *
       * Specifies the Catalog to search for the tables.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @return The bytes for catalog.
       */
      public com.google.protobuf.ByteString
          getCatalogBytes() {
        java.lang.Object ref = catalog_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          catalog_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *
       * Specifies the Catalog to search for the tables.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @param value The catalog to set.
       * @return This builder for chaining.
       */
      public Builder setCatalog(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        catalog_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies the Catalog to search for the tables.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearCatalog() {
        catalog_ = getDefaultInstance().getCatalog();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies the Catalog to search for the tables.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @param value The bytes for catalog to set.
       * @return This builder for chaining.
       */
      public Builder setCatalogBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        catalog_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object dbSchemaFilterPattern_ = "";
      /**
       * <pre>
       *
       * Specifies a filter pattern for schemas to search for.
       * When no db_schema_filter_pattern is provided, all schemas matching other filters are searched.
       * In the pattern string, two special characters can be used to denote matching rules:
       *    - "%" means to match any substring with 0 or more characters.
       *    - "_" means to match any one character.
       * </pre>
       *
       * <code>optional string db_schema_filter_pattern = 2;</code>
       * @return Whether the dbSchemaFilterPattern field is set.
       */
      public boolean hasDbSchemaFilterPattern() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       *
       * Specifies a filter pattern for schemas to search for.
       * When no db_schema_filter_pattern is provided, all schemas matching other filters are searched.
       * In the pattern string, two special characters can be used to denote matching rules:
       *    - "%" means to match any substring with 0 or more characters.
       *    - "_" means to match any one character.
       * </pre>
       *
       * <code>optional string db_schema_filter_pattern = 2;</code>
       * @return The dbSchemaFilterPattern.
       */
      public java.lang.String getDbSchemaFilterPattern() {
        java.lang.Object ref = dbSchemaFilterPattern_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          dbSchemaFilterPattern_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *
       * Specifies a filter pattern for schemas to search for.
       * When no db_schema_filter_pattern is provided, all schemas matching other filters are searched.
       * In the pattern string, two special characters can be used to denote matching rules:
       *    - "%" means to match any substring with 0 or more characters.
       *    - "_" means to match any one character.
       * </pre>
       *
       * <code>optional string db_schema_filter_pattern = 2;</code>
       * @return The bytes for dbSchemaFilterPattern.
       */
      public com.google.protobuf.ByteString
          getDbSchemaFilterPatternBytes() {
        java.lang.Object ref = dbSchemaFilterPattern_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          dbSchemaFilterPattern_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *
       * Specifies a filter pattern for schemas to search for.
       * When no db_schema_filter_pattern is provided, all schemas matching other filters are searched.
       * In the pattern string, two special characters can be used to denote matching rules:
       *    - "%" means to match any substring with 0 or more characters.
       *    - "_" means to match any one character.
       * </pre>
       *
       * <code>optional string db_schema_filter_pattern = 2;</code>
       * @param value The dbSchemaFilterPattern to set.
       * @return This builder for chaining.
       */
      public Builder setDbSchemaFilterPattern(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        dbSchemaFilterPattern_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies a filter pattern for schemas to search for.
       * When no db_schema_filter_pattern is provided, all schemas matching other filters are searched.
       * In the pattern string, two special characters can be used to denote matching rules:
       *    - "%" means to match any substring with 0 or more characters.
       *    - "_" means to match any one character.
       * </pre>
       *
       * <code>optional string db_schema_filter_pattern = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDbSchemaFilterPattern() {
        dbSchemaFilterPattern_ = getDefaultInstance().getDbSchemaFilterPattern();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies a filter pattern for schemas to search for.
       * When no db_schema_filter_pattern is provided, all schemas matching other filters are searched.
       * In the pattern string, two special characters can be used to denote matching rules:
       *    - "%" means to match any substring with 0 or more characters.
       *    - "_" means to match any one character.
       * </pre>
       *
       * <code>optional string db_schema_filter_pattern = 2;</code>
       * @param value The bytes for dbSchemaFilterPattern to set.
       * @return This builder for chaining.
       */
      public Builder setDbSchemaFilterPatternBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        dbSchemaFilterPattern_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object tableNameFilterPattern_ = "";
      /**
       * <pre>
       *
       * Specifies a filter pattern for tables to search for.
       * When no table_name_filter_pattern is provided, all tables matching other filters are searched.
       * In the pattern string, two special characters can be used to denote matching rules:
       *    - "%" means to match any substring with 0 or more characters.
       *    - "_" means to match any one character.
       * </pre>
       *
       * <code>optional string table_name_filter_pattern = 3;</code>
       * @return Whether the tableNameFilterPattern field is set.
       */
      public boolean hasTableNameFilterPattern() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       *
       * Specifies a filter pattern for tables to search for.
       * When no table_name_filter_pattern is provided, all tables matching other filters are searched.
       * In the pattern string, two special characters can be used to denote matching rules:
       *    - "%" means to match any substring with 0 or more characters.
       *    - "_" means to match any one character.
       * </pre>
       *
       * <code>optional string table_name_filter_pattern = 3;</code>
       * @return The tableNameFilterPattern.
       */
      public java.lang.String getTableNameFilterPattern() {
        java.lang.Object ref = tableNameFilterPattern_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          tableNameFilterPattern_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *
       * Specifies a filter pattern for tables to search for.
       * When no table_name_filter_pattern is provided, all tables matching other filters are searched.
       * In the pattern string, two special characters can be used to denote matching rules:
       *    - "%" means to match any substring with 0 or more characters.
       *    - "_" means to match any one character.
       * </pre>
       *
       * <code>optional string table_name_filter_pattern = 3;</code>
       * @return The bytes for tableNameFilterPattern.
       */
      public com.google.protobuf.ByteString
          getTableNameFilterPatternBytes() {
        java.lang.Object ref = tableNameFilterPattern_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tableNameFilterPattern_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *
       * Specifies a filter pattern for tables to search for.
       * When no table_name_filter_pattern is provided, all tables matching other filters are searched.
       * In the pattern string, two special characters can be used to denote matching rules:
       *    - "%" means to match any substring with 0 or more characters.
       *    - "_" means to match any one character.
       * </pre>
       *
       * <code>optional string table_name_filter_pattern = 3;</code>
       * @param value The tableNameFilterPattern to set.
       * @return This builder for chaining.
       */
      public Builder setTableNameFilterPattern(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        tableNameFilterPattern_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies a filter pattern for tables to search for.
       * When no table_name_filter_pattern is provided, all tables matching other filters are searched.
       * In the pattern string, two special characters can be used to denote matching rules:
       *    - "%" means to match any substring with 0 or more characters.
       *    - "_" means to match any one character.
       * </pre>
       *
       * <code>optional string table_name_filter_pattern = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearTableNameFilterPattern() {
        tableNameFilterPattern_ = getDefaultInstance().getTableNameFilterPattern();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies a filter pattern for tables to search for.
       * When no table_name_filter_pattern is provided, all tables matching other filters are searched.
       * In the pattern string, two special characters can be used to denote matching rules:
       *    - "%" means to match any substring with 0 or more characters.
       *    - "_" means to match any one character.
       * </pre>
       *
       * <code>optional string table_name_filter_pattern = 3;</code>
       * @param value The bytes for tableNameFilterPattern to set.
       * @return This builder for chaining.
       */
      public Builder setTableNameFilterPatternBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        tableNameFilterPattern_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList tableTypes_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureTableTypesIsMutable() {
        if (!tableTypes_.isModifiable()) {
          tableTypes_ = new com.google.protobuf.LazyStringArrayList(tableTypes_);
        }
        bitField0_ |= 0x00000008;
      }
      /**
       * <pre>
       *
       * Specifies a filter of table types which must match.
       * The table types depend on vendor/implementation. It is usually used to separate tables from views or system tables.
       * TABLE, VIEW, and SYSTEM TABLE are commonly supported.
       * </pre>
       *
       * <code>repeated string table_types = 4;</code>
       * @return A list containing the tableTypes.
       */
      public com.google.protobuf.ProtocolStringList
          getTableTypesList() {
        tableTypes_.makeImmutable();
        return tableTypes_;
      }
      /**
       * <pre>
       *
       * Specifies a filter of table types which must match.
       * The table types depend on vendor/implementation. It is usually used to separate tables from views or system tables.
       * TABLE, VIEW, and SYSTEM TABLE are commonly supported.
       * </pre>
       *
       * <code>repeated string table_types = 4;</code>
       * @return The count of tableTypes.
       */
      public int getTableTypesCount() {
        return tableTypes_.size();
      }
      /**
       * <pre>
       *
       * Specifies a filter of table types which must match.
       * The table types depend on vendor/implementation. It is usually used to separate tables from views or system tables.
       * TABLE, VIEW, and SYSTEM TABLE are commonly supported.
       * </pre>
       *
       * <code>repeated string table_types = 4;</code>
       * @param index The index of the element to return.
       * @return The tableTypes at the given index.
       */
      public java.lang.String getTableTypes(int index) {
        return tableTypes_.get(index);
      }
      /**
       * <pre>
       *
       * Specifies a filter of table types which must match.
       * The table types depend on vendor/implementation. It is usually used to separate tables from views or system tables.
       * TABLE, VIEW, and SYSTEM TABLE are commonly supported.
       * </pre>
       *
       * <code>repeated string table_types = 4;</code>
       * @param index The index of the value to return.
       * @return The bytes of the tableTypes at the given index.
       */
      public com.google.protobuf.ByteString
          getTableTypesBytes(int index) {
        return tableTypes_.getByteString(index);
      }
      /**
       * <pre>
       *
       * Specifies a filter of table types which must match.
       * The table types depend on vendor/implementation. It is usually used to separate tables from views or system tables.
       * TABLE, VIEW, and SYSTEM TABLE are commonly supported.
       * </pre>
       *
       * <code>repeated string table_types = 4;</code>
       * @param index The index to set the value at.
       * @param value The tableTypes to set.
       * @return This builder for chaining.
       */
      public Builder setTableTypes(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureTableTypesIsMutable();
        tableTypes_.set(index, value);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies a filter of table types which must match.
       * The table types depend on vendor/implementation. It is usually used to separate tables from views or system tables.
       * TABLE, VIEW, and SYSTEM TABLE are commonly supported.
       * </pre>
       *
       * <code>repeated string table_types = 4;</code>
       * @param value The tableTypes to add.
       * @return This builder for chaining.
       */
      public Builder addTableTypes(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureTableTypesIsMutable();
        tableTypes_.add(value);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies a filter of table types which must match.
       * The table types depend on vendor/implementation. It is usually used to separate tables from views or system tables.
       * TABLE, VIEW, and SYSTEM TABLE are commonly supported.
       * </pre>
       *
       * <code>repeated string table_types = 4;</code>
       * @param values The tableTypes to add.
       * @return This builder for chaining.
       */
      public Builder addAllTableTypes(
          java.lang.Iterable<java.lang.String> values) {
        ensureTableTypesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, tableTypes_);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies a filter of table types which must match.
       * The table types depend on vendor/implementation. It is usually used to separate tables from views or system tables.
       * TABLE, VIEW, and SYSTEM TABLE are commonly supported.
       * </pre>
       *
       * <code>repeated string table_types = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearTableTypes() {
        tableTypes_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies a filter of table types which must match.
       * The table types depend on vendor/implementation. It is usually used to separate tables from views or system tables.
       * TABLE, VIEW, and SYSTEM TABLE are commonly supported.
       * </pre>
       *
       * <code>repeated string table_types = 4;</code>
       * @param value The bytes of the tableTypes to add.
       * @return This builder for chaining.
       */
      public Builder addTableTypesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureTableTypesIsMutable();
        tableTypes_.add(value);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private boolean includeSchema_ ;
      /**
       * <pre>
       * Specifies if the Arrow schema should be returned for found tables.
       * </pre>
       *
       * <code>bool include_schema = 5;</code>
       * @return The includeSchema.
       */
      @java.lang.Override
      public boolean getIncludeSchema() {
        return includeSchema_;
      }
      /**
       * <pre>
       * Specifies if the Arrow schema should be returned for found tables.
       * </pre>
       *
       * <code>bool include_schema = 5;</code>
       * @param value The includeSchema to set.
       * @return This builder for chaining.
       */
      public Builder setIncludeSchema(boolean value) {

        includeSchema_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specifies if the Arrow schema should be returned for found tables.
       * </pre>
       *
       * <code>bool include_schema = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearIncludeSchema() {
        bitField0_ = (bitField0_ & ~0x00000010);
        includeSchema_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.CommandGetTables)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.CommandGetTables)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CommandGetTables>
        PARSER = new com.google.protobuf.AbstractParser<CommandGetTables>() {
      @java.lang.Override
      public CommandGetTables parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CommandGetTables> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CommandGetTables> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTables getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CommandGetTableTypesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.CommandGetTableTypes)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   *
   * Represents a request to retrieve the list of table types on a Flight SQL enabled backend.
   * The table types depend on vendor/implementation. It is usually used to separate tables from views or system tables.
   * TABLE, VIEW, and SYSTEM TABLE are commonly supported.
   * Used in the command member of FlightDescriptor for the following RPC calls:
   *  - GetSchema: return the Arrow schema of the query.
   *  - GetFlightInfo: execute the catalog metadata request.
   *
   * The returned Arrow schema will be:
   * &lt;
   *  table_type: utf8 not null
   * &gt;
   * The returned data should be ordered by table_type.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.CommandGetTableTypes}
   */
  public static final class CommandGetTableTypes extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.CommandGetTableTypes)
      CommandGetTableTypesOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CommandGetTableTypes.newBuilder() to construct.
    private CommandGetTableTypes(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CommandGetTableTypes() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CommandGetTableTypes();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetTableTypes_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetTableTypes_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes other = (org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes) obj;

      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Represents a request to retrieve the list of table types on a Flight SQL enabled backend.
     * The table types depend on vendor/implementation. It is usually used to separate tables from views or system tables.
     * TABLE, VIEW, and SYSTEM TABLE are commonly supported.
     * Used in the command member of FlightDescriptor for the following RPC calls:
     *  - GetSchema: return the Arrow schema of the query.
     *  - GetFlightInfo: execute the catalog metadata request.
     *
     * The returned Arrow schema will be:
     * &lt;
     *  table_type: utf8 not null
     * &gt;
     * The returned data should be ordered by table_type.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.CommandGetTableTypes}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.CommandGetTableTypes)
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypesOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetTableTypes_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetTableTypes_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetTableTypes_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes build() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes result = new org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.CommandGetTableTypes)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.CommandGetTableTypes)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CommandGetTableTypes>
        PARSER = new com.google.protobuf.AbstractParser<CommandGetTableTypes>() {
      @java.lang.Override
      public CommandGetTableTypes parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CommandGetTableTypes> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CommandGetTableTypes> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetTableTypes getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CommandGetPrimaryKeysOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.CommandGetPrimaryKeys)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *
     * Specifies the catalog to search for the table.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return Whether the catalog field is set.
     */
    boolean hasCatalog();
    /**
     * <pre>
     *
     * Specifies the catalog to search for the table.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return The catalog.
     */
    java.lang.String getCatalog();
    /**
     * <pre>
     *
     * Specifies the catalog to search for the table.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return The bytes for catalog.
     */
    com.google.protobuf.ByteString
        getCatalogBytes();

    /**
     * <pre>
     *
     * Specifies the schema to search for the table.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string db_schema = 2;</code>
     * @return Whether the dbSchema field is set.
     */
    boolean hasDbSchema();
    /**
     * <pre>
     *
     * Specifies the schema to search for the table.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string db_schema = 2;</code>
     * @return The dbSchema.
     */
    java.lang.String getDbSchema();
    /**
     * <pre>
     *
     * Specifies the schema to search for the table.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string db_schema = 2;</code>
     * @return The bytes for dbSchema.
     */
    com.google.protobuf.ByteString
        getDbSchemaBytes();

    /**
     * <pre>
     * Specifies the table to get the primary keys for.
     * </pre>
     *
     * <code>string table = 3;</code>
     * @return The table.
     */
    java.lang.String getTable();
    /**
     * <pre>
     * Specifies the table to get the primary keys for.
     * </pre>
     *
     * <code>string table = 3;</code>
     * @return The bytes for table.
     */
    com.google.protobuf.ByteString
        getTableBytes();
  }
  /**
   * <pre>
   *
   * Represents a request to retrieve the primary keys of a table on a Flight SQL enabled backend.
   * Used in the command member of FlightDescriptor for the following RPC calls:
   *  - GetSchema: return the Arrow schema of the query.
   *  - GetFlightInfo: execute the catalog metadata request.
   *
   * The returned Arrow schema will be:
   * &lt;
   *  catalog_name: utf8,
   *  db_schema_name: utf8,
   *  table_name: utf8 not null,
   *  column_name: utf8 not null,
   *  key_name: utf8,
   *  key_sequence: int32 not null
   * &gt;
   * The returned data should be ordered by catalog_name, db_schema_name, table_name, key_name, then key_sequence.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.CommandGetPrimaryKeys}
   */
  public static final class CommandGetPrimaryKeys extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.CommandGetPrimaryKeys)
      CommandGetPrimaryKeysOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CommandGetPrimaryKeys.newBuilder() to construct.
    private CommandGetPrimaryKeys(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CommandGetPrimaryKeys() {
      catalog_ = "";
      dbSchema_ = "";
      table_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CommandGetPrimaryKeys();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetPrimaryKeys_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetPrimaryKeys_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys.Builder.class);
    }

    private int bitField0_;
    public static final int CATALOG_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object catalog_ = "";
    /**
     * <pre>
     *
     * Specifies the catalog to search for the table.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return Whether the catalog field is set.
     */
    @java.lang.Override
    public boolean hasCatalog() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     *
     * Specifies the catalog to search for the table.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return The catalog.
     */
    @java.lang.Override
    public java.lang.String getCatalog() {
      java.lang.Object ref = catalog_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        catalog_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *
     * Specifies the catalog to search for the table.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return The bytes for catalog.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCatalogBytes() {
      java.lang.Object ref = catalog_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        catalog_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DB_SCHEMA_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object dbSchema_ = "";
    /**
     * <pre>
     *
     * Specifies the schema to search for the table.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string db_schema = 2;</code>
     * @return Whether the dbSchema field is set.
     */
    @java.lang.Override
    public boolean hasDbSchema() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     *
     * Specifies the schema to search for the table.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string db_schema = 2;</code>
     * @return The dbSchema.
     */
    @java.lang.Override
    public java.lang.String getDbSchema() {
      java.lang.Object ref = dbSchema_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        dbSchema_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *
     * Specifies the schema to search for the table.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string db_schema = 2;</code>
     * @return The bytes for dbSchema.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDbSchemaBytes() {
      java.lang.Object ref = dbSchema_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        dbSchema_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TABLE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object table_ = "";
    /**
     * <pre>
     * Specifies the table to get the primary keys for.
     * </pre>
     *
     * <code>string table = 3;</code>
     * @return The table.
     */
    @java.lang.Override
    public java.lang.String getTable() {
      java.lang.Object ref = table_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        table_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Specifies the table to get the primary keys for.
     * </pre>
     *
     * <code>string table = 3;</code>
     * @return The bytes for table.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTableBytes() {
      java.lang.Object ref = table_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        table_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, catalog_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dbSchema_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(table_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, table_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, catalog_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dbSchema_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(table_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, table_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys other = (org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys) obj;

      if (hasCatalog() != other.hasCatalog()) return false;
      if (hasCatalog()) {
        if (!getCatalog()
            .equals(other.getCatalog())) return false;
      }
      if (hasDbSchema() != other.hasDbSchema()) return false;
      if (hasDbSchema()) {
        if (!getDbSchema()
            .equals(other.getDbSchema())) return false;
      }
      if (!getTable()
          .equals(other.getTable())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasCatalog()) {
        hash = (37 * hash) + CATALOG_FIELD_NUMBER;
        hash = (53 * hash) + getCatalog().hashCode();
      }
      if (hasDbSchema()) {
        hash = (37 * hash) + DB_SCHEMA_FIELD_NUMBER;
        hash = (53 * hash) + getDbSchema().hashCode();
      }
      hash = (37 * hash) + TABLE_FIELD_NUMBER;
      hash = (53 * hash) + getTable().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Represents a request to retrieve the primary keys of a table on a Flight SQL enabled backend.
     * Used in the command member of FlightDescriptor for the following RPC calls:
     *  - GetSchema: return the Arrow schema of the query.
     *  - GetFlightInfo: execute the catalog metadata request.
     *
     * The returned Arrow schema will be:
     * &lt;
     *  catalog_name: utf8,
     *  db_schema_name: utf8,
     *  table_name: utf8 not null,
     *  column_name: utf8 not null,
     *  key_name: utf8,
     *  key_sequence: int32 not null
     * &gt;
     * The returned data should be ordered by catalog_name, db_schema_name, table_name, key_name, then key_sequence.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.CommandGetPrimaryKeys}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.CommandGetPrimaryKeys)
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeysOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetPrimaryKeys_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetPrimaryKeys_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        catalog_ = "";
        dbSchema_ = "";
        table_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetPrimaryKeys_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys build() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys result = new org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.catalog_ = catalog_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.dbSchema_ = dbSchema_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.table_ = table_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys.getDefaultInstance()) return this;
        if (other.hasCatalog()) {
          catalog_ = other.catalog_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasDbSchema()) {
          dbSchema_ = other.dbSchema_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.getTable().isEmpty()) {
          table_ = other.table_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                catalog_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                dbSchema_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                table_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object catalog_ = "";
      /**
       * <pre>
       *
       * Specifies the catalog to search for the table.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @return Whether the catalog field is set.
       */
      public boolean hasCatalog() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       *
       * Specifies the catalog to search for the table.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @return The catalog.
       */
      public java.lang.String getCatalog() {
        java.lang.Object ref = catalog_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          catalog_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *
       * Specifies the catalog to search for the table.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @return The bytes for catalog.
       */
      public com.google.protobuf.ByteString
          getCatalogBytes() {
        java.lang.Object ref = catalog_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          catalog_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *
       * Specifies the catalog to search for the table.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @param value The catalog to set.
       * @return This builder for chaining.
       */
      public Builder setCatalog(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        catalog_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies the catalog to search for the table.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearCatalog() {
        catalog_ = getDefaultInstance().getCatalog();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies the catalog to search for the table.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @param value The bytes for catalog to set.
       * @return This builder for chaining.
       */
      public Builder setCatalogBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        catalog_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object dbSchema_ = "";
      /**
       * <pre>
       *
       * Specifies the schema to search for the table.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string db_schema = 2;</code>
       * @return Whether the dbSchema field is set.
       */
      public boolean hasDbSchema() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       *
       * Specifies the schema to search for the table.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string db_schema = 2;</code>
       * @return The dbSchema.
       */
      public java.lang.String getDbSchema() {
        java.lang.Object ref = dbSchema_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          dbSchema_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *
       * Specifies the schema to search for the table.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string db_schema = 2;</code>
       * @return The bytes for dbSchema.
       */
      public com.google.protobuf.ByteString
          getDbSchemaBytes() {
        java.lang.Object ref = dbSchema_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          dbSchema_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *
       * Specifies the schema to search for the table.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string db_schema = 2;</code>
       * @param value The dbSchema to set.
       * @return This builder for chaining.
       */
      public Builder setDbSchema(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        dbSchema_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies the schema to search for the table.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string db_schema = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDbSchema() {
        dbSchema_ = getDefaultInstance().getDbSchema();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies the schema to search for the table.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string db_schema = 2;</code>
       * @param value The bytes for dbSchema to set.
       * @return This builder for chaining.
       */
      public Builder setDbSchemaBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        dbSchema_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object table_ = "";
      /**
       * <pre>
       * Specifies the table to get the primary keys for.
       * </pre>
       *
       * <code>string table = 3;</code>
       * @return The table.
       */
      public java.lang.String getTable() {
        java.lang.Object ref = table_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          table_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Specifies the table to get the primary keys for.
       * </pre>
       *
       * <code>string table = 3;</code>
       * @return The bytes for table.
       */
      public com.google.protobuf.ByteString
          getTableBytes() {
        java.lang.Object ref = table_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          table_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Specifies the table to get the primary keys for.
       * </pre>
       *
       * <code>string table = 3;</code>
       * @param value The table to set.
       * @return This builder for chaining.
       */
      public Builder setTable(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        table_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specifies the table to get the primary keys for.
       * </pre>
       *
       * <code>string table = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearTable() {
        table_ = getDefaultInstance().getTable();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specifies the table to get the primary keys for.
       * </pre>
       *
       * <code>string table = 3;</code>
       * @param value The bytes for table to set.
       * @return This builder for chaining.
       */
      public Builder setTableBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        table_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.CommandGetPrimaryKeys)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.CommandGetPrimaryKeys)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CommandGetPrimaryKeys>
        PARSER = new com.google.protobuf.AbstractParser<CommandGetPrimaryKeys>() {
      @java.lang.Override
      public CommandGetPrimaryKeys parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CommandGetPrimaryKeys> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CommandGetPrimaryKeys> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetPrimaryKeys getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CommandGetExportedKeysOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.CommandGetExportedKeys)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *
     * Specifies the catalog to search for the foreign key table.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return Whether the catalog field is set.
     */
    boolean hasCatalog();
    /**
     * <pre>
     *
     * Specifies the catalog to search for the foreign key table.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return The catalog.
     */
    java.lang.String getCatalog();
    /**
     * <pre>
     *
     * Specifies the catalog to search for the foreign key table.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return The bytes for catalog.
     */
    com.google.protobuf.ByteString
        getCatalogBytes();

    /**
     * <pre>
     *
     * Specifies the schema to search for the foreign key table.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string db_schema = 2;</code>
     * @return Whether the dbSchema field is set.
     */
    boolean hasDbSchema();
    /**
     * <pre>
     *
     * Specifies the schema to search for the foreign key table.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string db_schema = 2;</code>
     * @return The dbSchema.
     */
    java.lang.String getDbSchema();
    /**
     * <pre>
     *
     * Specifies the schema to search for the foreign key table.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string db_schema = 2;</code>
     * @return The bytes for dbSchema.
     */
    com.google.protobuf.ByteString
        getDbSchemaBytes();

    /**
     * <pre>
     * Specifies the foreign key table to get the foreign keys for.
     * </pre>
     *
     * <code>string table = 3;</code>
     * @return The table.
     */
    java.lang.String getTable();
    /**
     * <pre>
     * Specifies the foreign key table to get the foreign keys for.
     * </pre>
     *
     * <code>string table = 3;</code>
     * @return The bytes for table.
     */
    com.google.protobuf.ByteString
        getTableBytes();
  }
  /**
   * <pre>
   *
   * Represents a request to retrieve a description of the foreign key columns that reference the given table's
   * primary key columns (the foreign keys exported by a table) of a table on a Flight SQL enabled backend.
   * Used in the command member of FlightDescriptor for the following RPC calls:
   *  - GetSchema: return the Arrow schema of the query.
   *  - GetFlightInfo: execute the catalog metadata request.
   *
   * The returned Arrow schema will be:
   * &lt;
   *  pk_catalog_name: utf8,
   *  pk_db_schema_name: utf8,
   *  pk_table_name: utf8 not null,
   *  pk_column_name: utf8 not null,
   *  fk_catalog_name: utf8,
   *  fk_db_schema_name: utf8,
   *  fk_table_name: utf8 not null,
   *  fk_column_name: utf8 not null,
   *  key_sequence: int32 not null,
   *  fk_key_name: utf8,
   *  pk_key_name: utf8,
   *  update_rule: uint8 not null,
   *  delete_rule: uint8 not null
   * &gt;
   * The returned data should be ordered by fk_catalog_name, fk_db_schema_name, fk_table_name, fk_key_name, then key_sequence.
   * update_rule and delete_rule returns a byte that is equivalent to actions declared on UpdateDeleteRules enum.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.CommandGetExportedKeys}
   */
  public static final class CommandGetExportedKeys extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.CommandGetExportedKeys)
      CommandGetExportedKeysOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CommandGetExportedKeys.newBuilder() to construct.
    private CommandGetExportedKeys(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CommandGetExportedKeys() {
      catalog_ = "";
      dbSchema_ = "";
      table_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CommandGetExportedKeys();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetExportedKeys_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetExportedKeys_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys.Builder.class);
    }

    private int bitField0_;
    public static final int CATALOG_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object catalog_ = "";
    /**
     * <pre>
     *
     * Specifies the catalog to search for the foreign key table.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return Whether the catalog field is set.
     */
    @java.lang.Override
    public boolean hasCatalog() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     *
     * Specifies the catalog to search for the foreign key table.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return The catalog.
     */
    @java.lang.Override
    public java.lang.String getCatalog() {
      java.lang.Object ref = catalog_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        catalog_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *
     * Specifies the catalog to search for the foreign key table.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return The bytes for catalog.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCatalogBytes() {
      java.lang.Object ref = catalog_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        catalog_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DB_SCHEMA_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object dbSchema_ = "";
    /**
     * <pre>
     *
     * Specifies the schema to search for the foreign key table.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string db_schema = 2;</code>
     * @return Whether the dbSchema field is set.
     */
    @java.lang.Override
    public boolean hasDbSchema() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     *
     * Specifies the schema to search for the foreign key table.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string db_schema = 2;</code>
     * @return The dbSchema.
     */
    @java.lang.Override
    public java.lang.String getDbSchema() {
      java.lang.Object ref = dbSchema_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        dbSchema_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *
     * Specifies the schema to search for the foreign key table.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string db_schema = 2;</code>
     * @return The bytes for dbSchema.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDbSchemaBytes() {
      java.lang.Object ref = dbSchema_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        dbSchema_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TABLE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object table_ = "";
    /**
     * <pre>
     * Specifies the foreign key table to get the foreign keys for.
     * </pre>
     *
     * <code>string table = 3;</code>
     * @return The table.
     */
    @java.lang.Override
    public java.lang.String getTable() {
      java.lang.Object ref = table_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        table_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Specifies the foreign key table to get the foreign keys for.
     * </pre>
     *
     * <code>string table = 3;</code>
     * @return The bytes for table.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTableBytes() {
      java.lang.Object ref = table_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        table_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, catalog_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dbSchema_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(table_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, table_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, catalog_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dbSchema_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(table_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, table_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys other = (org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys) obj;

      if (hasCatalog() != other.hasCatalog()) return false;
      if (hasCatalog()) {
        if (!getCatalog()
            .equals(other.getCatalog())) return false;
      }
      if (hasDbSchema() != other.hasDbSchema()) return false;
      if (hasDbSchema()) {
        if (!getDbSchema()
            .equals(other.getDbSchema())) return false;
      }
      if (!getTable()
          .equals(other.getTable())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasCatalog()) {
        hash = (37 * hash) + CATALOG_FIELD_NUMBER;
        hash = (53 * hash) + getCatalog().hashCode();
      }
      if (hasDbSchema()) {
        hash = (37 * hash) + DB_SCHEMA_FIELD_NUMBER;
        hash = (53 * hash) + getDbSchema().hashCode();
      }
      hash = (37 * hash) + TABLE_FIELD_NUMBER;
      hash = (53 * hash) + getTable().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Represents a request to retrieve a description of the foreign key columns that reference the given table's
     * primary key columns (the foreign keys exported by a table) of a table on a Flight SQL enabled backend.
     * Used in the command member of FlightDescriptor for the following RPC calls:
     *  - GetSchema: return the Arrow schema of the query.
     *  - GetFlightInfo: execute the catalog metadata request.
     *
     * The returned Arrow schema will be:
     * &lt;
     *  pk_catalog_name: utf8,
     *  pk_db_schema_name: utf8,
     *  pk_table_name: utf8 not null,
     *  pk_column_name: utf8 not null,
     *  fk_catalog_name: utf8,
     *  fk_db_schema_name: utf8,
     *  fk_table_name: utf8 not null,
     *  fk_column_name: utf8 not null,
     *  key_sequence: int32 not null,
     *  fk_key_name: utf8,
     *  pk_key_name: utf8,
     *  update_rule: uint8 not null,
     *  delete_rule: uint8 not null
     * &gt;
     * The returned data should be ordered by fk_catalog_name, fk_db_schema_name, fk_table_name, fk_key_name, then key_sequence.
     * update_rule and delete_rule returns a byte that is equivalent to actions declared on UpdateDeleteRules enum.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.CommandGetExportedKeys}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.CommandGetExportedKeys)
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeysOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetExportedKeys_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetExportedKeys_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        catalog_ = "";
        dbSchema_ = "";
        table_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetExportedKeys_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys build() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys result = new org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.catalog_ = catalog_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.dbSchema_ = dbSchema_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.table_ = table_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys.getDefaultInstance()) return this;
        if (other.hasCatalog()) {
          catalog_ = other.catalog_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasDbSchema()) {
          dbSchema_ = other.dbSchema_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.getTable().isEmpty()) {
          table_ = other.table_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                catalog_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                dbSchema_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                table_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object catalog_ = "";
      /**
       * <pre>
       *
       * Specifies the catalog to search for the foreign key table.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @return Whether the catalog field is set.
       */
      public boolean hasCatalog() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       *
       * Specifies the catalog to search for the foreign key table.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @return The catalog.
       */
      public java.lang.String getCatalog() {
        java.lang.Object ref = catalog_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          catalog_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *
       * Specifies the catalog to search for the foreign key table.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @return The bytes for catalog.
       */
      public com.google.protobuf.ByteString
          getCatalogBytes() {
        java.lang.Object ref = catalog_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          catalog_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *
       * Specifies the catalog to search for the foreign key table.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @param value The catalog to set.
       * @return This builder for chaining.
       */
      public Builder setCatalog(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        catalog_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies the catalog to search for the foreign key table.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearCatalog() {
        catalog_ = getDefaultInstance().getCatalog();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies the catalog to search for the foreign key table.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @param value The bytes for catalog to set.
       * @return This builder for chaining.
       */
      public Builder setCatalogBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        catalog_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object dbSchema_ = "";
      /**
       * <pre>
       *
       * Specifies the schema to search for the foreign key table.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string db_schema = 2;</code>
       * @return Whether the dbSchema field is set.
       */
      public boolean hasDbSchema() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       *
       * Specifies the schema to search for the foreign key table.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string db_schema = 2;</code>
       * @return The dbSchema.
       */
      public java.lang.String getDbSchema() {
        java.lang.Object ref = dbSchema_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          dbSchema_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *
       * Specifies the schema to search for the foreign key table.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string db_schema = 2;</code>
       * @return The bytes for dbSchema.
       */
      public com.google.protobuf.ByteString
          getDbSchemaBytes() {
        java.lang.Object ref = dbSchema_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          dbSchema_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *
       * Specifies the schema to search for the foreign key table.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string db_schema = 2;</code>
       * @param value The dbSchema to set.
       * @return This builder for chaining.
       */
      public Builder setDbSchema(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        dbSchema_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies the schema to search for the foreign key table.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string db_schema = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDbSchema() {
        dbSchema_ = getDefaultInstance().getDbSchema();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies the schema to search for the foreign key table.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string db_schema = 2;</code>
       * @param value The bytes for dbSchema to set.
       * @return This builder for chaining.
       */
      public Builder setDbSchemaBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        dbSchema_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object table_ = "";
      /**
       * <pre>
       * Specifies the foreign key table to get the foreign keys for.
       * </pre>
       *
       * <code>string table = 3;</code>
       * @return The table.
       */
      public java.lang.String getTable() {
        java.lang.Object ref = table_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          table_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Specifies the foreign key table to get the foreign keys for.
       * </pre>
       *
       * <code>string table = 3;</code>
       * @return The bytes for table.
       */
      public com.google.protobuf.ByteString
          getTableBytes() {
        java.lang.Object ref = table_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          table_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Specifies the foreign key table to get the foreign keys for.
       * </pre>
       *
       * <code>string table = 3;</code>
       * @param value The table to set.
       * @return This builder for chaining.
       */
      public Builder setTable(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        table_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specifies the foreign key table to get the foreign keys for.
       * </pre>
       *
       * <code>string table = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearTable() {
        table_ = getDefaultInstance().getTable();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specifies the foreign key table to get the foreign keys for.
       * </pre>
       *
       * <code>string table = 3;</code>
       * @param value The bytes for table to set.
       * @return This builder for chaining.
       */
      public Builder setTableBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        table_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.CommandGetExportedKeys)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.CommandGetExportedKeys)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CommandGetExportedKeys>
        PARSER = new com.google.protobuf.AbstractParser<CommandGetExportedKeys>() {
      @java.lang.Override
      public CommandGetExportedKeys parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CommandGetExportedKeys> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CommandGetExportedKeys> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetExportedKeys getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CommandGetImportedKeysOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.CommandGetImportedKeys)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *
     * Specifies the catalog to search for the primary key table.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return Whether the catalog field is set.
     */
    boolean hasCatalog();
    /**
     * <pre>
     *
     * Specifies the catalog to search for the primary key table.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return The catalog.
     */
    java.lang.String getCatalog();
    /**
     * <pre>
     *
     * Specifies the catalog to search for the primary key table.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return The bytes for catalog.
     */
    com.google.protobuf.ByteString
        getCatalogBytes();

    /**
     * <pre>
     *
     * Specifies the schema to search for the primary key table.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string db_schema = 2;</code>
     * @return Whether the dbSchema field is set.
     */
    boolean hasDbSchema();
    /**
     * <pre>
     *
     * Specifies the schema to search for the primary key table.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string db_schema = 2;</code>
     * @return The dbSchema.
     */
    java.lang.String getDbSchema();
    /**
     * <pre>
     *
     * Specifies the schema to search for the primary key table.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string db_schema = 2;</code>
     * @return The bytes for dbSchema.
     */
    com.google.protobuf.ByteString
        getDbSchemaBytes();

    /**
     * <pre>
     * Specifies the primary key table to get the foreign keys for.
     * </pre>
     *
     * <code>string table = 3;</code>
     * @return The table.
     */
    java.lang.String getTable();
    /**
     * <pre>
     * Specifies the primary key table to get the foreign keys for.
     * </pre>
     *
     * <code>string table = 3;</code>
     * @return The bytes for table.
     */
    com.google.protobuf.ByteString
        getTableBytes();
  }
  /**
   * <pre>
   *
   * Represents a request to retrieve the foreign keys of a table on a Flight SQL enabled backend.
   * Used in the command member of FlightDescriptor for the following RPC calls:
   *  - GetSchema: return the Arrow schema of the query.
   *  - GetFlightInfo: execute the catalog metadata request.
   *
   * The returned Arrow schema will be:
   * &lt;
   *  pk_catalog_name: utf8,
   *  pk_db_schema_name: utf8,
   *  pk_table_name: utf8 not null,
   *  pk_column_name: utf8 not null,
   *  fk_catalog_name: utf8,
   *  fk_db_schema_name: utf8,
   *  fk_table_name: utf8 not null,
   *  fk_column_name: utf8 not null,
   *  key_sequence: int32 not null,
   *  fk_key_name: utf8,
   *  pk_key_name: utf8,
   *  update_rule: uint8 not null,
   *  delete_rule: uint8 not null
   * &gt;
   * The returned data should be ordered by pk_catalog_name, pk_db_schema_name, pk_table_name, pk_key_name, then key_sequence.
   * update_rule and delete_rule returns a byte that is equivalent to actions:
   *    - 0 = CASCADE
   *    - 1 = RESTRICT
   *    - 2 = SET NULL
   *    - 3 = NO ACTION
   *    - 4 = SET DEFAULT
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.CommandGetImportedKeys}
   */
  public static final class CommandGetImportedKeys extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.CommandGetImportedKeys)
      CommandGetImportedKeysOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CommandGetImportedKeys.newBuilder() to construct.
    private CommandGetImportedKeys(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CommandGetImportedKeys() {
      catalog_ = "";
      dbSchema_ = "";
      table_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CommandGetImportedKeys();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetImportedKeys_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetImportedKeys_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys.Builder.class);
    }

    private int bitField0_;
    public static final int CATALOG_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object catalog_ = "";
    /**
     * <pre>
     *
     * Specifies the catalog to search for the primary key table.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return Whether the catalog field is set.
     */
    @java.lang.Override
    public boolean hasCatalog() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     *
     * Specifies the catalog to search for the primary key table.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return The catalog.
     */
    @java.lang.Override
    public java.lang.String getCatalog() {
      java.lang.Object ref = catalog_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        catalog_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *
     * Specifies the catalog to search for the primary key table.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string catalog = 1;</code>
     * @return The bytes for catalog.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCatalogBytes() {
      java.lang.Object ref = catalog_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        catalog_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DB_SCHEMA_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object dbSchema_ = "";
    /**
     * <pre>
     *
     * Specifies the schema to search for the primary key table.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string db_schema = 2;</code>
     * @return Whether the dbSchema field is set.
     */
    @java.lang.Override
    public boolean hasDbSchema() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     *
     * Specifies the schema to search for the primary key table.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string db_schema = 2;</code>
     * @return The dbSchema.
     */
    @java.lang.Override
    public java.lang.String getDbSchema() {
      java.lang.Object ref = dbSchema_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        dbSchema_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *
     * Specifies the schema to search for the primary key table.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string db_schema = 2;</code>
     * @return The bytes for dbSchema.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDbSchemaBytes() {
      java.lang.Object ref = dbSchema_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        dbSchema_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TABLE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object table_ = "";
    /**
     * <pre>
     * Specifies the primary key table to get the foreign keys for.
     * </pre>
     *
     * <code>string table = 3;</code>
     * @return The table.
     */
    @java.lang.Override
    public java.lang.String getTable() {
      java.lang.Object ref = table_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        table_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Specifies the primary key table to get the foreign keys for.
     * </pre>
     *
     * <code>string table = 3;</code>
     * @return The bytes for table.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTableBytes() {
      java.lang.Object ref = table_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        table_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, catalog_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dbSchema_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(table_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, table_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, catalog_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dbSchema_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(table_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, table_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys other = (org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys) obj;

      if (hasCatalog() != other.hasCatalog()) return false;
      if (hasCatalog()) {
        if (!getCatalog()
            .equals(other.getCatalog())) return false;
      }
      if (hasDbSchema() != other.hasDbSchema()) return false;
      if (hasDbSchema()) {
        if (!getDbSchema()
            .equals(other.getDbSchema())) return false;
      }
      if (!getTable()
          .equals(other.getTable())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasCatalog()) {
        hash = (37 * hash) + CATALOG_FIELD_NUMBER;
        hash = (53 * hash) + getCatalog().hashCode();
      }
      if (hasDbSchema()) {
        hash = (37 * hash) + DB_SCHEMA_FIELD_NUMBER;
        hash = (53 * hash) + getDbSchema().hashCode();
      }
      hash = (37 * hash) + TABLE_FIELD_NUMBER;
      hash = (53 * hash) + getTable().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Represents a request to retrieve the foreign keys of a table on a Flight SQL enabled backend.
     * Used in the command member of FlightDescriptor for the following RPC calls:
     *  - GetSchema: return the Arrow schema of the query.
     *  - GetFlightInfo: execute the catalog metadata request.
     *
     * The returned Arrow schema will be:
     * &lt;
     *  pk_catalog_name: utf8,
     *  pk_db_schema_name: utf8,
     *  pk_table_name: utf8 not null,
     *  pk_column_name: utf8 not null,
     *  fk_catalog_name: utf8,
     *  fk_db_schema_name: utf8,
     *  fk_table_name: utf8 not null,
     *  fk_column_name: utf8 not null,
     *  key_sequence: int32 not null,
     *  fk_key_name: utf8,
     *  pk_key_name: utf8,
     *  update_rule: uint8 not null,
     *  delete_rule: uint8 not null
     * &gt;
     * The returned data should be ordered by pk_catalog_name, pk_db_schema_name, pk_table_name, pk_key_name, then key_sequence.
     * update_rule and delete_rule returns a byte that is equivalent to actions:
     *    - 0 = CASCADE
     *    - 1 = RESTRICT
     *    - 2 = SET NULL
     *    - 3 = NO ACTION
     *    - 4 = SET DEFAULT
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.CommandGetImportedKeys}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.CommandGetImportedKeys)
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeysOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetImportedKeys_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetImportedKeys_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        catalog_ = "";
        dbSchema_ = "";
        table_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetImportedKeys_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys build() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys result = new org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.catalog_ = catalog_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.dbSchema_ = dbSchema_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.table_ = table_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys.getDefaultInstance()) return this;
        if (other.hasCatalog()) {
          catalog_ = other.catalog_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasDbSchema()) {
          dbSchema_ = other.dbSchema_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.getTable().isEmpty()) {
          table_ = other.table_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                catalog_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                dbSchema_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                table_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object catalog_ = "";
      /**
       * <pre>
       *
       * Specifies the catalog to search for the primary key table.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @return Whether the catalog field is set.
       */
      public boolean hasCatalog() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       *
       * Specifies the catalog to search for the primary key table.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @return The catalog.
       */
      public java.lang.String getCatalog() {
        java.lang.Object ref = catalog_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          catalog_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *
       * Specifies the catalog to search for the primary key table.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @return The bytes for catalog.
       */
      public com.google.protobuf.ByteString
          getCatalogBytes() {
        java.lang.Object ref = catalog_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          catalog_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *
       * Specifies the catalog to search for the primary key table.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @param value The catalog to set.
       * @return This builder for chaining.
       */
      public Builder setCatalog(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        catalog_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies the catalog to search for the primary key table.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearCatalog() {
        catalog_ = getDefaultInstance().getCatalog();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies the catalog to search for the primary key table.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string catalog = 1;</code>
       * @param value The bytes for catalog to set.
       * @return This builder for chaining.
       */
      public Builder setCatalogBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        catalog_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object dbSchema_ = "";
      /**
       * <pre>
       *
       * Specifies the schema to search for the primary key table.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string db_schema = 2;</code>
       * @return Whether the dbSchema field is set.
       */
      public boolean hasDbSchema() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       *
       * Specifies the schema to search for the primary key table.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string db_schema = 2;</code>
       * @return The dbSchema.
       */
      public java.lang.String getDbSchema() {
        java.lang.Object ref = dbSchema_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          dbSchema_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *
       * Specifies the schema to search for the primary key table.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string db_schema = 2;</code>
       * @return The bytes for dbSchema.
       */
      public com.google.protobuf.ByteString
          getDbSchemaBytes() {
        java.lang.Object ref = dbSchema_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          dbSchema_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *
       * Specifies the schema to search for the primary key table.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string db_schema = 2;</code>
       * @param value The dbSchema to set.
       * @return This builder for chaining.
       */
      public Builder setDbSchema(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        dbSchema_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies the schema to search for the primary key table.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string db_schema = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDbSchema() {
        dbSchema_ = getDefaultInstance().getDbSchema();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Specifies the schema to search for the primary key table.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string db_schema = 2;</code>
       * @param value The bytes for dbSchema to set.
       * @return This builder for chaining.
       */
      public Builder setDbSchemaBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        dbSchema_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object table_ = "";
      /**
       * <pre>
       * Specifies the primary key table to get the foreign keys for.
       * </pre>
       *
       * <code>string table = 3;</code>
       * @return The table.
       */
      public java.lang.String getTable() {
        java.lang.Object ref = table_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          table_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Specifies the primary key table to get the foreign keys for.
       * </pre>
       *
       * <code>string table = 3;</code>
       * @return The bytes for table.
       */
      public com.google.protobuf.ByteString
          getTableBytes() {
        java.lang.Object ref = table_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          table_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Specifies the primary key table to get the foreign keys for.
       * </pre>
       *
       * <code>string table = 3;</code>
       * @param value The table to set.
       * @return This builder for chaining.
       */
      public Builder setTable(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        table_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specifies the primary key table to get the foreign keys for.
       * </pre>
       *
       * <code>string table = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearTable() {
        table_ = getDefaultInstance().getTable();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specifies the primary key table to get the foreign keys for.
       * </pre>
       *
       * <code>string table = 3;</code>
       * @param value The bytes for table to set.
       * @return This builder for chaining.
       */
      public Builder setTableBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        table_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.CommandGetImportedKeys)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.CommandGetImportedKeys)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CommandGetImportedKeys>
        PARSER = new com.google.protobuf.AbstractParser<CommandGetImportedKeys>() {
      @java.lang.Override
      public CommandGetImportedKeys parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CommandGetImportedKeys> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CommandGetImportedKeys> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetImportedKeys getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CommandGetCrossReferenceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.CommandGetCrossReference)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     **
     * The catalog name where the parent table is.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string pk_catalog = 1;</code>
     * @return Whether the pkCatalog field is set.
     */
    boolean hasPkCatalog();
    /**
     * <pre>
     **
     * The catalog name where the parent table is.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string pk_catalog = 1;</code>
     * @return The pkCatalog.
     */
    java.lang.String getPkCatalog();
    /**
     * <pre>
     **
     * The catalog name where the parent table is.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string pk_catalog = 1;</code>
     * @return The bytes for pkCatalog.
     */
    com.google.protobuf.ByteString
        getPkCatalogBytes();

    /**
     * <pre>
     **
     * The Schema name where the parent table is.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string pk_db_schema = 2;</code>
     * @return Whether the pkDbSchema field is set.
     */
    boolean hasPkDbSchema();
    /**
     * <pre>
     **
     * The Schema name where the parent table is.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string pk_db_schema = 2;</code>
     * @return The pkDbSchema.
     */
    java.lang.String getPkDbSchema();
    /**
     * <pre>
     **
     * The Schema name where the parent table is.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string pk_db_schema = 2;</code>
     * @return The bytes for pkDbSchema.
     */
    com.google.protobuf.ByteString
        getPkDbSchemaBytes();

    /**
     * <pre>
     **
     * The parent table name. It cannot be null.
     * </pre>
     *
     * <code>string pk_table = 3;</code>
     * @return The pkTable.
     */
    java.lang.String getPkTable();
    /**
     * <pre>
     **
     * The parent table name. It cannot be null.
     * </pre>
     *
     * <code>string pk_table = 3;</code>
     * @return The bytes for pkTable.
     */
    com.google.protobuf.ByteString
        getPkTableBytes();

    /**
     * <pre>
     **
     * The catalog name where the foreign table is.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string fk_catalog = 4;</code>
     * @return Whether the fkCatalog field is set.
     */
    boolean hasFkCatalog();
    /**
     * <pre>
     **
     * The catalog name where the foreign table is.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string fk_catalog = 4;</code>
     * @return The fkCatalog.
     */
    java.lang.String getFkCatalog();
    /**
     * <pre>
     **
     * The catalog name where the foreign table is.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string fk_catalog = 4;</code>
     * @return The bytes for fkCatalog.
     */
    com.google.protobuf.ByteString
        getFkCatalogBytes();

    /**
     * <pre>
     **
     * The schema name where the foreign table is.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string fk_db_schema = 5;</code>
     * @return Whether the fkDbSchema field is set.
     */
    boolean hasFkDbSchema();
    /**
     * <pre>
     **
     * The schema name where the foreign table is.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string fk_db_schema = 5;</code>
     * @return The fkDbSchema.
     */
    java.lang.String getFkDbSchema();
    /**
     * <pre>
     **
     * The schema name where the foreign table is.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string fk_db_schema = 5;</code>
     * @return The bytes for fkDbSchema.
     */
    com.google.protobuf.ByteString
        getFkDbSchemaBytes();

    /**
     * <pre>
     **
     * The foreign table name. It cannot be null.
     * </pre>
     *
     * <code>string fk_table = 6;</code>
     * @return The fkTable.
     */
    java.lang.String getFkTable();
    /**
     * <pre>
     **
     * The foreign table name. It cannot be null.
     * </pre>
     *
     * <code>string fk_table = 6;</code>
     * @return The bytes for fkTable.
     */
    com.google.protobuf.ByteString
        getFkTableBytes();
  }
  /**
   * <pre>
   *
   * Represents a request to retrieve a description of the foreign key columns in the given foreign key table that
   * reference the primary key or the columns representing a unique constraint of the parent table (could be the same
   * or a different table) on a Flight SQL enabled backend.
   * Used in the command member of FlightDescriptor for the following RPC calls:
   *  - GetSchema: return the Arrow schema of the query.
   *  - GetFlightInfo: execute the catalog metadata request.
   *
   * The returned Arrow schema will be:
   * &lt;
   *  pk_catalog_name: utf8,
   *  pk_db_schema_name: utf8,
   *  pk_table_name: utf8 not null,
   *  pk_column_name: utf8 not null,
   *  fk_catalog_name: utf8,
   *  fk_db_schema_name: utf8,
   *  fk_table_name: utf8 not null,
   *  fk_column_name: utf8 not null,
   *  key_sequence: int32 not null,
   *  fk_key_name: utf8,
   *  pk_key_name: utf8,
   *  update_rule: uint8 not null,
   *  delete_rule: uint8 not null
   * &gt;
   * The returned data should be ordered by pk_catalog_name, pk_db_schema_name, pk_table_name, pk_key_name, then key_sequence.
   * update_rule and delete_rule returns a byte that is equivalent to actions:
   *    - 0 = CASCADE
   *    - 1 = RESTRICT
   *    - 2 = SET NULL
   *    - 3 = NO ACTION
   *    - 4 = SET DEFAULT
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.CommandGetCrossReference}
   */
  public static final class CommandGetCrossReference extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.CommandGetCrossReference)
      CommandGetCrossReferenceOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CommandGetCrossReference.newBuilder() to construct.
    private CommandGetCrossReference(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CommandGetCrossReference() {
      pkCatalog_ = "";
      pkDbSchema_ = "";
      pkTable_ = "";
      fkCatalog_ = "";
      fkDbSchema_ = "";
      fkTable_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CommandGetCrossReference();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetCrossReference_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetCrossReference_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference.Builder.class);
    }

    private int bitField0_;
    public static final int PK_CATALOG_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object pkCatalog_ = "";
    /**
     * <pre>
     **
     * The catalog name where the parent table is.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string pk_catalog = 1;</code>
     * @return Whether the pkCatalog field is set.
     */
    @java.lang.Override
    public boolean hasPkCatalog() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     **
     * The catalog name where the parent table is.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string pk_catalog = 1;</code>
     * @return The pkCatalog.
     */
    @java.lang.Override
    public java.lang.String getPkCatalog() {
      java.lang.Object ref = pkCatalog_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        pkCatalog_ = s;
        return s;
      }
    }
    /**
     * <pre>
     **
     * The catalog name where the parent table is.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string pk_catalog = 1;</code>
     * @return The bytes for pkCatalog.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPkCatalogBytes() {
      java.lang.Object ref = pkCatalog_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        pkCatalog_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PK_DB_SCHEMA_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object pkDbSchema_ = "";
    /**
     * <pre>
     **
     * The Schema name where the parent table is.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string pk_db_schema = 2;</code>
     * @return Whether the pkDbSchema field is set.
     */
    @java.lang.Override
    public boolean hasPkDbSchema() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     **
     * The Schema name where the parent table is.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string pk_db_schema = 2;</code>
     * @return The pkDbSchema.
     */
    @java.lang.Override
    public java.lang.String getPkDbSchema() {
      java.lang.Object ref = pkDbSchema_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        pkDbSchema_ = s;
        return s;
      }
    }
    /**
     * <pre>
     **
     * The Schema name where the parent table is.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string pk_db_schema = 2;</code>
     * @return The bytes for pkDbSchema.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPkDbSchemaBytes() {
      java.lang.Object ref = pkDbSchema_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        pkDbSchema_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PK_TABLE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object pkTable_ = "";
    /**
     * <pre>
     **
     * The parent table name. It cannot be null.
     * </pre>
     *
     * <code>string pk_table = 3;</code>
     * @return The pkTable.
     */
    @java.lang.Override
    public java.lang.String getPkTable() {
      java.lang.Object ref = pkTable_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        pkTable_ = s;
        return s;
      }
    }
    /**
     * <pre>
     **
     * The parent table name. It cannot be null.
     * </pre>
     *
     * <code>string pk_table = 3;</code>
     * @return The bytes for pkTable.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPkTableBytes() {
      java.lang.Object ref = pkTable_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        pkTable_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FK_CATALOG_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fkCatalog_ = "";
    /**
     * <pre>
     **
     * The catalog name where the foreign table is.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string fk_catalog = 4;</code>
     * @return Whether the fkCatalog field is set.
     */
    @java.lang.Override
    public boolean hasFkCatalog() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     **
     * The catalog name where the foreign table is.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string fk_catalog = 4;</code>
     * @return The fkCatalog.
     */
    @java.lang.Override
    public java.lang.String getFkCatalog() {
      java.lang.Object ref = fkCatalog_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        fkCatalog_ = s;
        return s;
      }
    }
    /**
     * <pre>
     **
     * The catalog name where the foreign table is.
     * An empty string retrieves those without a catalog.
     * If omitted the catalog name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string fk_catalog = 4;</code>
     * @return The bytes for fkCatalog.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFkCatalogBytes() {
      java.lang.Object ref = fkCatalog_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fkCatalog_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FK_DB_SCHEMA_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fkDbSchema_ = "";
    /**
     * <pre>
     **
     * The schema name where the foreign table is.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string fk_db_schema = 5;</code>
     * @return Whether the fkDbSchema field is set.
     */
    @java.lang.Override
    public boolean hasFkDbSchema() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     **
     * The schema name where the foreign table is.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string fk_db_schema = 5;</code>
     * @return The fkDbSchema.
     */
    @java.lang.Override
    public java.lang.String getFkDbSchema() {
      java.lang.Object ref = fkDbSchema_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        fkDbSchema_ = s;
        return s;
      }
    }
    /**
     * <pre>
     **
     * The schema name where the foreign table is.
     * An empty string retrieves those without a schema.
     * If omitted the schema name should not be used to narrow the search.
     * </pre>
     *
     * <code>optional string fk_db_schema = 5;</code>
     * @return The bytes for fkDbSchema.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFkDbSchemaBytes() {
      java.lang.Object ref = fkDbSchema_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fkDbSchema_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FK_TABLE_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fkTable_ = "";
    /**
     * <pre>
     **
     * The foreign table name. It cannot be null.
     * </pre>
     *
     * <code>string fk_table = 6;</code>
     * @return The fkTable.
     */
    @java.lang.Override
    public java.lang.String getFkTable() {
      java.lang.Object ref = fkTable_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        fkTable_ = s;
        return s;
      }
    }
    /**
     * <pre>
     **
     * The foreign table name. It cannot be null.
     * </pre>
     *
     * <code>string fk_table = 6;</code>
     * @return The bytes for fkTable.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFkTableBytes() {
      java.lang.Object ref = fkTable_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fkTable_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, pkCatalog_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, pkDbSchema_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(pkTable_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, pkTable_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, fkCatalog_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, fkDbSchema_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fkTable_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, fkTable_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, pkCatalog_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, pkDbSchema_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(pkTable_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, pkTable_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, fkCatalog_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, fkDbSchema_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fkTable_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, fkTable_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference other = (org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference) obj;

      if (hasPkCatalog() != other.hasPkCatalog()) return false;
      if (hasPkCatalog()) {
        if (!getPkCatalog()
            .equals(other.getPkCatalog())) return false;
      }
      if (hasPkDbSchema() != other.hasPkDbSchema()) return false;
      if (hasPkDbSchema()) {
        if (!getPkDbSchema()
            .equals(other.getPkDbSchema())) return false;
      }
      if (!getPkTable()
          .equals(other.getPkTable())) return false;
      if (hasFkCatalog() != other.hasFkCatalog()) return false;
      if (hasFkCatalog()) {
        if (!getFkCatalog()
            .equals(other.getFkCatalog())) return false;
      }
      if (hasFkDbSchema() != other.hasFkDbSchema()) return false;
      if (hasFkDbSchema()) {
        if (!getFkDbSchema()
            .equals(other.getFkDbSchema())) return false;
      }
      if (!getFkTable()
          .equals(other.getFkTable())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasPkCatalog()) {
        hash = (37 * hash) + PK_CATALOG_FIELD_NUMBER;
        hash = (53 * hash) + getPkCatalog().hashCode();
      }
      if (hasPkDbSchema()) {
        hash = (37 * hash) + PK_DB_SCHEMA_FIELD_NUMBER;
        hash = (53 * hash) + getPkDbSchema().hashCode();
      }
      hash = (37 * hash) + PK_TABLE_FIELD_NUMBER;
      hash = (53 * hash) + getPkTable().hashCode();
      if (hasFkCatalog()) {
        hash = (37 * hash) + FK_CATALOG_FIELD_NUMBER;
        hash = (53 * hash) + getFkCatalog().hashCode();
      }
      if (hasFkDbSchema()) {
        hash = (37 * hash) + FK_DB_SCHEMA_FIELD_NUMBER;
        hash = (53 * hash) + getFkDbSchema().hashCode();
      }
      hash = (37 * hash) + FK_TABLE_FIELD_NUMBER;
      hash = (53 * hash) + getFkTable().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Represents a request to retrieve a description of the foreign key columns in the given foreign key table that
     * reference the primary key or the columns representing a unique constraint of the parent table (could be the same
     * or a different table) on a Flight SQL enabled backend.
     * Used in the command member of FlightDescriptor for the following RPC calls:
     *  - GetSchema: return the Arrow schema of the query.
     *  - GetFlightInfo: execute the catalog metadata request.
     *
     * The returned Arrow schema will be:
     * &lt;
     *  pk_catalog_name: utf8,
     *  pk_db_schema_name: utf8,
     *  pk_table_name: utf8 not null,
     *  pk_column_name: utf8 not null,
     *  fk_catalog_name: utf8,
     *  fk_db_schema_name: utf8,
     *  fk_table_name: utf8 not null,
     *  fk_column_name: utf8 not null,
     *  key_sequence: int32 not null,
     *  fk_key_name: utf8,
     *  pk_key_name: utf8,
     *  update_rule: uint8 not null,
     *  delete_rule: uint8 not null
     * &gt;
     * The returned data should be ordered by pk_catalog_name, pk_db_schema_name, pk_table_name, pk_key_name, then key_sequence.
     * update_rule and delete_rule returns a byte that is equivalent to actions:
     *    - 0 = CASCADE
     *    - 1 = RESTRICT
     *    - 2 = SET NULL
     *    - 3 = NO ACTION
     *    - 4 = SET DEFAULT
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.CommandGetCrossReference}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.CommandGetCrossReference)
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReferenceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetCrossReference_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetCrossReference_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        pkCatalog_ = "";
        pkDbSchema_ = "";
        pkTable_ = "";
        fkCatalog_ = "";
        fkDbSchema_ = "";
        fkTable_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandGetCrossReference_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference build() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference result = new org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.pkCatalog_ = pkCatalog_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.pkDbSchema_ = pkDbSchema_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.pkTable_ = pkTable_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.fkCatalog_ = fkCatalog_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.fkDbSchema_ = fkDbSchema_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.fkTable_ = fkTable_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference.getDefaultInstance()) return this;
        if (other.hasPkCatalog()) {
          pkCatalog_ = other.pkCatalog_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasPkDbSchema()) {
          pkDbSchema_ = other.pkDbSchema_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.getPkTable().isEmpty()) {
          pkTable_ = other.pkTable_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasFkCatalog()) {
          fkCatalog_ = other.fkCatalog_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasFkDbSchema()) {
          fkDbSchema_ = other.fkDbSchema_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (!other.getFkTable().isEmpty()) {
          fkTable_ = other.fkTable_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                pkCatalog_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                pkDbSchema_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                pkTable_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                fkCatalog_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                fkDbSchema_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                fkTable_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object pkCatalog_ = "";
      /**
       * <pre>
       **
       * The catalog name where the parent table is.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string pk_catalog = 1;</code>
       * @return Whether the pkCatalog field is set.
       */
      public boolean hasPkCatalog() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       **
       * The catalog name where the parent table is.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string pk_catalog = 1;</code>
       * @return The pkCatalog.
       */
      public java.lang.String getPkCatalog() {
        java.lang.Object ref = pkCatalog_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          pkCatalog_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       **
       * The catalog name where the parent table is.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string pk_catalog = 1;</code>
       * @return The bytes for pkCatalog.
       */
      public com.google.protobuf.ByteString
          getPkCatalogBytes() {
        java.lang.Object ref = pkCatalog_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          pkCatalog_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       **
       * The catalog name where the parent table is.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string pk_catalog = 1;</code>
       * @param value The pkCatalog to set.
       * @return This builder for chaining.
       */
      public Builder setPkCatalog(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        pkCatalog_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       **
       * The catalog name where the parent table is.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string pk_catalog = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPkCatalog() {
        pkCatalog_ = getDefaultInstance().getPkCatalog();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       **
       * The catalog name where the parent table is.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string pk_catalog = 1;</code>
       * @param value The bytes for pkCatalog to set.
       * @return This builder for chaining.
       */
      public Builder setPkCatalogBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        pkCatalog_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object pkDbSchema_ = "";
      /**
       * <pre>
       **
       * The Schema name where the parent table is.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string pk_db_schema = 2;</code>
       * @return Whether the pkDbSchema field is set.
       */
      public boolean hasPkDbSchema() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       **
       * The Schema name where the parent table is.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string pk_db_schema = 2;</code>
       * @return The pkDbSchema.
       */
      public java.lang.String getPkDbSchema() {
        java.lang.Object ref = pkDbSchema_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          pkDbSchema_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       **
       * The Schema name where the parent table is.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string pk_db_schema = 2;</code>
       * @return The bytes for pkDbSchema.
       */
      public com.google.protobuf.ByteString
          getPkDbSchemaBytes() {
        java.lang.Object ref = pkDbSchema_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          pkDbSchema_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       **
       * The Schema name where the parent table is.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string pk_db_schema = 2;</code>
       * @param value The pkDbSchema to set.
       * @return This builder for chaining.
       */
      public Builder setPkDbSchema(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        pkDbSchema_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       **
       * The Schema name where the parent table is.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string pk_db_schema = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearPkDbSchema() {
        pkDbSchema_ = getDefaultInstance().getPkDbSchema();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       **
       * The Schema name where the parent table is.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string pk_db_schema = 2;</code>
       * @param value The bytes for pkDbSchema to set.
       * @return This builder for chaining.
       */
      public Builder setPkDbSchemaBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        pkDbSchema_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object pkTable_ = "";
      /**
       * <pre>
       **
       * The parent table name. It cannot be null.
       * </pre>
       *
       * <code>string pk_table = 3;</code>
       * @return The pkTable.
       */
      public java.lang.String getPkTable() {
        java.lang.Object ref = pkTable_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          pkTable_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       **
       * The parent table name. It cannot be null.
       * </pre>
       *
       * <code>string pk_table = 3;</code>
       * @return The bytes for pkTable.
       */
      public com.google.protobuf.ByteString
          getPkTableBytes() {
        java.lang.Object ref = pkTable_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          pkTable_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       **
       * The parent table name. It cannot be null.
       * </pre>
       *
       * <code>string pk_table = 3;</code>
       * @param value The pkTable to set.
       * @return This builder for chaining.
       */
      public Builder setPkTable(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        pkTable_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       **
       * The parent table name. It cannot be null.
       * </pre>
       *
       * <code>string pk_table = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearPkTable() {
        pkTable_ = getDefaultInstance().getPkTable();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       **
       * The parent table name. It cannot be null.
       * </pre>
       *
       * <code>string pk_table = 3;</code>
       * @param value The bytes for pkTable to set.
       * @return This builder for chaining.
       */
      public Builder setPkTableBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        pkTable_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object fkCatalog_ = "";
      /**
       * <pre>
       **
       * The catalog name where the foreign table is.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string fk_catalog = 4;</code>
       * @return Whether the fkCatalog field is set.
       */
      public boolean hasFkCatalog() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       **
       * The catalog name where the foreign table is.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string fk_catalog = 4;</code>
       * @return The fkCatalog.
       */
      public java.lang.String getFkCatalog() {
        java.lang.Object ref = fkCatalog_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          fkCatalog_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       **
       * The catalog name where the foreign table is.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string fk_catalog = 4;</code>
       * @return The bytes for fkCatalog.
       */
      public com.google.protobuf.ByteString
          getFkCatalogBytes() {
        java.lang.Object ref = fkCatalog_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fkCatalog_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       **
       * The catalog name where the foreign table is.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string fk_catalog = 4;</code>
       * @param value The fkCatalog to set.
       * @return This builder for chaining.
       */
      public Builder setFkCatalog(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fkCatalog_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       **
       * The catalog name where the foreign table is.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string fk_catalog = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearFkCatalog() {
        fkCatalog_ = getDefaultInstance().getFkCatalog();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       **
       * The catalog name where the foreign table is.
       * An empty string retrieves those without a catalog.
       * If omitted the catalog name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string fk_catalog = 4;</code>
       * @param value The bytes for fkCatalog to set.
       * @return This builder for chaining.
       */
      public Builder setFkCatalogBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        fkCatalog_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object fkDbSchema_ = "";
      /**
       * <pre>
       **
       * The schema name where the foreign table is.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string fk_db_schema = 5;</code>
       * @return Whether the fkDbSchema field is set.
       */
      public boolean hasFkDbSchema() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       **
       * The schema name where the foreign table is.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string fk_db_schema = 5;</code>
       * @return The fkDbSchema.
       */
      public java.lang.String getFkDbSchema() {
        java.lang.Object ref = fkDbSchema_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          fkDbSchema_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       **
       * The schema name where the foreign table is.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string fk_db_schema = 5;</code>
       * @return The bytes for fkDbSchema.
       */
      public com.google.protobuf.ByteString
          getFkDbSchemaBytes() {
        java.lang.Object ref = fkDbSchema_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fkDbSchema_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       **
       * The schema name where the foreign table is.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string fk_db_schema = 5;</code>
       * @param value The fkDbSchema to set.
       * @return This builder for chaining.
       */
      public Builder setFkDbSchema(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fkDbSchema_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       **
       * The schema name where the foreign table is.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string fk_db_schema = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearFkDbSchema() {
        fkDbSchema_ = getDefaultInstance().getFkDbSchema();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       **
       * The schema name where the foreign table is.
       * An empty string retrieves those without a schema.
       * If omitted the schema name should not be used to narrow the search.
       * </pre>
       *
       * <code>optional string fk_db_schema = 5;</code>
       * @param value The bytes for fkDbSchema to set.
       * @return This builder for chaining.
       */
      public Builder setFkDbSchemaBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        fkDbSchema_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.lang.Object fkTable_ = "";
      /**
       * <pre>
       **
       * The foreign table name. It cannot be null.
       * </pre>
       *
       * <code>string fk_table = 6;</code>
       * @return The fkTable.
       */
      public java.lang.String getFkTable() {
        java.lang.Object ref = fkTable_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          fkTable_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       **
       * The foreign table name. It cannot be null.
       * </pre>
       *
       * <code>string fk_table = 6;</code>
       * @return The bytes for fkTable.
       */
      public com.google.protobuf.ByteString
          getFkTableBytes() {
        java.lang.Object ref = fkTable_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fkTable_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       **
       * The foreign table name. It cannot be null.
       * </pre>
       *
       * <code>string fk_table = 6;</code>
       * @param value The fkTable to set.
       * @return This builder for chaining.
       */
      public Builder setFkTable(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fkTable_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       **
       * The foreign table name. It cannot be null.
       * </pre>
       *
       * <code>string fk_table = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearFkTable() {
        fkTable_ = getDefaultInstance().getFkTable();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       **
       * The foreign table name. It cannot be null.
       * </pre>
       *
       * <code>string fk_table = 6;</code>
       * @param value The bytes for fkTable to set.
       * @return This builder for chaining.
       */
      public Builder setFkTableBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        fkTable_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.CommandGetCrossReference)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.CommandGetCrossReference)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CommandGetCrossReference>
        PARSER = new com.google.protobuf.AbstractParser<CommandGetCrossReference>() {
      @java.lang.Override
      public CommandGetCrossReference parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CommandGetCrossReference> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CommandGetCrossReference> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.CommandGetCrossReference getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ActionCreatePreparedStatementRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.ActionCreatePreparedStatementRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The valid SQL string to create a prepared statement for.
     * </pre>
     *
     * <code>string query = 1;</code>
     * @return The query.
     */
    java.lang.String getQuery();
    /**
     * <pre>
     * The valid SQL string to create a prepared statement for.
     * </pre>
     *
     * <code>string query = 1;</code>
     * @return The bytes for query.
     */
    com.google.protobuf.ByteString
        getQueryBytes();

    /**
     * <pre>
     * Create/execute the prepared statement as part of this transaction (if
     * unset, executions of the prepared statement will be auto-committed).
     * </pre>
     *
     * <code>optional bytes transaction_id = 2;</code>
     * @return Whether the transactionId field is set.
     */
    boolean hasTransactionId();
    /**
     * <pre>
     * Create/execute the prepared statement as part of this transaction (if
     * unset, executions of the prepared statement will be auto-committed).
     * </pre>
     *
     * <code>optional bytes transaction_id = 2;</code>
     * @return The transactionId.
     */
    com.google.protobuf.ByteString getTransactionId();
  }
  /**
   * <pre>
   *
   * Request message for the "CreatePreparedStatement" action on a Flight SQL enabled backend.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.ActionCreatePreparedStatementRequest}
   */
  public static final class ActionCreatePreparedStatementRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.ActionCreatePreparedStatementRequest)
      ActionCreatePreparedStatementRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ActionCreatePreparedStatementRequest.newBuilder() to construct.
    private ActionCreatePreparedStatementRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ActionCreatePreparedStatementRequest() {
      query_ = "";
      transactionId_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ActionCreatePreparedStatementRequest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionCreatePreparedStatementRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionCreatePreparedStatementRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest.class, org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest.Builder.class);
    }

    private int bitField0_;
    public static final int QUERY_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object query_ = "";
    /**
     * <pre>
     * The valid SQL string to create a prepared statement for.
     * </pre>
     *
     * <code>string query = 1;</code>
     * @return The query.
     */
    @java.lang.Override
    public java.lang.String getQuery() {
      java.lang.Object ref = query_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        query_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The valid SQL string to create a prepared statement for.
     * </pre>
     *
     * <code>string query = 1;</code>
     * @return The bytes for query.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getQueryBytes() {
      java.lang.Object ref = query_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        query_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TRANSACTION_ID_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString transactionId_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * Create/execute the prepared statement as part of this transaction (if
     * unset, executions of the prepared statement will be auto-committed).
     * </pre>
     *
     * <code>optional bytes transaction_id = 2;</code>
     * @return Whether the transactionId field is set.
     */
    @java.lang.Override
    public boolean hasTransactionId() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Create/execute the prepared statement as part of this transaction (if
     * unset, executions of the prepared statement will be auto-committed).
     * </pre>
     *
     * <code>optional bytes transaction_id = 2;</code>
     * @return The transactionId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getTransactionId() {
      return transactionId_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(query_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, query_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeBytes(2, transactionId_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(query_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, query_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, transactionId_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest other = (org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest) obj;

      if (!getQuery()
          .equals(other.getQuery())) return false;
      if (hasTransactionId() != other.hasTransactionId()) return false;
      if (hasTransactionId()) {
        if (!getTransactionId()
            .equals(other.getTransactionId())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + QUERY_FIELD_NUMBER;
      hash = (53 * hash) + getQuery().hashCode();
      if (hasTransactionId()) {
        hash = (37 * hash) + TRANSACTION_ID_FIELD_NUMBER;
        hash = (53 * hash) + getTransactionId().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Request message for the "CreatePreparedStatement" action on a Flight SQL enabled backend.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.ActionCreatePreparedStatementRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.ActionCreatePreparedStatementRequest)
        org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionCreatePreparedStatementRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionCreatePreparedStatementRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest.class, org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        query_ = "";
        transactionId_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionCreatePreparedStatementRequest_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest build() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest result = new org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.query_ = query_;
        }
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.transactionId_ = transactionId_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest.getDefaultInstance()) return this;
        if (!other.getQuery().isEmpty()) {
          query_ = other.query_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasTransactionId()) {
          setTransactionId(other.getTransactionId());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                query_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                transactionId_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object query_ = "";
      /**
       * <pre>
       * The valid SQL string to create a prepared statement for.
       * </pre>
       *
       * <code>string query = 1;</code>
       * @return The query.
       */
      public java.lang.String getQuery() {
        java.lang.Object ref = query_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          query_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The valid SQL string to create a prepared statement for.
       * </pre>
       *
       * <code>string query = 1;</code>
       * @return The bytes for query.
       */
      public com.google.protobuf.ByteString
          getQueryBytes() {
        java.lang.Object ref = query_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          query_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The valid SQL string to create a prepared statement for.
       * </pre>
       *
       * <code>string query = 1;</code>
       * @param value The query to set.
       * @return This builder for chaining.
       */
      public Builder setQuery(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        query_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The valid SQL string to create a prepared statement for.
       * </pre>
       *
       * <code>string query = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearQuery() {
        query_ = getDefaultInstance().getQuery();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The valid SQL string to create a prepared statement for.
       * </pre>
       *
       * <code>string query = 1;</code>
       * @param value The bytes for query to set.
       * @return This builder for chaining.
       */
      public Builder setQueryBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        query_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString transactionId_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * Create/execute the prepared statement as part of this transaction (if
       * unset, executions of the prepared statement will be auto-committed).
       * </pre>
       *
       * <code>optional bytes transaction_id = 2;</code>
       * @return Whether the transactionId field is set.
       */
      @java.lang.Override
      public boolean hasTransactionId() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Create/execute the prepared statement as part of this transaction (if
       * unset, executions of the prepared statement will be auto-committed).
       * </pre>
       *
       * <code>optional bytes transaction_id = 2;</code>
       * @return The transactionId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getTransactionId() {
        return transactionId_;
      }
      /**
       * <pre>
       * Create/execute the prepared statement as part of this transaction (if
       * unset, executions of the prepared statement will be auto-committed).
       * </pre>
       *
       * <code>optional bytes transaction_id = 2;</code>
       * @param value The transactionId to set.
       * @return This builder for chaining.
       */
      public Builder setTransactionId(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        transactionId_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Create/execute the prepared statement as part of this transaction (if
       * unset, executions of the prepared statement will be auto-committed).
       * </pre>
       *
       * <code>optional bytes transaction_id = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTransactionId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        transactionId_ = getDefaultInstance().getTransactionId();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.ActionCreatePreparedStatementRequest)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.ActionCreatePreparedStatementRequest)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ActionCreatePreparedStatementRequest>
        PARSER = new com.google.protobuf.AbstractParser<ActionCreatePreparedStatementRequest>() {
      @java.lang.Override
      public ActionCreatePreparedStatementRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ActionCreatePreparedStatementRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ActionCreatePreparedStatementRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SubstraitPlanOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.SubstraitPlan)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The serialized substrait.Plan to create a prepared statement for.
     * XXX(ARROW-16902): this is bytes instead of an embedded message
     * because Protobuf does not really support one DLL using Protobuf
     * definitions from another DLL.
     * </pre>
     *
     * <code>bytes plan = 1;</code>
     * @return The plan.
     */
    com.google.protobuf.ByteString getPlan();

    /**
     * <pre>
     * The Substrait release, e.g. "0.12.0". This information is not
     * tracked in the plan itself, so this is the only way for consumers
     * to potentially know if they can handle the plan.
     * </pre>
     *
     * <code>string version = 2;</code>
     * @return The version.
     */
    java.lang.String getVersion();
    /**
     * <pre>
     * The Substrait release, e.g. "0.12.0". This information is not
     * tracked in the plan itself, so this is the only way for consumers
     * to potentially know if they can handle the plan.
     * </pre>
     *
     * <code>string version = 2;</code>
     * @return The bytes for version.
     */
    com.google.protobuf.ByteString
        getVersionBytes();
  }
  /**
   * <pre>
   *
   * An embedded message describing a Substrait plan to execute.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.SubstraitPlan}
   */
  public static final class SubstraitPlan extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.SubstraitPlan)
      SubstraitPlanOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SubstraitPlan.newBuilder() to construct.
    private SubstraitPlan(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SubstraitPlan() {
      plan_ = com.google.protobuf.ByteString.EMPTY;
      version_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SubstraitPlan();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_SubstraitPlan_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_SubstraitPlan_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.class, org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.Builder.class);
    }

    public static final int PLAN_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString plan_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * The serialized substrait.Plan to create a prepared statement for.
     * XXX(ARROW-16902): this is bytes instead of an embedded message
     * because Protobuf does not really support one DLL using Protobuf
     * definitions from another DLL.
     * </pre>
     *
     * <code>bytes plan = 1;</code>
     * @return The plan.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getPlan() {
      return plan_;
    }

    public static final int VERSION_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object version_ = "";
    /**
     * <pre>
     * The Substrait release, e.g. "0.12.0". This information is not
     * tracked in the plan itself, so this is the only way for consumers
     * to potentially know if they can handle the plan.
     * </pre>
     *
     * <code>string version = 2;</code>
     * @return The version.
     */
    @java.lang.Override
    public java.lang.String getVersion() {
      java.lang.Object ref = version_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        version_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The Substrait release, e.g. "0.12.0". This information is not
     * tracked in the plan itself, so this is the only way for consumers
     * to potentially know if they can handle the plan.
     * </pre>
     *
     * <code>string version = 2;</code>
     * @return The bytes for version.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVersionBytes() {
      java.lang.Object ref = version_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        version_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!plan_.isEmpty()) {
        output.writeBytes(1, plan_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(version_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, version_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!plan_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, plan_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(version_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, version_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan other = (org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan) obj;

      if (!getPlan()
          .equals(other.getPlan())) return false;
      if (!getVersion()
          .equals(other.getVersion())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + PLAN_FIELD_NUMBER;
      hash = (53 * hash) + getPlan().hashCode();
      hash = (37 * hash) + VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getVersion().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * An embedded message describing a Substrait plan to execute.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.SubstraitPlan}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.SubstraitPlan)
        org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlanOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_SubstraitPlan_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_SubstraitPlan_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.class, org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        plan_ = com.google.protobuf.ByteString.EMPTY;
        version_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_SubstraitPlan_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan build() {
        org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan result = new org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.plan_ = plan_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.version_ = version_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.getDefaultInstance()) return this;
        if (other.getPlan() != com.google.protobuf.ByteString.EMPTY) {
          setPlan(other.getPlan());
        }
        if (!other.getVersion().isEmpty()) {
          version_ = other.version_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                plan_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                version_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.ByteString plan_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * The serialized substrait.Plan to create a prepared statement for.
       * XXX(ARROW-16902): this is bytes instead of an embedded message
       * because Protobuf does not really support one DLL using Protobuf
       * definitions from another DLL.
       * </pre>
       *
       * <code>bytes plan = 1;</code>
       * @return The plan.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getPlan() {
        return plan_;
      }
      /**
       * <pre>
       * The serialized substrait.Plan to create a prepared statement for.
       * XXX(ARROW-16902): this is bytes instead of an embedded message
       * because Protobuf does not really support one DLL using Protobuf
       * definitions from another DLL.
       * </pre>
       *
       * <code>bytes plan = 1;</code>
       * @param value The plan to set.
       * @return This builder for chaining.
       */
      public Builder setPlan(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        plan_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The serialized substrait.Plan to create a prepared statement for.
       * XXX(ARROW-16902): this is bytes instead of an embedded message
       * because Protobuf does not really support one DLL using Protobuf
       * definitions from another DLL.
       * </pre>
       *
       * <code>bytes plan = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPlan() {
        bitField0_ = (bitField0_ & ~0x00000001);
        plan_ = getDefaultInstance().getPlan();
        onChanged();
        return this;
      }

      private java.lang.Object version_ = "";
      /**
       * <pre>
       * The Substrait release, e.g. "0.12.0". This information is not
       * tracked in the plan itself, so this is the only way for consumers
       * to potentially know if they can handle the plan.
       * </pre>
       *
       * <code>string version = 2;</code>
       * @return The version.
       */
      public java.lang.String getVersion() {
        java.lang.Object ref = version_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          version_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The Substrait release, e.g. "0.12.0". This information is not
       * tracked in the plan itself, so this is the only way for consumers
       * to potentially know if they can handle the plan.
       * </pre>
       *
       * <code>string version = 2;</code>
       * @return The bytes for version.
       */
      public com.google.protobuf.ByteString
          getVersionBytes() {
        java.lang.Object ref = version_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          version_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The Substrait release, e.g. "0.12.0". This information is not
       * tracked in the plan itself, so this is the only way for consumers
       * to potentially know if they can handle the plan.
       * </pre>
       *
       * <code>string version = 2;</code>
       * @param value The version to set.
       * @return This builder for chaining.
       */
      public Builder setVersion(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        version_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Substrait release, e.g. "0.12.0". This information is not
       * tracked in the plan itself, so this is the only way for consumers
       * to potentially know if they can handle the plan.
       * </pre>
       *
       * <code>string version = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearVersion() {
        version_ = getDefaultInstance().getVersion();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Substrait release, e.g. "0.12.0". This information is not
       * tracked in the plan itself, so this is the only way for consumers
       * to potentially know if they can handle the plan.
       * </pre>
       *
       * <code>string version = 2;</code>
       * @param value The bytes for version to set.
       * @return This builder for chaining.
       */
      public Builder setVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        version_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.SubstraitPlan)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.SubstraitPlan)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SubstraitPlan>
        PARSER = new com.google.protobuf.AbstractParser<SubstraitPlan>() {
      @java.lang.Override
      public SubstraitPlan parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<SubstraitPlan> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SubstraitPlan> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ActionCreatePreparedSubstraitPlanRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.ActionCreatePreparedSubstraitPlanRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The serialized substrait.Plan to create a prepared statement for.
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
     * @return Whether the plan field is set.
     */
    boolean hasPlan();
    /**
     * <pre>
     * The serialized substrait.Plan to create a prepared statement for.
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
     * @return The plan.
     */
    org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan getPlan();
    /**
     * <pre>
     * The serialized substrait.Plan to create a prepared statement for.
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
     */
    org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlanOrBuilder getPlanOrBuilder();

    /**
     * <pre>
     * Create/execute the prepared statement as part of this transaction (if
     * unset, executions of the prepared statement will be auto-committed).
     * </pre>
     *
     * <code>optional bytes transaction_id = 2;</code>
     * @return Whether the transactionId field is set.
     */
    boolean hasTransactionId();
    /**
     * <pre>
     * Create/execute the prepared statement as part of this transaction (if
     * unset, executions of the prepared statement will be auto-committed).
     * </pre>
     *
     * <code>optional bytes transaction_id = 2;</code>
     * @return The transactionId.
     */
    com.google.protobuf.ByteString getTransactionId();
  }
  /**
   * <pre>
   *
   * Request message for the "CreatePreparedSubstraitPlan" action on a Flight SQL enabled backend.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.ActionCreatePreparedSubstraitPlanRequest}
   */
  public static final class ActionCreatePreparedSubstraitPlanRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.ActionCreatePreparedSubstraitPlanRequest)
      ActionCreatePreparedSubstraitPlanRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ActionCreatePreparedSubstraitPlanRequest.newBuilder() to construct.
    private ActionCreatePreparedSubstraitPlanRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ActionCreatePreparedSubstraitPlanRequest() {
      transactionId_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ActionCreatePreparedSubstraitPlanRequest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionCreatePreparedSubstraitPlanRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionCreatePreparedSubstraitPlanRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest.class, org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest.Builder.class);
    }

    private int bitField0_;
    public static final int PLAN_FIELD_NUMBER = 1;
    private org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan plan_;
    /**
     * <pre>
     * The serialized substrait.Plan to create a prepared statement for.
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
     * @return Whether the plan field is set.
     */
    @java.lang.Override
    public boolean hasPlan() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * The serialized substrait.Plan to create a prepared statement for.
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
     * @return The plan.
     */
    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan getPlan() {
      return plan_ == null ? org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.getDefaultInstance() : plan_;
    }
    /**
     * <pre>
     * The serialized substrait.Plan to create a prepared statement for.
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
     */
    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlanOrBuilder getPlanOrBuilder() {
      return plan_ == null ? org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.getDefaultInstance() : plan_;
    }

    public static final int TRANSACTION_ID_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString transactionId_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * Create/execute the prepared statement as part of this transaction (if
     * unset, executions of the prepared statement will be auto-committed).
     * </pre>
     *
     * <code>optional bytes transaction_id = 2;</code>
     * @return Whether the transactionId field is set.
     */
    @java.lang.Override
    public boolean hasTransactionId() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Create/execute the prepared statement as part of this transaction (if
     * unset, executions of the prepared statement will be auto-committed).
     * </pre>
     *
     * <code>optional bytes transaction_id = 2;</code>
     * @return The transactionId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getTransactionId() {
      return transactionId_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getPlan());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBytes(2, transactionId_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getPlan());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, transactionId_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest other = (org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest) obj;

      if (hasPlan() != other.hasPlan()) return false;
      if (hasPlan()) {
        if (!getPlan()
            .equals(other.getPlan())) return false;
      }
      if (hasTransactionId() != other.hasTransactionId()) return false;
      if (hasTransactionId()) {
        if (!getTransactionId()
            .equals(other.getTransactionId())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasPlan()) {
        hash = (37 * hash) + PLAN_FIELD_NUMBER;
        hash = (53 * hash) + getPlan().hashCode();
      }
      if (hasTransactionId()) {
        hash = (37 * hash) + TRANSACTION_ID_FIELD_NUMBER;
        hash = (53 * hash) + getTransactionId().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Request message for the "CreatePreparedSubstraitPlan" action on a Flight SQL enabled backend.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.ActionCreatePreparedSubstraitPlanRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.ActionCreatePreparedSubstraitPlanRequest)
        org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionCreatePreparedSubstraitPlanRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionCreatePreparedSubstraitPlanRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest.class, org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getPlanFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        plan_ = null;
        if (planBuilder_ != null) {
          planBuilder_.dispose();
          planBuilder_ = null;
        }
        transactionId_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionCreatePreparedSubstraitPlanRequest_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest build() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest result = new org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.plan_ = planBuilder_ == null
              ? plan_
              : planBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.transactionId_ = transactionId_;
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest.getDefaultInstance()) return this;
        if (other.hasPlan()) {
          mergePlan(other.getPlan());
        }
        if (other.hasTransactionId()) {
          setTransactionId(other.getTransactionId());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getPlanFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                transactionId_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan plan_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan, org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.Builder, org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlanOrBuilder> planBuilder_;
      /**
       * <pre>
       * The serialized substrait.Plan to create a prepared statement for.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
       * @return Whether the plan field is set.
       */
      public boolean hasPlan() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The serialized substrait.Plan to create a prepared statement for.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
       * @return The plan.
       */
      public org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan getPlan() {
        if (planBuilder_ == null) {
          return plan_ == null ? org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.getDefaultInstance() : plan_;
        } else {
          return planBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The serialized substrait.Plan to create a prepared statement for.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
       */
      public Builder setPlan(org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan value) {
        if (planBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          plan_ = value;
        } else {
          planBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The serialized substrait.Plan to create a prepared statement for.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
       */
      public Builder setPlan(
          org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.Builder builderForValue) {
        if (planBuilder_ == null) {
          plan_ = builderForValue.build();
        } else {
          planBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The serialized substrait.Plan to create a prepared statement for.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
       */
      public Builder mergePlan(org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan value) {
        if (planBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            plan_ != null &&
            plan_ != org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.getDefaultInstance()) {
            getPlanBuilder().mergeFrom(value);
          } else {
            plan_ = value;
          }
        } else {
          planBuilder_.mergeFrom(value);
        }
        if (plan_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The serialized substrait.Plan to create a prepared statement for.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
       */
      public Builder clearPlan() {
        bitField0_ = (bitField0_ & ~0x00000001);
        plan_ = null;
        if (planBuilder_ != null) {
          planBuilder_.dispose();
          planBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The serialized substrait.Plan to create a prepared statement for.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
       */
      public org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.Builder getPlanBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getPlanFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The serialized substrait.Plan to create a prepared statement for.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
       */
      public org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlanOrBuilder getPlanOrBuilder() {
        if (planBuilder_ != null) {
          return planBuilder_.getMessageOrBuilder();
        } else {
          return plan_ == null ?
              org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.getDefaultInstance() : plan_;
        }
      }
      /**
       * <pre>
       * The serialized substrait.Plan to create a prepared statement for.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan, org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.Builder, org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlanOrBuilder> 
          getPlanFieldBuilder() {
        if (planBuilder_ == null) {
          planBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan, org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.Builder, org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlanOrBuilder>(
                  getPlan(),
                  getParentForChildren(),
                  isClean());
          plan_ = null;
        }
        return planBuilder_;
      }

      private com.google.protobuf.ByteString transactionId_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * Create/execute the prepared statement as part of this transaction (if
       * unset, executions of the prepared statement will be auto-committed).
       * </pre>
       *
       * <code>optional bytes transaction_id = 2;</code>
       * @return Whether the transactionId field is set.
       */
      @java.lang.Override
      public boolean hasTransactionId() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Create/execute the prepared statement as part of this transaction (if
       * unset, executions of the prepared statement will be auto-committed).
       * </pre>
       *
       * <code>optional bytes transaction_id = 2;</code>
       * @return The transactionId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getTransactionId() {
        return transactionId_;
      }
      /**
       * <pre>
       * Create/execute the prepared statement as part of this transaction (if
       * unset, executions of the prepared statement will be auto-committed).
       * </pre>
       *
       * <code>optional bytes transaction_id = 2;</code>
       * @param value The transactionId to set.
       * @return This builder for chaining.
       */
      public Builder setTransactionId(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        transactionId_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Create/execute the prepared statement as part of this transaction (if
       * unset, executions of the prepared statement will be auto-committed).
       * </pre>
       *
       * <code>optional bytes transaction_id = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTransactionId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        transactionId_ = getDefaultInstance().getTransactionId();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.ActionCreatePreparedSubstraitPlanRequest)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.ActionCreatePreparedSubstraitPlanRequest)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ActionCreatePreparedSubstraitPlanRequest>
        PARSER = new com.google.protobuf.AbstractParser<ActionCreatePreparedSubstraitPlanRequest>() {
      @java.lang.Override
      public ActionCreatePreparedSubstraitPlanRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ActionCreatePreparedSubstraitPlanRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ActionCreatePreparedSubstraitPlanRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedSubstraitPlanRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ActionCreatePreparedStatementResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.ActionCreatePreparedStatementResult)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Opaque handle for the prepared statement on the server.
     * </pre>
     *
     * <code>bytes prepared_statement_handle = 1;</code>
     * @return The preparedStatementHandle.
     */
    com.google.protobuf.ByteString getPreparedStatementHandle();

    /**
     * <pre>
     * If a result set generating query was provided, dataset_schema contains the
     * schema of the result set.  It should be an IPC-encapsulated Schema, as described in Schema.fbs.
     * For some queries, the schema of the results may depend on the schema of the parameters.  The server
     * should provide its best guess as to the schema at this point.  Clients must not assume that this
     * schema, if provided, will be accurate.
     * </pre>
     *
     * <code>bytes dataset_schema = 2;</code>
     * @return The datasetSchema.
     */
    com.google.protobuf.ByteString getDatasetSchema();

    /**
     * <pre>
     * If the query provided contained parameters, parameter_schema contains the
     * schema of the expected parameters.  It should be an IPC-encapsulated Schema, as described in Schema.fbs.
     * </pre>
     *
     * <code>bytes parameter_schema = 3;</code>
     * @return The parameterSchema.
     */
    com.google.protobuf.ByteString getParameterSchema();
  }
  /**
   * <pre>
   *
   * Wrap the result of a "CreatePreparedStatement" or "CreatePreparedSubstraitPlan" action.
   *
   * The resultant PreparedStatement can be closed either:
   * - Manually, through the "ClosePreparedStatement" action;
   * - Automatically, by a server timeout.
   *
   * The result should be wrapped in a google.protobuf.Any message.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.ActionCreatePreparedStatementResult}
   */
  public static final class ActionCreatePreparedStatementResult extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.ActionCreatePreparedStatementResult)
      ActionCreatePreparedStatementResultOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ActionCreatePreparedStatementResult.newBuilder() to construct.
    private ActionCreatePreparedStatementResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ActionCreatePreparedStatementResult() {
      preparedStatementHandle_ = com.google.protobuf.ByteString.EMPTY;
      datasetSchema_ = com.google.protobuf.ByteString.EMPTY;
      parameterSchema_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ActionCreatePreparedStatementResult();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionCreatePreparedStatementResult_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionCreatePreparedStatementResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult.class, org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult.Builder.class);
    }

    public static final int PREPARED_STATEMENT_HANDLE_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString preparedStatementHandle_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * Opaque handle for the prepared statement on the server.
     * </pre>
     *
     * <code>bytes prepared_statement_handle = 1;</code>
     * @return The preparedStatementHandle.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getPreparedStatementHandle() {
      return preparedStatementHandle_;
    }

    public static final int DATASET_SCHEMA_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString datasetSchema_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * If a result set generating query was provided, dataset_schema contains the
     * schema of the result set.  It should be an IPC-encapsulated Schema, as described in Schema.fbs.
     * For some queries, the schema of the results may depend on the schema of the parameters.  The server
     * should provide its best guess as to the schema at this point.  Clients must not assume that this
     * schema, if provided, will be accurate.
     * </pre>
     *
     * <code>bytes dataset_schema = 2;</code>
     * @return The datasetSchema.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getDatasetSchema() {
      return datasetSchema_;
    }

    public static final int PARAMETER_SCHEMA_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString parameterSchema_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * If the query provided contained parameters, parameter_schema contains the
     * schema of the expected parameters.  It should be an IPC-encapsulated Schema, as described in Schema.fbs.
     * </pre>
     *
     * <code>bytes parameter_schema = 3;</code>
     * @return The parameterSchema.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getParameterSchema() {
      return parameterSchema_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!preparedStatementHandle_.isEmpty()) {
        output.writeBytes(1, preparedStatementHandle_);
      }
      if (!datasetSchema_.isEmpty()) {
        output.writeBytes(2, datasetSchema_);
      }
      if (!parameterSchema_.isEmpty()) {
        output.writeBytes(3, parameterSchema_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!preparedStatementHandle_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, preparedStatementHandle_);
      }
      if (!datasetSchema_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, datasetSchema_);
      }
      if (!parameterSchema_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, parameterSchema_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult other = (org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult) obj;

      if (!getPreparedStatementHandle()
          .equals(other.getPreparedStatementHandle())) return false;
      if (!getDatasetSchema()
          .equals(other.getDatasetSchema())) return false;
      if (!getParameterSchema()
          .equals(other.getParameterSchema())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + PREPARED_STATEMENT_HANDLE_FIELD_NUMBER;
      hash = (53 * hash) + getPreparedStatementHandle().hashCode();
      hash = (37 * hash) + DATASET_SCHEMA_FIELD_NUMBER;
      hash = (53 * hash) + getDatasetSchema().hashCode();
      hash = (37 * hash) + PARAMETER_SCHEMA_FIELD_NUMBER;
      hash = (53 * hash) + getParameterSchema().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Wrap the result of a "CreatePreparedStatement" or "CreatePreparedSubstraitPlan" action.
     *
     * The resultant PreparedStatement can be closed either:
     * - Manually, through the "ClosePreparedStatement" action;
     * - Automatically, by a server timeout.
     *
     * The result should be wrapped in a google.protobuf.Any message.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.ActionCreatePreparedStatementResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.ActionCreatePreparedStatementResult)
        org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionCreatePreparedStatementResult_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionCreatePreparedStatementResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult.class, org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        preparedStatementHandle_ = com.google.protobuf.ByteString.EMPTY;
        datasetSchema_ = com.google.protobuf.ByteString.EMPTY;
        parameterSchema_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionCreatePreparedStatementResult_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult build() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult result = new org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.preparedStatementHandle_ = preparedStatementHandle_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.datasetSchema_ = datasetSchema_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.parameterSchema_ = parameterSchema_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult.getDefaultInstance()) return this;
        if (other.getPreparedStatementHandle() != com.google.protobuf.ByteString.EMPTY) {
          setPreparedStatementHandle(other.getPreparedStatementHandle());
        }
        if (other.getDatasetSchema() != com.google.protobuf.ByteString.EMPTY) {
          setDatasetSchema(other.getDatasetSchema());
        }
        if (other.getParameterSchema() != com.google.protobuf.ByteString.EMPTY) {
          setParameterSchema(other.getParameterSchema());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                preparedStatementHandle_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                datasetSchema_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                parameterSchema_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.ByteString preparedStatementHandle_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * Opaque handle for the prepared statement on the server.
       * </pre>
       *
       * <code>bytes prepared_statement_handle = 1;</code>
       * @return The preparedStatementHandle.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getPreparedStatementHandle() {
        return preparedStatementHandle_;
      }
      /**
       * <pre>
       * Opaque handle for the prepared statement on the server.
       * </pre>
       *
       * <code>bytes prepared_statement_handle = 1;</code>
       * @param value The preparedStatementHandle to set.
       * @return This builder for chaining.
       */
      public Builder setPreparedStatementHandle(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        preparedStatementHandle_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Opaque handle for the prepared statement on the server.
       * </pre>
       *
       * <code>bytes prepared_statement_handle = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPreparedStatementHandle() {
        bitField0_ = (bitField0_ & ~0x00000001);
        preparedStatementHandle_ = getDefaultInstance().getPreparedStatementHandle();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString datasetSchema_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * If a result set generating query was provided, dataset_schema contains the
       * schema of the result set.  It should be an IPC-encapsulated Schema, as described in Schema.fbs.
       * For some queries, the schema of the results may depend on the schema of the parameters.  The server
       * should provide its best guess as to the schema at this point.  Clients must not assume that this
       * schema, if provided, will be accurate.
       * </pre>
       *
       * <code>bytes dataset_schema = 2;</code>
       * @return The datasetSchema.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getDatasetSchema() {
        return datasetSchema_;
      }
      /**
       * <pre>
       * If a result set generating query was provided, dataset_schema contains the
       * schema of the result set.  It should be an IPC-encapsulated Schema, as described in Schema.fbs.
       * For some queries, the schema of the results may depend on the schema of the parameters.  The server
       * should provide its best guess as to the schema at this point.  Clients must not assume that this
       * schema, if provided, will be accurate.
       * </pre>
       *
       * <code>bytes dataset_schema = 2;</code>
       * @param value The datasetSchema to set.
       * @return This builder for chaining.
       */
      public Builder setDatasetSchema(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        datasetSchema_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If a result set generating query was provided, dataset_schema contains the
       * schema of the result set.  It should be an IPC-encapsulated Schema, as described in Schema.fbs.
       * For some queries, the schema of the results may depend on the schema of the parameters.  The server
       * should provide its best guess as to the schema at this point.  Clients must not assume that this
       * schema, if provided, will be accurate.
       * </pre>
       *
       * <code>bytes dataset_schema = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDatasetSchema() {
        bitField0_ = (bitField0_ & ~0x00000002);
        datasetSchema_ = getDefaultInstance().getDatasetSchema();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString parameterSchema_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * If the query provided contained parameters, parameter_schema contains the
       * schema of the expected parameters.  It should be an IPC-encapsulated Schema, as described in Schema.fbs.
       * </pre>
       *
       * <code>bytes parameter_schema = 3;</code>
       * @return The parameterSchema.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getParameterSchema() {
        return parameterSchema_;
      }
      /**
       * <pre>
       * If the query provided contained parameters, parameter_schema contains the
       * schema of the expected parameters.  It should be an IPC-encapsulated Schema, as described in Schema.fbs.
       * </pre>
       *
       * <code>bytes parameter_schema = 3;</code>
       * @param value The parameterSchema to set.
       * @return This builder for chaining.
       */
      public Builder setParameterSchema(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        parameterSchema_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If the query provided contained parameters, parameter_schema contains the
       * schema of the expected parameters.  It should be an IPC-encapsulated Schema, as described in Schema.fbs.
       * </pre>
       *
       * <code>bytes parameter_schema = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearParameterSchema() {
        bitField0_ = (bitField0_ & ~0x00000004);
        parameterSchema_ = getDefaultInstance().getParameterSchema();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.ActionCreatePreparedStatementResult)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.ActionCreatePreparedStatementResult)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ActionCreatePreparedStatementResult>
        PARSER = new com.google.protobuf.AbstractParser<ActionCreatePreparedStatementResult>() {
      @java.lang.Override
      public ActionCreatePreparedStatementResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ActionCreatePreparedStatementResult> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ActionCreatePreparedStatementResult> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.ActionCreatePreparedStatementResult getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ActionClosePreparedStatementRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.ActionClosePreparedStatementRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Opaque handle for the prepared statement on the server.
     * </pre>
     *
     * <code>bytes prepared_statement_handle = 1;</code>
     * @return The preparedStatementHandle.
     */
    com.google.protobuf.ByteString getPreparedStatementHandle();
  }
  /**
   * <pre>
   *
   * Request message for the "ClosePreparedStatement" action on a Flight SQL enabled backend.
   * Closes server resources associated with the prepared statement handle.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.ActionClosePreparedStatementRequest}
   */
  public static final class ActionClosePreparedStatementRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.ActionClosePreparedStatementRequest)
      ActionClosePreparedStatementRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ActionClosePreparedStatementRequest.newBuilder() to construct.
    private ActionClosePreparedStatementRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ActionClosePreparedStatementRequest() {
      preparedStatementHandle_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ActionClosePreparedStatementRequest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionClosePreparedStatementRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionClosePreparedStatementRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest.class, org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest.Builder.class);
    }

    public static final int PREPARED_STATEMENT_HANDLE_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString preparedStatementHandle_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * Opaque handle for the prepared statement on the server.
     * </pre>
     *
     * <code>bytes prepared_statement_handle = 1;</code>
     * @return The preparedStatementHandle.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getPreparedStatementHandle() {
      return preparedStatementHandle_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!preparedStatementHandle_.isEmpty()) {
        output.writeBytes(1, preparedStatementHandle_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!preparedStatementHandle_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, preparedStatementHandle_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest other = (org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest) obj;

      if (!getPreparedStatementHandle()
          .equals(other.getPreparedStatementHandle())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + PREPARED_STATEMENT_HANDLE_FIELD_NUMBER;
      hash = (53 * hash) + getPreparedStatementHandle().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Request message for the "ClosePreparedStatement" action on a Flight SQL enabled backend.
     * Closes server resources associated with the prepared statement handle.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.ActionClosePreparedStatementRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.ActionClosePreparedStatementRequest)
        org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionClosePreparedStatementRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionClosePreparedStatementRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest.class, org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        preparedStatementHandle_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionClosePreparedStatementRequest_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest build() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest result = new org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.preparedStatementHandle_ = preparedStatementHandle_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest.getDefaultInstance()) return this;
        if (other.getPreparedStatementHandle() != com.google.protobuf.ByteString.EMPTY) {
          setPreparedStatementHandle(other.getPreparedStatementHandle());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                preparedStatementHandle_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.ByteString preparedStatementHandle_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * Opaque handle for the prepared statement on the server.
       * </pre>
       *
       * <code>bytes prepared_statement_handle = 1;</code>
       * @return The preparedStatementHandle.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getPreparedStatementHandle() {
        return preparedStatementHandle_;
      }
      /**
       * <pre>
       * Opaque handle for the prepared statement on the server.
       * </pre>
       *
       * <code>bytes prepared_statement_handle = 1;</code>
       * @param value The preparedStatementHandle to set.
       * @return This builder for chaining.
       */
      public Builder setPreparedStatementHandle(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        preparedStatementHandle_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Opaque handle for the prepared statement on the server.
       * </pre>
       *
       * <code>bytes prepared_statement_handle = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPreparedStatementHandle() {
        bitField0_ = (bitField0_ & ~0x00000001);
        preparedStatementHandle_ = getDefaultInstance().getPreparedStatementHandle();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.ActionClosePreparedStatementRequest)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.ActionClosePreparedStatementRequest)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ActionClosePreparedStatementRequest>
        PARSER = new com.google.protobuf.AbstractParser<ActionClosePreparedStatementRequest>() {
      @java.lang.Override
      public ActionClosePreparedStatementRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ActionClosePreparedStatementRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ActionClosePreparedStatementRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.ActionClosePreparedStatementRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ActionBeginTransactionRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.ActionBeginTransactionRequest)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   *
   * Request message for the "BeginTransaction" action.
   * Begins a transaction.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.ActionBeginTransactionRequest}
   */
  public static final class ActionBeginTransactionRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.ActionBeginTransactionRequest)
      ActionBeginTransactionRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ActionBeginTransactionRequest.newBuilder() to construct.
    private ActionBeginTransactionRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ActionBeginTransactionRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ActionBeginTransactionRequest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionBeginTransactionRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionBeginTransactionRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest.class, org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest other = (org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest) obj;

      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Request message for the "BeginTransaction" action.
     * Begins a transaction.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.ActionBeginTransactionRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.ActionBeginTransactionRequest)
        org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionBeginTransactionRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionBeginTransactionRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest.class, org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionBeginTransactionRequest_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest build() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest result = new org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.ActionBeginTransactionRequest)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.ActionBeginTransactionRequest)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ActionBeginTransactionRequest>
        PARSER = new com.google.protobuf.AbstractParser<ActionBeginTransactionRequest>() {
      @java.lang.Override
      public ActionBeginTransactionRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ActionBeginTransactionRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ActionBeginTransactionRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ActionBeginSavepointRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.ActionBeginSavepointRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The transaction to which a savepoint belongs.
     * </pre>
     *
     * <code>bytes transaction_id = 1;</code>
     * @return The transactionId.
     */
    com.google.protobuf.ByteString getTransactionId();

    /**
     * <pre>
     * Name for the savepoint.
     * </pre>
     *
     * <code>string name = 2;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name for the savepoint.
     * </pre>
     *
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();
  }
  /**
   * <pre>
   *
   * Request message for the "BeginSavepoint" action.
   * Creates a savepoint within a transaction.
   *
   * Only supported if FLIGHT_SQL_TRANSACTION is
   * FLIGHT_SQL_TRANSACTION_SUPPORT_SAVEPOINT.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.ActionBeginSavepointRequest}
   */
  public static final class ActionBeginSavepointRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.ActionBeginSavepointRequest)
      ActionBeginSavepointRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ActionBeginSavepointRequest.newBuilder() to construct.
    private ActionBeginSavepointRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ActionBeginSavepointRequest() {
      transactionId_ = com.google.protobuf.ByteString.EMPTY;
      name_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ActionBeginSavepointRequest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionBeginSavepointRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionBeginSavepointRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest.class, org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest.Builder.class);
    }

    public static final int TRANSACTION_ID_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString transactionId_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * The transaction to which a savepoint belongs.
     * </pre>
     *
     * <code>bytes transaction_id = 1;</code>
     * @return The transactionId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getTransactionId() {
      return transactionId_;
    }

    public static final int NAME_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * Name for the savepoint.
     * </pre>
     *
     * <code>string name = 2;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Name for the savepoint.
     * </pre>
     *
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!transactionId_.isEmpty()) {
        output.writeBytes(1, transactionId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!transactionId_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, transactionId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest other = (org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest) obj;

      if (!getTransactionId()
          .equals(other.getTransactionId())) return false;
      if (!getName()
          .equals(other.getName())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TRANSACTION_ID_FIELD_NUMBER;
      hash = (53 * hash) + getTransactionId().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Request message for the "BeginSavepoint" action.
     * Creates a savepoint within a transaction.
     *
     * Only supported if FLIGHT_SQL_TRANSACTION is
     * FLIGHT_SQL_TRANSACTION_SUPPORT_SAVEPOINT.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.ActionBeginSavepointRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.ActionBeginSavepointRequest)
        org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionBeginSavepointRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionBeginSavepointRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest.class, org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        transactionId_ = com.google.protobuf.ByteString.EMPTY;
        name_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionBeginSavepointRequest_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest build() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest result = new org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.transactionId_ = transactionId_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.name_ = name_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest.getDefaultInstance()) return this;
        if (other.getTransactionId() != com.google.protobuf.ByteString.EMPTY) {
          setTransactionId(other.getTransactionId());
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                transactionId_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                name_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.ByteString transactionId_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * The transaction to which a savepoint belongs.
       * </pre>
       *
       * <code>bytes transaction_id = 1;</code>
       * @return The transactionId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getTransactionId() {
        return transactionId_;
      }
      /**
       * <pre>
       * The transaction to which a savepoint belongs.
       * </pre>
       *
       * <code>bytes transaction_id = 1;</code>
       * @param value The transactionId to set.
       * @return This builder for chaining.
       */
      public Builder setTransactionId(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        transactionId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The transaction to which a savepoint belongs.
       * </pre>
       *
       * <code>bytes transaction_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTransactionId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        transactionId_ = getDefaultInstance().getTransactionId();
        onChanged();
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * Name for the savepoint.
       * </pre>
       *
       * <code>string name = 2;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Name for the savepoint.
       * </pre>
       *
       * <code>string name = 2;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Name for the savepoint.
       * </pre>
       *
       * <code>string name = 2;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name for the savepoint.
       * </pre>
       *
       * <code>string name = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name for the savepoint.
       * </pre>
       *
       * <code>string name = 2;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        name_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.ActionBeginSavepointRequest)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.ActionBeginSavepointRequest)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ActionBeginSavepointRequest>
        PARSER = new com.google.protobuf.AbstractParser<ActionBeginSavepointRequest>() {
      @java.lang.Override
      public ActionBeginSavepointRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ActionBeginSavepointRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ActionBeginSavepointRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ActionBeginTransactionResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.ActionBeginTransactionResult)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Opaque handle for the transaction on the server.
     * </pre>
     *
     * <code>bytes transaction_id = 1;</code>
     * @return The transactionId.
     */
    com.google.protobuf.ByteString getTransactionId();
  }
  /**
   * <pre>
   *
   * The result of a "BeginTransaction" action.
   *
   * The transaction can be manipulated with the "EndTransaction" action, or
   * automatically via server timeout. If the transaction times out, then it is
   * automatically rolled back.
   *
   * The result should be wrapped in a google.protobuf.Any message.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.ActionBeginTransactionResult}
   */
  public static final class ActionBeginTransactionResult extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.ActionBeginTransactionResult)
      ActionBeginTransactionResultOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ActionBeginTransactionResult.newBuilder() to construct.
    private ActionBeginTransactionResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ActionBeginTransactionResult() {
      transactionId_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ActionBeginTransactionResult();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionBeginTransactionResult_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionBeginTransactionResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult.class, org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult.Builder.class);
    }

    public static final int TRANSACTION_ID_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString transactionId_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * Opaque handle for the transaction on the server.
     * </pre>
     *
     * <code>bytes transaction_id = 1;</code>
     * @return The transactionId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getTransactionId() {
      return transactionId_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!transactionId_.isEmpty()) {
        output.writeBytes(1, transactionId_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!transactionId_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, transactionId_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult other = (org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult) obj;

      if (!getTransactionId()
          .equals(other.getTransactionId())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TRANSACTION_ID_FIELD_NUMBER;
      hash = (53 * hash) + getTransactionId().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * The result of a "BeginTransaction" action.
     *
     * The transaction can be manipulated with the "EndTransaction" action, or
     * automatically via server timeout. If the transaction times out, then it is
     * automatically rolled back.
     *
     * The result should be wrapped in a google.protobuf.Any message.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.ActionBeginTransactionResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.ActionBeginTransactionResult)
        org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionBeginTransactionResult_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionBeginTransactionResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult.class, org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        transactionId_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionBeginTransactionResult_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult build() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult result = new org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.transactionId_ = transactionId_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult.getDefaultInstance()) return this;
        if (other.getTransactionId() != com.google.protobuf.ByteString.EMPTY) {
          setTransactionId(other.getTransactionId());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                transactionId_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.ByteString transactionId_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * Opaque handle for the transaction on the server.
       * </pre>
       *
       * <code>bytes transaction_id = 1;</code>
       * @return The transactionId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getTransactionId() {
        return transactionId_;
      }
      /**
       * <pre>
       * Opaque handle for the transaction on the server.
       * </pre>
       *
       * <code>bytes transaction_id = 1;</code>
       * @param value The transactionId to set.
       * @return This builder for chaining.
       */
      public Builder setTransactionId(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        transactionId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Opaque handle for the transaction on the server.
       * </pre>
       *
       * <code>bytes transaction_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTransactionId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        transactionId_ = getDefaultInstance().getTransactionId();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.ActionBeginTransactionResult)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.ActionBeginTransactionResult)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ActionBeginTransactionResult>
        PARSER = new com.google.protobuf.AbstractParser<ActionBeginTransactionResult>() {
      @java.lang.Override
      public ActionBeginTransactionResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ActionBeginTransactionResult> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ActionBeginTransactionResult> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginTransactionResult getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ActionBeginSavepointResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.ActionBeginSavepointResult)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Opaque handle for the savepoint on the server.
     * </pre>
     *
     * <code>bytes savepoint_id = 1;</code>
     * @return The savepointId.
     */
    com.google.protobuf.ByteString getSavepointId();
  }
  /**
   * <pre>
   *
   * The result of a "BeginSavepoint" action.
   *
   * The transaction can be manipulated with the "EndSavepoint" action.
   * If the associated transaction is committed, rolled back, or times
   * out, then the savepoint is also invalidated.
   *
   * The result should be wrapped in a google.protobuf.Any message.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.ActionBeginSavepointResult}
   */
  public static final class ActionBeginSavepointResult extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.ActionBeginSavepointResult)
      ActionBeginSavepointResultOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ActionBeginSavepointResult.newBuilder() to construct.
    private ActionBeginSavepointResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ActionBeginSavepointResult() {
      savepointId_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ActionBeginSavepointResult();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionBeginSavepointResult_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionBeginSavepointResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult.class, org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult.Builder.class);
    }

    public static final int SAVEPOINT_ID_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString savepointId_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * Opaque handle for the savepoint on the server.
     * </pre>
     *
     * <code>bytes savepoint_id = 1;</code>
     * @return The savepointId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getSavepointId() {
      return savepointId_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!savepointId_.isEmpty()) {
        output.writeBytes(1, savepointId_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!savepointId_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, savepointId_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult other = (org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult) obj;

      if (!getSavepointId()
          .equals(other.getSavepointId())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SAVEPOINT_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSavepointId().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * The result of a "BeginSavepoint" action.
     *
     * The transaction can be manipulated with the "EndSavepoint" action.
     * If the associated transaction is committed, rolled back, or times
     * out, then the savepoint is also invalidated.
     *
     * The result should be wrapped in a google.protobuf.Any message.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.ActionBeginSavepointResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.ActionBeginSavepointResult)
        org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionBeginSavepointResult_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionBeginSavepointResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult.class, org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        savepointId_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionBeginSavepointResult_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult build() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult result = new org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.savepointId_ = savepointId_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult.getDefaultInstance()) return this;
        if (other.getSavepointId() != com.google.protobuf.ByteString.EMPTY) {
          setSavepointId(other.getSavepointId());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                savepointId_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.ByteString savepointId_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * Opaque handle for the savepoint on the server.
       * </pre>
       *
       * <code>bytes savepoint_id = 1;</code>
       * @return The savepointId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getSavepointId() {
        return savepointId_;
      }
      /**
       * <pre>
       * Opaque handle for the savepoint on the server.
       * </pre>
       *
       * <code>bytes savepoint_id = 1;</code>
       * @param value The savepointId to set.
       * @return This builder for chaining.
       */
      public Builder setSavepointId(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        savepointId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Opaque handle for the savepoint on the server.
       * </pre>
       *
       * <code>bytes savepoint_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSavepointId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        savepointId_ = getDefaultInstance().getSavepointId();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.ActionBeginSavepointResult)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.ActionBeginSavepointResult)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ActionBeginSavepointResult>
        PARSER = new com.google.protobuf.AbstractParser<ActionBeginSavepointResult>() {
      @java.lang.Override
      public ActionBeginSavepointResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ActionBeginSavepointResult> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ActionBeginSavepointResult> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.ActionBeginSavepointResult getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ActionEndTransactionRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.ActionEndTransactionRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Opaque handle for the transaction on the server.
     * </pre>
     *
     * <code>bytes transaction_id = 1;</code>
     * @return The transactionId.
     */
    com.google.protobuf.ByteString getTransactionId();

    /**
     * <pre>
     * Whether to commit/rollback the given transaction.
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.ActionEndTransactionRequest.EndTransaction action = 2;</code>
     * @return The enum numeric value on the wire for action.
     */
    int getActionValue();
    /**
     * <pre>
     * Whether to commit/rollback the given transaction.
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.ActionEndTransactionRequest.EndTransaction action = 2;</code>
     * @return The action.
     */
    org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest.EndTransaction getAction();
  }
  /**
   * <pre>
   *
   * Request message for the "EndTransaction" action.
   *
   * Commit (COMMIT) or rollback (ROLLBACK) the transaction.
   *
   * If the action completes successfully, the transaction handle is
   * invalidated, as are all associated savepoints.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.ActionEndTransactionRequest}
   */
  public static final class ActionEndTransactionRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.ActionEndTransactionRequest)
      ActionEndTransactionRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ActionEndTransactionRequest.newBuilder() to construct.
    private ActionEndTransactionRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ActionEndTransactionRequest() {
      transactionId_ = com.google.protobuf.ByteString.EMPTY;
      action_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ActionEndTransactionRequest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionEndTransactionRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionEndTransactionRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest.class, org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest.Builder.class);
    }

    /**
     * Protobuf enum {@code arrow.flight.protocol.sql.ActionEndTransactionRequest.EndTransaction}
     */
    public enum EndTransaction
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>END_TRANSACTION_UNSPECIFIED = 0;</code>
       */
      END_TRANSACTION_UNSPECIFIED(0),
      /**
       * <pre>
       * Commit the transaction.
       * </pre>
       *
       * <code>END_TRANSACTION_COMMIT = 1;</code>
       */
      END_TRANSACTION_COMMIT(1),
      /**
       * <pre>
       * Roll back the transaction.
       * </pre>
       *
       * <code>END_TRANSACTION_ROLLBACK = 2;</code>
       */
      END_TRANSACTION_ROLLBACK(2),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>END_TRANSACTION_UNSPECIFIED = 0;</code>
       */
      public static final int END_TRANSACTION_UNSPECIFIED_VALUE = 0;
      /**
       * <pre>
       * Commit the transaction.
       * </pre>
       *
       * <code>END_TRANSACTION_COMMIT = 1;</code>
       */
      public static final int END_TRANSACTION_COMMIT_VALUE = 1;
      /**
       * <pre>
       * Roll back the transaction.
       * </pre>
       *
       * <code>END_TRANSACTION_ROLLBACK = 2;</code>
       */
      public static final int END_TRANSACTION_ROLLBACK_VALUE = 2;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static EndTransaction valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static EndTransaction forNumber(int value) {
        switch (value) {
          case 0: return END_TRANSACTION_UNSPECIFIED;
          case 1: return END_TRANSACTION_COMMIT;
          case 2: return END_TRANSACTION_ROLLBACK;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<EndTransaction>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          EndTransaction> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<EndTransaction>() {
              public EndTransaction findValueByNumber(int number) {
                return EndTransaction.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalStateException(
              "Can't get the descriptor of an unrecognized enum value.");
        }
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest.getDescriptor().getEnumTypes().get(0);
      }

      private static final EndTransaction[] VALUES = values();

      public static EndTransaction valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private EndTransaction(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.ActionEndTransactionRequest.EndTransaction)
    }

    public static final int TRANSACTION_ID_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString transactionId_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * Opaque handle for the transaction on the server.
     * </pre>
     *
     * <code>bytes transaction_id = 1;</code>
     * @return The transactionId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getTransactionId() {
      return transactionId_;
    }

    public static final int ACTION_FIELD_NUMBER = 2;
    private int action_ = 0;
    /**
     * <pre>
     * Whether to commit/rollback the given transaction.
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.ActionEndTransactionRequest.EndTransaction action = 2;</code>
     * @return The enum numeric value on the wire for action.
     */
    @java.lang.Override public int getActionValue() {
      return action_;
    }
    /**
     * <pre>
     * Whether to commit/rollback the given transaction.
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.ActionEndTransactionRequest.EndTransaction action = 2;</code>
     * @return The action.
     */
    @java.lang.Override public org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest.EndTransaction getAction() {
      org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest.EndTransaction result = org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest.EndTransaction.forNumber(action_);
      return result == null ? org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest.EndTransaction.UNRECOGNIZED : result;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!transactionId_.isEmpty()) {
        output.writeBytes(1, transactionId_);
      }
      if (action_ != org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest.EndTransaction.END_TRANSACTION_UNSPECIFIED.getNumber()) {
        output.writeEnum(2, action_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!transactionId_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, transactionId_);
      }
      if (action_ != org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest.EndTransaction.END_TRANSACTION_UNSPECIFIED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, action_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest other = (org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest) obj;

      if (!getTransactionId()
          .equals(other.getTransactionId())) return false;
      if (action_ != other.action_) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TRANSACTION_ID_FIELD_NUMBER;
      hash = (53 * hash) + getTransactionId().hashCode();
      hash = (37 * hash) + ACTION_FIELD_NUMBER;
      hash = (53 * hash) + action_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Request message for the "EndTransaction" action.
     *
     * Commit (COMMIT) or rollback (ROLLBACK) the transaction.
     *
     * If the action completes successfully, the transaction handle is
     * invalidated, as are all associated savepoints.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.ActionEndTransactionRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.ActionEndTransactionRequest)
        org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionEndTransactionRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionEndTransactionRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest.class, org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        transactionId_ = com.google.protobuf.ByteString.EMPTY;
        action_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionEndTransactionRequest_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest build() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest result = new org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.transactionId_ = transactionId_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.action_ = action_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest.getDefaultInstance()) return this;
        if (other.getTransactionId() != com.google.protobuf.ByteString.EMPTY) {
          setTransactionId(other.getTransactionId());
        }
        if (other.action_ != 0) {
          setActionValue(other.getActionValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                transactionId_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                action_ = input.readEnum();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.ByteString transactionId_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * Opaque handle for the transaction on the server.
       * </pre>
       *
       * <code>bytes transaction_id = 1;</code>
       * @return The transactionId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getTransactionId() {
        return transactionId_;
      }
      /**
       * <pre>
       * Opaque handle for the transaction on the server.
       * </pre>
       *
       * <code>bytes transaction_id = 1;</code>
       * @param value The transactionId to set.
       * @return This builder for chaining.
       */
      public Builder setTransactionId(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        transactionId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Opaque handle for the transaction on the server.
       * </pre>
       *
       * <code>bytes transaction_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTransactionId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        transactionId_ = getDefaultInstance().getTransactionId();
        onChanged();
        return this;
      }

      private int action_ = 0;
      /**
       * <pre>
       * Whether to commit/rollback the given transaction.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.ActionEndTransactionRequest.EndTransaction action = 2;</code>
       * @return The enum numeric value on the wire for action.
       */
      @java.lang.Override public int getActionValue() {
        return action_;
      }
      /**
       * <pre>
       * Whether to commit/rollback the given transaction.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.ActionEndTransactionRequest.EndTransaction action = 2;</code>
       * @param value The enum numeric value on the wire for action to set.
       * @return This builder for chaining.
       */
      public Builder setActionValue(int value) {
        action_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Whether to commit/rollback the given transaction.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.ActionEndTransactionRequest.EndTransaction action = 2;</code>
       * @return The action.
       */
      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest.EndTransaction getAction() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest.EndTransaction result = org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest.EndTransaction.forNumber(action_);
        return result == null ? org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest.EndTransaction.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Whether to commit/rollback the given transaction.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.ActionEndTransactionRequest.EndTransaction action = 2;</code>
       * @param value The action to set.
       * @return This builder for chaining.
       */
      public Builder setAction(org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest.EndTransaction value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        action_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Whether to commit/rollback the given transaction.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.ActionEndTransactionRequest.EndTransaction action = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearAction() {
        bitField0_ = (bitField0_ & ~0x00000002);
        action_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.ActionEndTransactionRequest)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.ActionEndTransactionRequest)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ActionEndTransactionRequest>
        PARSER = new com.google.protobuf.AbstractParser<ActionEndTransactionRequest>() {
      @java.lang.Override
      public ActionEndTransactionRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ActionEndTransactionRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ActionEndTransactionRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.ActionEndTransactionRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ActionEndSavepointRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.ActionEndSavepointRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Opaque handle for the savepoint on the server.
     * </pre>
     *
     * <code>bytes savepoint_id = 1;</code>
     * @return The savepointId.
     */
    com.google.protobuf.ByteString getSavepointId();

    /**
     * <pre>
     * Whether to rollback/release the given savepoint.
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.ActionEndSavepointRequest.EndSavepoint action = 2;</code>
     * @return The enum numeric value on the wire for action.
     */
    int getActionValue();
    /**
     * <pre>
     * Whether to rollback/release the given savepoint.
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.ActionEndSavepointRequest.EndSavepoint action = 2;</code>
     * @return The action.
     */
    org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest.EndSavepoint getAction();
  }
  /**
   * <pre>
   *
   * Request message for the "EndSavepoint" action.
   *
   * Release (RELEASE) the savepoint or rollback (ROLLBACK) to the
   * savepoint.
   *
   * Releasing a savepoint invalidates that savepoint.  Rolling back to
   * a savepoint does not invalidate the savepoint, but invalidates all
   * savepoints created after the current savepoint.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.ActionEndSavepointRequest}
   */
  public static final class ActionEndSavepointRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.ActionEndSavepointRequest)
      ActionEndSavepointRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ActionEndSavepointRequest.newBuilder() to construct.
    private ActionEndSavepointRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ActionEndSavepointRequest() {
      savepointId_ = com.google.protobuf.ByteString.EMPTY;
      action_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ActionEndSavepointRequest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionEndSavepointRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionEndSavepointRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest.class, org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest.Builder.class);
    }

    /**
     * Protobuf enum {@code arrow.flight.protocol.sql.ActionEndSavepointRequest.EndSavepoint}
     */
    public enum EndSavepoint
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>END_SAVEPOINT_UNSPECIFIED = 0;</code>
       */
      END_SAVEPOINT_UNSPECIFIED(0),
      /**
       * <pre>
       * Release the savepoint.
       * </pre>
       *
       * <code>END_SAVEPOINT_RELEASE = 1;</code>
       */
      END_SAVEPOINT_RELEASE(1),
      /**
       * <pre>
       * Roll back to a savepoint.
       * </pre>
       *
       * <code>END_SAVEPOINT_ROLLBACK = 2;</code>
       */
      END_SAVEPOINT_ROLLBACK(2),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>END_SAVEPOINT_UNSPECIFIED = 0;</code>
       */
      public static final int END_SAVEPOINT_UNSPECIFIED_VALUE = 0;
      /**
       * <pre>
       * Release the savepoint.
       * </pre>
       *
       * <code>END_SAVEPOINT_RELEASE = 1;</code>
       */
      public static final int END_SAVEPOINT_RELEASE_VALUE = 1;
      /**
       * <pre>
       * Roll back to a savepoint.
       * </pre>
       *
       * <code>END_SAVEPOINT_ROLLBACK = 2;</code>
       */
      public static final int END_SAVEPOINT_ROLLBACK_VALUE = 2;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static EndSavepoint valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static EndSavepoint forNumber(int value) {
        switch (value) {
          case 0: return END_SAVEPOINT_UNSPECIFIED;
          case 1: return END_SAVEPOINT_RELEASE;
          case 2: return END_SAVEPOINT_ROLLBACK;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<EndSavepoint>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          EndSavepoint> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<EndSavepoint>() {
              public EndSavepoint findValueByNumber(int number) {
                return EndSavepoint.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalStateException(
              "Can't get the descriptor of an unrecognized enum value.");
        }
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest.getDescriptor().getEnumTypes().get(0);
      }

      private static final EndSavepoint[] VALUES = values();

      public static EndSavepoint valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private EndSavepoint(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.ActionEndSavepointRequest.EndSavepoint)
    }

    public static final int SAVEPOINT_ID_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString savepointId_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * Opaque handle for the savepoint on the server.
     * </pre>
     *
     * <code>bytes savepoint_id = 1;</code>
     * @return The savepointId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getSavepointId() {
      return savepointId_;
    }

    public static final int ACTION_FIELD_NUMBER = 2;
    private int action_ = 0;
    /**
     * <pre>
     * Whether to rollback/release the given savepoint.
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.ActionEndSavepointRequest.EndSavepoint action = 2;</code>
     * @return The enum numeric value on the wire for action.
     */
    @java.lang.Override public int getActionValue() {
      return action_;
    }
    /**
     * <pre>
     * Whether to rollback/release the given savepoint.
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.ActionEndSavepointRequest.EndSavepoint action = 2;</code>
     * @return The action.
     */
    @java.lang.Override public org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest.EndSavepoint getAction() {
      org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest.EndSavepoint result = org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest.EndSavepoint.forNumber(action_);
      return result == null ? org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest.EndSavepoint.UNRECOGNIZED : result;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!savepointId_.isEmpty()) {
        output.writeBytes(1, savepointId_);
      }
      if (action_ != org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest.EndSavepoint.END_SAVEPOINT_UNSPECIFIED.getNumber()) {
        output.writeEnum(2, action_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!savepointId_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, savepointId_);
      }
      if (action_ != org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest.EndSavepoint.END_SAVEPOINT_UNSPECIFIED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, action_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest other = (org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest) obj;

      if (!getSavepointId()
          .equals(other.getSavepointId())) return false;
      if (action_ != other.action_) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SAVEPOINT_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSavepointId().hashCode();
      hash = (37 * hash) + ACTION_FIELD_NUMBER;
      hash = (53 * hash) + action_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Request message for the "EndSavepoint" action.
     *
     * Release (RELEASE) the savepoint or rollback (ROLLBACK) to the
     * savepoint.
     *
     * Releasing a savepoint invalidates that savepoint.  Rolling back to
     * a savepoint does not invalidate the savepoint, but invalidates all
     * savepoints created after the current savepoint.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.ActionEndSavepointRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.ActionEndSavepointRequest)
        org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionEndSavepointRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionEndSavepointRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest.class, org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        savepointId_ = com.google.protobuf.ByteString.EMPTY;
        action_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionEndSavepointRequest_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest build() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest result = new org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.savepointId_ = savepointId_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.action_ = action_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest.getDefaultInstance()) return this;
        if (other.getSavepointId() != com.google.protobuf.ByteString.EMPTY) {
          setSavepointId(other.getSavepointId());
        }
        if (other.action_ != 0) {
          setActionValue(other.getActionValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                savepointId_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                action_ = input.readEnum();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.ByteString savepointId_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * Opaque handle for the savepoint on the server.
       * </pre>
       *
       * <code>bytes savepoint_id = 1;</code>
       * @return The savepointId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getSavepointId() {
        return savepointId_;
      }
      /**
       * <pre>
       * Opaque handle for the savepoint on the server.
       * </pre>
       *
       * <code>bytes savepoint_id = 1;</code>
       * @param value The savepointId to set.
       * @return This builder for chaining.
       */
      public Builder setSavepointId(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        savepointId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Opaque handle for the savepoint on the server.
       * </pre>
       *
       * <code>bytes savepoint_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSavepointId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        savepointId_ = getDefaultInstance().getSavepointId();
        onChanged();
        return this;
      }

      private int action_ = 0;
      /**
       * <pre>
       * Whether to rollback/release the given savepoint.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.ActionEndSavepointRequest.EndSavepoint action = 2;</code>
       * @return The enum numeric value on the wire for action.
       */
      @java.lang.Override public int getActionValue() {
        return action_;
      }
      /**
       * <pre>
       * Whether to rollback/release the given savepoint.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.ActionEndSavepointRequest.EndSavepoint action = 2;</code>
       * @param value The enum numeric value on the wire for action to set.
       * @return This builder for chaining.
       */
      public Builder setActionValue(int value) {
        action_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Whether to rollback/release the given savepoint.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.ActionEndSavepointRequest.EndSavepoint action = 2;</code>
       * @return The action.
       */
      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest.EndSavepoint getAction() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest.EndSavepoint result = org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest.EndSavepoint.forNumber(action_);
        return result == null ? org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest.EndSavepoint.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Whether to rollback/release the given savepoint.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.ActionEndSavepointRequest.EndSavepoint action = 2;</code>
       * @param value The action to set.
       * @return This builder for chaining.
       */
      public Builder setAction(org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest.EndSavepoint value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        action_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Whether to rollback/release the given savepoint.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.ActionEndSavepointRequest.EndSavepoint action = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearAction() {
        bitField0_ = (bitField0_ & ~0x00000002);
        action_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.ActionEndSavepointRequest)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.ActionEndSavepointRequest)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ActionEndSavepointRequest>
        PARSER = new com.google.protobuf.AbstractParser<ActionEndSavepointRequest>() {
      @java.lang.Override
      public ActionEndSavepointRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ActionEndSavepointRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ActionEndSavepointRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.ActionEndSavepointRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CommandStatementQueryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.CommandStatementQuery)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The SQL syntax.
     * </pre>
     *
     * <code>string query = 1;</code>
     * @return The query.
     */
    java.lang.String getQuery();
    /**
     * <pre>
     * The SQL syntax.
     * </pre>
     *
     * <code>string query = 1;</code>
     * @return The bytes for query.
     */
    com.google.protobuf.ByteString
        getQueryBytes();

    /**
     * <pre>
     * Include the query as part of this transaction (if unset, the query is auto-committed).
     * </pre>
     *
     * <code>optional bytes transaction_id = 2;</code>
     * @return Whether the transactionId field is set.
     */
    boolean hasTransactionId();
    /**
     * <pre>
     * Include the query as part of this transaction (if unset, the query is auto-committed).
     * </pre>
     *
     * <code>optional bytes transaction_id = 2;</code>
     * @return The transactionId.
     */
    com.google.protobuf.ByteString getTransactionId();
  }
  /**
   * <pre>
   *
   * Represents a SQL query. Used in the command member of FlightDescriptor
   * for the following RPC calls:
   *  - GetSchema: return the Arrow schema of the query.
   *    Fields on this schema may contain the following metadata:
   *    - ARROW:FLIGHT:SQL:CATALOG_NAME      - Table's catalog name
   *    - ARROW:FLIGHT:SQL:DB_SCHEMA_NAME    - Database schema name
   *    - ARROW:FLIGHT:SQL:TABLE_NAME        - Table name
   *    - ARROW:FLIGHT:SQL:TYPE_NAME         - The data source-specific name for the data type of the column.
   *    - ARROW:FLIGHT:SQL:PRECISION         - Column precision/size
   *    - ARROW:FLIGHT:SQL:SCALE             - Column scale/decimal digits if applicable
   *    - ARROW:FLIGHT:SQL:IS_AUTO_INCREMENT - "1" indicates if the column is auto incremented, "0" otherwise.
   *    - ARROW:FLIGHT:SQL:IS_CASE_SENSITIVE - "1" indicates if the column is case-sensitive, "0" otherwise.
   *    - ARROW:FLIGHT:SQL:IS_READ_ONLY      - "1" indicates if the column is read only, "0" otherwise.
   *    - ARROW:FLIGHT:SQL:IS_SEARCHABLE     - "1" indicates if the column is searchable via WHERE clause, "0" otherwise.
   *  - GetFlightInfo: execute the query.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.CommandStatementQuery}
   */
  public static final class CommandStatementQuery extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.CommandStatementQuery)
      CommandStatementQueryOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CommandStatementQuery.newBuilder() to construct.
    private CommandStatementQuery(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CommandStatementQuery() {
      query_ = "";
      transactionId_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CommandStatementQuery();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementQuery_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementQuery_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery.Builder.class);
    }

    private int bitField0_;
    public static final int QUERY_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object query_ = "";
    /**
     * <pre>
     * The SQL syntax.
     * </pre>
     *
     * <code>string query = 1;</code>
     * @return The query.
     */
    @java.lang.Override
    public java.lang.String getQuery() {
      java.lang.Object ref = query_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        query_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The SQL syntax.
     * </pre>
     *
     * <code>string query = 1;</code>
     * @return The bytes for query.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getQueryBytes() {
      java.lang.Object ref = query_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        query_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TRANSACTION_ID_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString transactionId_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * Include the query as part of this transaction (if unset, the query is auto-committed).
     * </pre>
     *
     * <code>optional bytes transaction_id = 2;</code>
     * @return Whether the transactionId field is set.
     */
    @java.lang.Override
    public boolean hasTransactionId() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Include the query as part of this transaction (if unset, the query is auto-committed).
     * </pre>
     *
     * <code>optional bytes transaction_id = 2;</code>
     * @return The transactionId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getTransactionId() {
      return transactionId_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(query_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, query_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeBytes(2, transactionId_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(query_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, query_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, transactionId_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery other = (org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery) obj;

      if (!getQuery()
          .equals(other.getQuery())) return false;
      if (hasTransactionId() != other.hasTransactionId()) return false;
      if (hasTransactionId()) {
        if (!getTransactionId()
            .equals(other.getTransactionId())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + QUERY_FIELD_NUMBER;
      hash = (53 * hash) + getQuery().hashCode();
      if (hasTransactionId()) {
        hash = (37 * hash) + TRANSACTION_ID_FIELD_NUMBER;
        hash = (53 * hash) + getTransactionId().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Represents a SQL query. Used in the command member of FlightDescriptor
     * for the following RPC calls:
     *  - GetSchema: return the Arrow schema of the query.
     *    Fields on this schema may contain the following metadata:
     *    - ARROW:FLIGHT:SQL:CATALOG_NAME      - Table's catalog name
     *    - ARROW:FLIGHT:SQL:DB_SCHEMA_NAME    - Database schema name
     *    - ARROW:FLIGHT:SQL:TABLE_NAME        - Table name
     *    - ARROW:FLIGHT:SQL:TYPE_NAME         - The data source-specific name for the data type of the column.
     *    - ARROW:FLIGHT:SQL:PRECISION         - Column precision/size
     *    - ARROW:FLIGHT:SQL:SCALE             - Column scale/decimal digits if applicable
     *    - ARROW:FLIGHT:SQL:IS_AUTO_INCREMENT - "1" indicates if the column is auto incremented, "0" otherwise.
     *    - ARROW:FLIGHT:SQL:IS_CASE_SENSITIVE - "1" indicates if the column is case-sensitive, "0" otherwise.
     *    - ARROW:FLIGHT:SQL:IS_READ_ONLY      - "1" indicates if the column is read only, "0" otherwise.
     *    - ARROW:FLIGHT:SQL:IS_SEARCHABLE     - "1" indicates if the column is searchable via WHERE clause, "0" otherwise.
     *  - GetFlightInfo: execute the query.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.CommandStatementQuery}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.CommandStatementQuery)
        org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQueryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementQuery_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementQuery_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        query_ = "";
        transactionId_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementQuery_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery build() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery result = new org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.query_ = query_;
        }
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.transactionId_ = transactionId_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery.getDefaultInstance()) return this;
        if (!other.getQuery().isEmpty()) {
          query_ = other.query_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasTransactionId()) {
          setTransactionId(other.getTransactionId());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                query_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                transactionId_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object query_ = "";
      /**
       * <pre>
       * The SQL syntax.
       * </pre>
       *
       * <code>string query = 1;</code>
       * @return The query.
       */
      public java.lang.String getQuery() {
        java.lang.Object ref = query_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          query_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The SQL syntax.
       * </pre>
       *
       * <code>string query = 1;</code>
       * @return The bytes for query.
       */
      public com.google.protobuf.ByteString
          getQueryBytes() {
        java.lang.Object ref = query_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          query_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The SQL syntax.
       * </pre>
       *
       * <code>string query = 1;</code>
       * @param value The query to set.
       * @return This builder for chaining.
       */
      public Builder setQuery(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        query_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The SQL syntax.
       * </pre>
       *
       * <code>string query = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearQuery() {
        query_ = getDefaultInstance().getQuery();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The SQL syntax.
       * </pre>
       *
       * <code>string query = 1;</code>
       * @param value The bytes for query to set.
       * @return This builder for chaining.
       */
      public Builder setQueryBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        query_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString transactionId_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * Include the query as part of this transaction (if unset, the query is auto-committed).
       * </pre>
       *
       * <code>optional bytes transaction_id = 2;</code>
       * @return Whether the transactionId field is set.
       */
      @java.lang.Override
      public boolean hasTransactionId() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Include the query as part of this transaction (if unset, the query is auto-committed).
       * </pre>
       *
       * <code>optional bytes transaction_id = 2;</code>
       * @return The transactionId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getTransactionId() {
        return transactionId_;
      }
      /**
       * <pre>
       * Include the query as part of this transaction (if unset, the query is auto-committed).
       * </pre>
       *
       * <code>optional bytes transaction_id = 2;</code>
       * @param value The transactionId to set.
       * @return This builder for chaining.
       */
      public Builder setTransactionId(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        transactionId_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Include the query as part of this transaction (if unset, the query is auto-committed).
       * </pre>
       *
       * <code>optional bytes transaction_id = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTransactionId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        transactionId_ = getDefaultInstance().getTransactionId();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.CommandStatementQuery)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.CommandStatementQuery)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CommandStatementQuery>
        PARSER = new com.google.protobuf.AbstractParser<CommandStatementQuery>() {
      @java.lang.Override
      public CommandStatementQuery parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CommandStatementQuery> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CommandStatementQuery> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementQuery getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CommandStatementSubstraitPlanOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.CommandStatementSubstraitPlan)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * A serialized substrait.Plan
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
     * @return Whether the plan field is set.
     */
    boolean hasPlan();
    /**
     * <pre>
     * A serialized substrait.Plan
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
     * @return The plan.
     */
    org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan getPlan();
    /**
     * <pre>
     * A serialized substrait.Plan
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
     */
    org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlanOrBuilder getPlanOrBuilder();

    /**
     * <pre>
     * Include the query as part of this transaction (if unset, the query is auto-committed).
     * </pre>
     *
     * <code>optional bytes transaction_id = 2;</code>
     * @return Whether the transactionId field is set.
     */
    boolean hasTransactionId();
    /**
     * <pre>
     * Include the query as part of this transaction (if unset, the query is auto-committed).
     * </pre>
     *
     * <code>optional bytes transaction_id = 2;</code>
     * @return The transactionId.
     */
    com.google.protobuf.ByteString getTransactionId();
  }
  /**
   * <pre>
   *
   * Represents a Substrait plan. Used in the command member of FlightDescriptor
   * for the following RPC calls:
   *  - GetSchema: return the Arrow schema of the query.
   *    Fields on this schema may contain the following metadata:
   *    - ARROW:FLIGHT:SQL:CATALOG_NAME      - Table's catalog name
   *    - ARROW:FLIGHT:SQL:DB_SCHEMA_NAME    - Database schema name
   *    - ARROW:FLIGHT:SQL:TABLE_NAME        - Table name
   *    - ARROW:FLIGHT:SQL:TYPE_NAME         - The data source-specific name for the data type of the column.
   *    - ARROW:FLIGHT:SQL:PRECISION         - Column precision/size
   *    - ARROW:FLIGHT:SQL:SCALE             - Column scale/decimal digits if applicable
   *    - ARROW:FLIGHT:SQL:IS_AUTO_INCREMENT - "1" indicates if the column is auto incremented, "0" otherwise.
   *    - ARROW:FLIGHT:SQL:IS_CASE_SENSITIVE - "1" indicates if the column is case-sensitive, "0" otherwise.
   *    - ARROW:FLIGHT:SQL:IS_READ_ONLY      - "1" indicates if the column is read only, "0" otherwise.
   *    - ARROW:FLIGHT:SQL:IS_SEARCHABLE     - "1" indicates if the column is searchable via WHERE clause, "0" otherwise.
   *  - GetFlightInfo: execute the query.
   *  - DoPut: execute the query.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.CommandStatementSubstraitPlan}
   */
  public static final class CommandStatementSubstraitPlan extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.CommandStatementSubstraitPlan)
      CommandStatementSubstraitPlanOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CommandStatementSubstraitPlan.newBuilder() to construct.
    private CommandStatementSubstraitPlan(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CommandStatementSubstraitPlan() {
      transactionId_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CommandStatementSubstraitPlan();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementSubstraitPlan_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementSubstraitPlan_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan.Builder.class);
    }

    private int bitField0_;
    public static final int PLAN_FIELD_NUMBER = 1;
    private org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan plan_;
    /**
     * <pre>
     * A serialized substrait.Plan
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
     * @return Whether the plan field is set.
     */
    @java.lang.Override
    public boolean hasPlan() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * A serialized substrait.Plan
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
     * @return The plan.
     */
    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan getPlan() {
      return plan_ == null ? org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.getDefaultInstance() : plan_;
    }
    /**
     * <pre>
     * A serialized substrait.Plan
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
     */
    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlanOrBuilder getPlanOrBuilder() {
      return plan_ == null ? org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.getDefaultInstance() : plan_;
    }

    public static final int TRANSACTION_ID_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString transactionId_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * Include the query as part of this transaction (if unset, the query is auto-committed).
     * </pre>
     *
     * <code>optional bytes transaction_id = 2;</code>
     * @return Whether the transactionId field is set.
     */
    @java.lang.Override
    public boolean hasTransactionId() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Include the query as part of this transaction (if unset, the query is auto-committed).
     * </pre>
     *
     * <code>optional bytes transaction_id = 2;</code>
     * @return The transactionId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getTransactionId() {
      return transactionId_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getPlan());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBytes(2, transactionId_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getPlan());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, transactionId_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan other = (org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan) obj;

      if (hasPlan() != other.hasPlan()) return false;
      if (hasPlan()) {
        if (!getPlan()
            .equals(other.getPlan())) return false;
      }
      if (hasTransactionId() != other.hasTransactionId()) return false;
      if (hasTransactionId()) {
        if (!getTransactionId()
            .equals(other.getTransactionId())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasPlan()) {
        hash = (37 * hash) + PLAN_FIELD_NUMBER;
        hash = (53 * hash) + getPlan().hashCode();
      }
      if (hasTransactionId()) {
        hash = (37 * hash) + TRANSACTION_ID_FIELD_NUMBER;
        hash = (53 * hash) + getTransactionId().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Represents a Substrait plan. Used in the command member of FlightDescriptor
     * for the following RPC calls:
     *  - GetSchema: return the Arrow schema of the query.
     *    Fields on this schema may contain the following metadata:
     *    - ARROW:FLIGHT:SQL:CATALOG_NAME      - Table's catalog name
     *    - ARROW:FLIGHT:SQL:DB_SCHEMA_NAME    - Database schema name
     *    - ARROW:FLIGHT:SQL:TABLE_NAME        - Table name
     *    - ARROW:FLIGHT:SQL:TYPE_NAME         - The data source-specific name for the data type of the column.
     *    - ARROW:FLIGHT:SQL:PRECISION         - Column precision/size
     *    - ARROW:FLIGHT:SQL:SCALE             - Column scale/decimal digits if applicable
     *    - ARROW:FLIGHT:SQL:IS_AUTO_INCREMENT - "1" indicates if the column is auto incremented, "0" otherwise.
     *    - ARROW:FLIGHT:SQL:IS_CASE_SENSITIVE - "1" indicates if the column is case-sensitive, "0" otherwise.
     *    - ARROW:FLIGHT:SQL:IS_READ_ONLY      - "1" indicates if the column is read only, "0" otherwise.
     *    - ARROW:FLIGHT:SQL:IS_SEARCHABLE     - "1" indicates if the column is searchable via WHERE clause, "0" otherwise.
     *  - GetFlightInfo: execute the query.
     *  - DoPut: execute the query.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.CommandStatementSubstraitPlan}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.CommandStatementSubstraitPlan)
        org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlanOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementSubstraitPlan_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementSubstraitPlan_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getPlanFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        plan_ = null;
        if (planBuilder_ != null) {
          planBuilder_.dispose();
          planBuilder_ = null;
        }
        transactionId_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementSubstraitPlan_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan build() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan result = new org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.plan_ = planBuilder_ == null
              ? plan_
              : planBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.transactionId_ = transactionId_;
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan.getDefaultInstance()) return this;
        if (other.hasPlan()) {
          mergePlan(other.getPlan());
        }
        if (other.hasTransactionId()) {
          setTransactionId(other.getTransactionId());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getPlanFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                transactionId_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan plan_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan, org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.Builder, org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlanOrBuilder> planBuilder_;
      /**
       * <pre>
       * A serialized substrait.Plan
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
       * @return Whether the plan field is set.
       */
      public boolean hasPlan() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * A serialized substrait.Plan
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
       * @return The plan.
       */
      public org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan getPlan() {
        if (planBuilder_ == null) {
          return plan_ == null ? org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.getDefaultInstance() : plan_;
        } else {
          return planBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * A serialized substrait.Plan
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
       */
      public Builder setPlan(org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan value) {
        if (planBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          plan_ = value;
        } else {
          planBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A serialized substrait.Plan
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
       */
      public Builder setPlan(
          org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.Builder builderForValue) {
        if (planBuilder_ == null) {
          plan_ = builderForValue.build();
        } else {
          planBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A serialized substrait.Plan
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
       */
      public Builder mergePlan(org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan value) {
        if (planBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            plan_ != null &&
            plan_ != org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.getDefaultInstance()) {
            getPlanBuilder().mergeFrom(value);
          } else {
            plan_ = value;
          }
        } else {
          planBuilder_.mergeFrom(value);
        }
        if (plan_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * A serialized substrait.Plan
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
       */
      public Builder clearPlan() {
        bitField0_ = (bitField0_ & ~0x00000001);
        plan_ = null;
        if (planBuilder_ != null) {
          planBuilder_.dispose();
          planBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A serialized substrait.Plan
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
       */
      public org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.Builder getPlanBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getPlanFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * A serialized substrait.Plan
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
       */
      public org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlanOrBuilder getPlanOrBuilder() {
        if (planBuilder_ != null) {
          return planBuilder_.getMessageOrBuilder();
        } else {
          return plan_ == null ?
              org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.getDefaultInstance() : plan_;
        }
      }
      /**
       * <pre>
       * A serialized substrait.Plan
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.SubstraitPlan plan = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan, org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.Builder, org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlanOrBuilder> 
          getPlanFieldBuilder() {
        if (planBuilder_ == null) {
          planBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan, org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlan.Builder, org.apache.arrow.flight.sql.impl.FlightSql.SubstraitPlanOrBuilder>(
                  getPlan(),
                  getParentForChildren(),
                  isClean());
          plan_ = null;
        }
        return planBuilder_;
      }

      private com.google.protobuf.ByteString transactionId_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * Include the query as part of this transaction (if unset, the query is auto-committed).
       * </pre>
       *
       * <code>optional bytes transaction_id = 2;</code>
       * @return Whether the transactionId field is set.
       */
      @java.lang.Override
      public boolean hasTransactionId() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Include the query as part of this transaction (if unset, the query is auto-committed).
       * </pre>
       *
       * <code>optional bytes transaction_id = 2;</code>
       * @return The transactionId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getTransactionId() {
        return transactionId_;
      }
      /**
       * <pre>
       * Include the query as part of this transaction (if unset, the query is auto-committed).
       * </pre>
       *
       * <code>optional bytes transaction_id = 2;</code>
       * @param value The transactionId to set.
       * @return This builder for chaining.
       */
      public Builder setTransactionId(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        transactionId_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Include the query as part of this transaction (if unset, the query is auto-committed).
       * </pre>
       *
       * <code>optional bytes transaction_id = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTransactionId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        transactionId_ = getDefaultInstance().getTransactionId();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.CommandStatementSubstraitPlan)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.CommandStatementSubstraitPlan)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CommandStatementSubstraitPlan>
        PARSER = new com.google.protobuf.AbstractParser<CommandStatementSubstraitPlan>() {
      @java.lang.Override
      public CommandStatementSubstraitPlan parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CommandStatementSubstraitPlan> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CommandStatementSubstraitPlan> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementSubstraitPlan getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TicketStatementQueryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.TicketStatementQuery)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Unique identifier for the instance of the statement to execute.
     * </pre>
     *
     * <code>bytes statement_handle = 1;</code>
     * @return The statementHandle.
     */
    com.google.protobuf.ByteString getStatementHandle();
  }
  /**
   * <pre>
   **
   * Represents a ticket resulting from GetFlightInfo with a CommandStatementQuery.
   * This should be used only once and treated as an opaque value, that is, clients should not attempt to parse this.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.TicketStatementQuery}
   */
  public static final class TicketStatementQuery extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.TicketStatementQuery)
      TicketStatementQueryOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TicketStatementQuery.newBuilder() to construct.
    private TicketStatementQuery(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TicketStatementQuery() {
      statementHandle_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new TicketStatementQuery();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_TicketStatementQuery_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_TicketStatementQuery_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery.class, org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery.Builder.class);
    }

    public static final int STATEMENT_HANDLE_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString statementHandle_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * Unique identifier for the instance of the statement to execute.
     * </pre>
     *
     * <code>bytes statement_handle = 1;</code>
     * @return The statementHandle.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getStatementHandle() {
      return statementHandle_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!statementHandle_.isEmpty()) {
        output.writeBytes(1, statementHandle_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!statementHandle_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, statementHandle_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery other = (org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery) obj;

      if (!getStatementHandle()
          .equals(other.getStatementHandle())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + STATEMENT_HANDLE_FIELD_NUMBER;
      hash = (53 * hash) + getStatementHandle().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     **
     * Represents a ticket resulting from GetFlightInfo with a CommandStatementQuery.
     * This should be used only once and treated as an opaque value, that is, clients should not attempt to parse this.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.TicketStatementQuery}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.TicketStatementQuery)
        org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQueryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_TicketStatementQuery_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_TicketStatementQuery_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery.class, org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        statementHandle_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_TicketStatementQuery_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery build() {
        org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery result = new org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.statementHandle_ = statementHandle_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery.getDefaultInstance()) return this;
        if (other.getStatementHandle() != com.google.protobuf.ByteString.EMPTY) {
          setStatementHandle(other.getStatementHandle());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                statementHandle_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.ByteString statementHandle_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * Unique identifier for the instance of the statement to execute.
       * </pre>
       *
       * <code>bytes statement_handle = 1;</code>
       * @return The statementHandle.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getStatementHandle() {
        return statementHandle_;
      }
      /**
       * <pre>
       * Unique identifier for the instance of the statement to execute.
       * </pre>
       *
       * <code>bytes statement_handle = 1;</code>
       * @param value The statementHandle to set.
       * @return This builder for chaining.
       */
      public Builder setStatementHandle(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        statementHandle_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Unique identifier for the instance of the statement to execute.
       * </pre>
       *
       * <code>bytes statement_handle = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearStatementHandle() {
        bitField0_ = (bitField0_ & ~0x00000001);
        statementHandle_ = getDefaultInstance().getStatementHandle();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.TicketStatementQuery)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.TicketStatementQuery)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<TicketStatementQuery>
        PARSER = new com.google.protobuf.AbstractParser<TicketStatementQuery>() {
      @java.lang.Override
      public TicketStatementQuery parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<TicketStatementQuery> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<TicketStatementQuery> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.TicketStatementQuery getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CommandPreparedStatementQueryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.CommandPreparedStatementQuery)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Opaque handle for the prepared statement on the server.
     * </pre>
     *
     * <code>bytes prepared_statement_handle = 1;</code>
     * @return The preparedStatementHandle.
     */
    com.google.protobuf.ByteString getPreparedStatementHandle();
  }
  /**
   * <pre>
   *
   * Represents an instance of executing a prepared statement. Used in the command member of FlightDescriptor for
   * the following RPC calls:
   *  - GetSchema: return the Arrow schema of the query.
   *    Fields on this schema may contain the following metadata:
   *    - ARROW:FLIGHT:SQL:CATALOG_NAME      - Table's catalog name
   *    - ARROW:FLIGHT:SQL:DB_SCHEMA_NAME    - Database schema name
   *    - ARROW:FLIGHT:SQL:TABLE_NAME        - Table name
   *    - ARROW:FLIGHT:SQL:TYPE_NAME         - The data source-specific name for the data type of the column.
   *    - ARROW:FLIGHT:SQL:PRECISION         - Column precision/size
   *    - ARROW:FLIGHT:SQL:SCALE             - Column scale/decimal digits if applicable
   *    - ARROW:FLIGHT:SQL:IS_AUTO_INCREMENT - "1" indicates if the column is auto incremented, "0" otherwise.
   *    - ARROW:FLIGHT:SQL:IS_CASE_SENSITIVE - "1" indicates if the column is case-sensitive, "0" otherwise.
   *    - ARROW:FLIGHT:SQL:IS_READ_ONLY      - "1" indicates if the column is read only, "0" otherwise.
   *    - ARROW:FLIGHT:SQL:IS_SEARCHABLE     - "1" indicates if the column is searchable via WHERE clause, "0" otherwise.
   *
   *    If the schema is retrieved after parameter values have been bound with DoPut, then the server should account
   *    for the parameters when determining the schema.
   *  - DoPut: bind parameter values. All of the bound parameter sets will be executed as a single atomic execution.
   *  - GetFlightInfo: execute the prepared statement instance.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.CommandPreparedStatementQuery}
   */
  public static final class CommandPreparedStatementQuery extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.CommandPreparedStatementQuery)
      CommandPreparedStatementQueryOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CommandPreparedStatementQuery.newBuilder() to construct.
    private CommandPreparedStatementQuery(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CommandPreparedStatementQuery() {
      preparedStatementHandle_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CommandPreparedStatementQuery();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandPreparedStatementQuery_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandPreparedStatementQuery_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery.Builder.class);
    }

    public static final int PREPARED_STATEMENT_HANDLE_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString preparedStatementHandle_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * Opaque handle for the prepared statement on the server.
     * </pre>
     *
     * <code>bytes prepared_statement_handle = 1;</code>
     * @return The preparedStatementHandle.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getPreparedStatementHandle() {
      return preparedStatementHandle_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!preparedStatementHandle_.isEmpty()) {
        output.writeBytes(1, preparedStatementHandle_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!preparedStatementHandle_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, preparedStatementHandle_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery other = (org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery) obj;

      if (!getPreparedStatementHandle()
          .equals(other.getPreparedStatementHandle())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + PREPARED_STATEMENT_HANDLE_FIELD_NUMBER;
      hash = (53 * hash) + getPreparedStatementHandle().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Represents an instance of executing a prepared statement. Used in the command member of FlightDescriptor for
     * the following RPC calls:
     *  - GetSchema: return the Arrow schema of the query.
     *    Fields on this schema may contain the following metadata:
     *    - ARROW:FLIGHT:SQL:CATALOG_NAME      - Table's catalog name
     *    - ARROW:FLIGHT:SQL:DB_SCHEMA_NAME    - Database schema name
     *    - ARROW:FLIGHT:SQL:TABLE_NAME        - Table name
     *    - ARROW:FLIGHT:SQL:TYPE_NAME         - The data source-specific name for the data type of the column.
     *    - ARROW:FLIGHT:SQL:PRECISION         - Column precision/size
     *    - ARROW:FLIGHT:SQL:SCALE             - Column scale/decimal digits if applicable
     *    - ARROW:FLIGHT:SQL:IS_AUTO_INCREMENT - "1" indicates if the column is auto incremented, "0" otherwise.
     *    - ARROW:FLIGHT:SQL:IS_CASE_SENSITIVE - "1" indicates if the column is case-sensitive, "0" otherwise.
     *    - ARROW:FLIGHT:SQL:IS_READ_ONLY      - "1" indicates if the column is read only, "0" otherwise.
     *    - ARROW:FLIGHT:SQL:IS_SEARCHABLE     - "1" indicates if the column is searchable via WHERE clause, "0" otherwise.
     *
     *    If the schema is retrieved after parameter values have been bound with DoPut, then the server should account
     *    for the parameters when determining the schema.
     *  - DoPut: bind parameter values. All of the bound parameter sets will be executed as a single atomic execution.
     *  - GetFlightInfo: execute the prepared statement instance.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.CommandPreparedStatementQuery}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.CommandPreparedStatementQuery)
        org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQueryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandPreparedStatementQuery_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandPreparedStatementQuery_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        preparedStatementHandle_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandPreparedStatementQuery_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery build() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery result = new org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.preparedStatementHandle_ = preparedStatementHandle_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery.getDefaultInstance()) return this;
        if (other.getPreparedStatementHandle() != com.google.protobuf.ByteString.EMPTY) {
          setPreparedStatementHandle(other.getPreparedStatementHandle());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                preparedStatementHandle_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.ByteString preparedStatementHandle_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * Opaque handle for the prepared statement on the server.
       * </pre>
       *
       * <code>bytes prepared_statement_handle = 1;</code>
       * @return The preparedStatementHandle.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getPreparedStatementHandle() {
        return preparedStatementHandle_;
      }
      /**
       * <pre>
       * Opaque handle for the prepared statement on the server.
       * </pre>
       *
       * <code>bytes prepared_statement_handle = 1;</code>
       * @param value The preparedStatementHandle to set.
       * @return This builder for chaining.
       */
      public Builder setPreparedStatementHandle(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        preparedStatementHandle_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Opaque handle for the prepared statement on the server.
       * </pre>
       *
       * <code>bytes prepared_statement_handle = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPreparedStatementHandle() {
        bitField0_ = (bitField0_ & ~0x00000001);
        preparedStatementHandle_ = getDefaultInstance().getPreparedStatementHandle();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.CommandPreparedStatementQuery)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.CommandPreparedStatementQuery)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CommandPreparedStatementQuery>
        PARSER = new com.google.protobuf.AbstractParser<CommandPreparedStatementQuery>() {
      @java.lang.Override
      public CommandPreparedStatementQuery parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CommandPreparedStatementQuery> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CommandPreparedStatementQuery> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementQuery getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CommandStatementUpdateOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.CommandStatementUpdate)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The SQL syntax.
     * </pre>
     *
     * <code>string query = 1;</code>
     * @return The query.
     */
    java.lang.String getQuery();
    /**
     * <pre>
     * The SQL syntax.
     * </pre>
     *
     * <code>string query = 1;</code>
     * @return The bytes for query.
     */
    com.google.protobuf.ByteString
        getQueryBytes();

    /**
     * <pre>
     * Include the query as part of this transaction (if unset, the query is auto-committed).
     * </pre>
     *
     * <code>optional bytes transaction_id = 2;</code>
     * @return Whether the transactionId field is set.
     */
    boolean hasTransactionId();
    /**
     * <pre>
     * Include the query as part of this transaction (if unset, the query is auto-committed).
     * </pre>
     *
     * <code>optional bytes transaction_id = 2;</code>
     * @return The transactionId.
     */
    com.google.protobuf.ByteString getTransactionId();
  }
  /**
   * <pre>
   *
   * Represents a SQL update query. Used in the command member of FlightDescriptor
   * for the RPC call DoPut to cause the server to execute the included SQL update.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.CommandStatementUpdate}
   */
  public static final class CommandStatementUpdate extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.CommandStatementUpdate)
      CommandStatementUpdateOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CommandStatementUpdate.newBuilder() to construct.
    private CommandStatementUpdate(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CommandStatementUpdate() {
      query_ = "";
      transactionId_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CommandStatementUpdate();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementUpdate_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementUpdate_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate.Builder.class);
    }

    private int bitField0_;
    public static final int QUERY_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object query_ = "";
    /**
     * <pre>
     * The SQL syntax.
     * </pre>
     *
     * <code>string query = 1;</code>
     * @return The query.
     */
    @java.lang.Override
    public java.lang.String getQuery() {
      java.lang.Object ref = query_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        query_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The SQL syntax.
     * </pre>
     *
     * <code>string query = 1;</code>
     * @return The bytes for query.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getQueryBytes() {
      java.lang.Object ref = query_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        query_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TRANSACTION_ID_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString transactionId_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * Include the query as part of this transaction (if unset, the query is auto-committed).
     * </pre>
     *
     * <code>optional bytes transaction_id = 2;</code>
     * @return Whether the transactionId field is set.
     */
    @java.lang.Override
    public boolean hasTransactionId() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Include the query as part of this transaction (if unset, the query is auto-committed).
     * </pre>
     *
     * <code>optional bytes transaction_id = 2;</code>
     * @return The transactionId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getTransactionId() {
      return transactionId_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(query_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, query_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeBytes(2, transactionId_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(query_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, query_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, transactionId_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate other = (org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate) obj;

      if (!getQuery()
          .equals(other.getQuery())) return false;
      if (hasTransactionId() != other.hasTransactionId()) return false;
      if (hasTransactionId()) {
        if (!getTransactionId()
            .equals(other.getTransactionId())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + QUERY_FIELD_NUMBER;
      hash = (53 * hash) + getQuery().hashCode();
      if (hasTransactionId()) {
        hash = (37 * hash) + TRANSACTION_ID_FIELD_NUMBER;
        hash = (53 * hash) + getTransactionId().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Represents a SQL update query. Used in the command member of FlightDescriptor
     * for the RPC call DoPut to cause the server to execute the included SQL update.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.CommandStatementUpdate}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.CommandStatementUpdate)
        org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdateOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementUpdate_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementUpdate_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        query_ = "";
        transactionId_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementUpdate_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate build() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate result = new org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.query_ = query_;
        }
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.transactionId_ = transactionId_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate.getDefaultInstance()) return this;
        if (!other.getQuery().isEmpty()) {
          query_ = other.query_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasTransactionId()) {
          setTransactionId(other.getTransactionId());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                query_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                transactionId_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object query_ = "";
      /**
       * <pre>
       * The SQL syntax.
       * </pre>
       *
       * <code>string query = 1;</code>
       * @return The query.
       */
      public java.lang.String getQuery() {
        java.lang.Object ref = query_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          query_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The SQL syntax.
       * </pre>
       *
       * <code>string query = 1;</code>
       * @return The bytes for query.
       */
      public com.google.protobuf.ByteString
          getQueryBytes() {
        java.lang.Object ref = query_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          query_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The SQL syntax.
       * </pre>
       *
       * <code>string query = 1;</code>
       * @param value The query to set.
       * @return This builder for chaining.
       */
      public Builder setQuery(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        query_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The SQL syntax.
       * </pre>
       *
       * <code>string query = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearQuery() {
        query_ = getDefaultInstance().getQuery();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The SQL syntax.
       * </pre>
       *
       * <code>string query = 1;</code>
       * @param value The bytes for query to set.
       * @return This builder for chaining.
       */
      public Builder setQueryBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        query_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString transactionId_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * Include the query as part of this transaction (if unset, the query is auto-committed).
       * </pre>
       *
       * <code>optional bytes transaction_id = 2;</code>
       * @return Whether the transactionId field is set.
       */
      @java.lang.Override
      public boolean hasTransactionId() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Include the query as part of this transaction (if unset, the query is auto-committed).
       * </pre>
       *
       * <code>optional bytes transaction_id = 2;</code>
       * @return The transactionId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getTransactionId() {
        return transactionId_;
      }
      /**
       * <pre>
       * Include the query as part of this transaction (if unset, the query is auto-committed).
       * </pre>
       *
       * <code>optional bytes transaction_id = 2;</code>
       * @param value The transactionId to set.
       * @return This builder for chaining.
       */
      public Builder setTransactionId(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        transactionId_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Include the query as part of this transaction (if unset, the query is auto-committed).
       * </pre>
       *
       * <code>optional bytes transaction_id = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTransactionId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        transactionId_ = getDefaultInstance().getTransactionId();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.CommandStatementUpdate)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.CommandStatementUpdate)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CommandStatementUpdate>
        PARSER = new com.google.protobuf.AbstractParser<CommandStatementUpdate>() {
      @java.lang.Override
      public CommandStatementUpdate parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CommandStatementUpdate> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CommandStatementUpdate> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementUpdate getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CommandPreparedStatementUpdateOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.CommandPreparedStatementUpdate)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Opaque handle for the prepared statement on the server.
     * </pre>
     *
     * <code>bytes prepared_statement_handle = 1;</code>
     * @return The preparedStatementHandle.
     */
    com.google.protobuf.ByteString getPreparedStatementHandle();
  }
  /**
   * <pre>
   *
   * Represents a SQL update query. Used in the command member of FlightDescriptor
   * for the RPC call DoPut to cause the server to execute the included
   * prepared statement handle as an update.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.CommandPreparedStatementUpdate}
   */
  public static final class CommandPreparedStatementUpdate extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.CommandPreparedStatementUpdate)
      CommandPreparedStatementUpdateOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CommandPreparedStatementUpdate.newBuilder() to construct.
    private CommandPreparedStatementUpdate(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CommandPreparedStatementUpdate() {
      preparedStatementHandle_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CommandPreparedStatementUpdate();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandPreparedStatementUpdate_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandPreparedStatementUpdate_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate.Builder.class);
    }

    public static final int PREPARED_STATEMENT_HANDLE_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString preparedStatementHandle_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * Opaque handle for the prepared statement on the server.
     * </pre>
     *
     * <code>bytes prepared_statement_handle = 1;</code>
     * @return The preparedStatementHandle.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getPreparedStatementHandle() {
      return preparedStatementHandle_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!preparedStatementHandle_.isEmpty()) {
        output.writeBytes(1, preparedStatementHandle_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!preparedStatementHandle_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, preparedStatementHandle_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate other = (org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate) obj;

      if (!getPreparedStatementHandle()
          .equals(other.getPreparedStatementHandle())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + PREPARED_STATEMENT_HANDLE_FIELD_NUMBER;
      hash = (53 * hash) + getPreparedStatementHandle().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Represents a SQL update query. Used in the command member of FlightDescriptor
     * for the RPC call DoPut to cause the server to execute the included
     * prepared statement handle as an update.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.CommandPreparedStatementUpdate}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.CommandPreparedStatementUpdate)
        org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdateOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandPreparedStatementUpdate_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandPreparedStatementUpdate_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        preparedStatementHandle_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandPreparedStatementUpdate_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate build() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate result = new org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.preparedStatementHandle_ = preparedStatementHandle_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate.getDefaultInstance()) return this;
        if (other.getPreparedStatementHandle() != com.google.protobuf.ByteString.EMPTY) {
          setPreparedStatementHandle(other.getPreparedStatementHandle());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                preparedStatementHandle_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.ByteString preparedStatementHandle_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * Opaque handle for the prepared statement on the server.
       * </pre>
       *
       * <code>bytes prepared_statement_handle = 1;</code>
       * @return The preparedStatementHandle.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getPreparedStatementHandle() {
        return preparedStatementHandle_;
      }
      /**
       * <pre>
       * Opaque handle for the prepared statement on the server.
       * </pre>
       *
       * <code>bytes prepared_statement_handle = 1;</code>
       * @param value The preparedStatementHandle to set.
       * @return This builder for chaining.
       */
      public Builder setPreparedStatementHandle(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        preparedStatementHandle_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Opaque handle for the prepared statement on the server.
       * </pre>
       *
       * <code>bytes prepared_statement_handle = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPreparedStatementHandle() {
        bitField0_ = (bitField0_ & ~0x00000001);
        preparedStatementHandle_ = getDefaultInstance().getPreparedStatementHandle();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.CommandPreparedStatementUpdate)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.CommandPreparedStatementUpdate)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CommandPreparedStatementUpdate>
        PARSER = new com.google.protobuf.AbstractParser<CommandPreparedStatementUpdate>() {
      @java.lang.Override
      public CommandPreparedStatementUpdate parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CommandPreparedStatementUpdate> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CommandPreparedStatementUpdate> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.CommandPreparedStatementUpdate getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CommandStatementIngestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.CommandStatementIngest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The behavior for handling the table definition.
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions table_definition_options = 1;</code>
     * @return Whether the tableDefinitionOptions field is set.
     */
    boolean hasTableDefinitionOptions();
    /**
     * <pre>
     * The behavior for handling the table definition.
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions table_definition_options = 1;</code>
     * @return The tableDefinitionOptions.
     */
    org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions getTableDefinitionOptions();
    /**
     * <pre>
     * The behavior for handling the table definition.
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions table_definition_options = 1;</code>
     */
    org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptionsOrBuilder getTableDefinitionOptionsOrBuilder();

    /**
     * <pre>
     * The table to load data into.
     * </pre>
     *
     * <code>string table = 2;</code>
     * @return The table.
     */
    java.lang.String getTable();
    /**
     * <pre>
     * The table to load data into.
     * </pre>
     *
     * <code>string table = 2;</code>
     * @return The bytes for table.
     */
    com.google.protobuf.ByteString
        getTableBytes();

    /**
     * <pre>
     * The db_schema of the destination table to load data into. If unset, a backend-specific default may be used.
     * </pre>
     *
     * <code>optional string schema = 3;</code>
     * @return Whether the schema field is set.
     */
    boolean hasSchema();
    /**
     * <pre>
     * The db_schema of the destination table to load data into. If unset, a backend-specific default may be used.
     * </pre>
     *
     * <code>optional string schema = 3;</code>
     * @return The schema.
     */
    java.lang.String getSchema();
    /**
     * <pre>
     * The db_schema of the destination table to load data into. If unset, a backend-specific default may be used.
     * </pre>
     *
     * <code>optional string schema = 3;</code>
     * @return The bytes for schema.
     */
    com.google.protobuf.ByteString
        getSchemaBytes();

    /**
     * <pre>
     * The catalog of the destination table to load data into. If unset, a backend-specific default may be used.
     * </pre>
     *
     * <code>optional string catalog = 4;</code>
     * @return Whether the catalog field is set.
     */
    boolean hasCatalog();
    /**
     * <pre>
     * The catalog of the destination table to load data into. If unset, a backend-specific default may be used.
     * </pre>
     *
     * <code>optional string catalog = 4;</code>
     * @return The catalog.
     */
    java.lang.String getCatalog();
    /**
     * <pre>
     * The catalog of the destination table to load data into. If unset, a backend-specific default may be used.
     * </pre>
     *
     * <code>optional string catalog = 4;</code>
     * @return The bytes for catalog.
     */
    com.google.protobuf.ByteString
        getCatalogBytes();

    /**
     * <pre>
     *
     * Store ingested data in a temporary table.
     * The effect of setting temporary is to place the table in a backend-defined namespace, and to drop the table at the end of the session.
     * The namespacing may make use of a backend-specific schema and/or catalog.
     * The server should return an error if an explicit choice of schema or catalog is incompatible with the server's namespacing decision.
     * </pre>
     *
     * <code>bool temporary = 5;</code>
     * @return The temporary.
     */
    boolean getTemporary();

    /**
     * <pre>
     * Perform the ingestion as part of this transaction. If specified, results should not be committed in the event of an error/cancellation.
     * </pre>
     *
     * <code>optional bytes transaction_id = 6;</code>
     * @return Whether the transactionId field is set.
     */
    boolean hasTransactionId();
    /**
     * <pre>
     * Perform the ingestion as part of this transaction. If specified, results should not be committed in the event of an error/cancellation.
     * </pre>
     *
     * <code>optional bytes transaction_id = 6;</code>
     * @return The transactionId.
     */
    com.google.protobuf.ByteString getTransactionId();

    /**
     * <pre>
     * Backend-specific options.
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 1000;</code>
     */
    int getOptionsCount();
    /**
     * <pre>
     * Backend-specific options.
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 1000;</code>
     */
    boolean containsOptions(
        java.lang.String key);
    /**
     * Use {@link #getOptionsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getOptions();
    /**
     * <pre>
     * Backend-specific options.
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 1000;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getOptionsMap();
    /**
     * <pre>
     * Backend-specific options.
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 1000;</code>
     */
    /* nullable */
java.lang.String getOptionsOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue);
    /**
     * <pre>
     * Backend-specific options.
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 1000;</code>
     */
    java.lang.String getOptionsOrThrow(
        java.lang.String key);
  }
  /**
   * <pre>
   *
   * Represents a bulk ingestion request. Used in the command member of FlightDescriptor
   * for the the RPC call DoPut to cause the server load the contents of the stream's
   * FlightData into the target destination.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.CommandStatementIngest}
   */
  public static final class CommandStatementIngest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.CommandStatementIngest)
      CommandStatementIngestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CommandStatementIngest.newBuilder() to construct.
    private CommandStatementIngest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CommandStatementIngest() {
      table_ = "";
      schema_ = "";
      catalog_ = "";
      transactionId_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CommandStatementIngest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementIngest_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 1000:
          return internalGetOptions();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementIngest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.Builder.class);
    }

    public interface TableDefinitionOptionsOrBuilder extends
        // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions.TableNotExistOption if_not_exist = 1;</code>
       * @return The enum numeric value on the wire for ifNotExist.
       */
      int getIfNotExistValue();
      /**
       * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions.TableNotExistOption if_not_exist = 1;</code>
       * @return The ifNotExist.
       */
      org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.TableNotExistOption getIfNotExist();

      /**
       * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions.TableExistsOption if_exists = 2;</code>
       * @return The enum numeric value on the wire for ifExists.
       */
      int getIfExistsValue();
      /**
       * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions.TableExistsOption if_exists = 2;</code>
       * @return The ifExists.
       */
      org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.TableExistsOption getIfExists();
    }
    /**
     * <pre>
     * Options for table definition behavior
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions}
     */
    public static final class TableDefinitionOptions extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions)
        TableDefinitionOptionsOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use TableDefinitionOptions.newBuilder() to construct.
      private TableDefinitionOptions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private TableDefinitionOptions() {
        ifNotExist_ = 0;
        ifExists_ = 0;
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new TableDefinitionOptions();
      }

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementIngest_TableDefinitionOptions_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementIngest_TableDefinitionOptions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.Builder.class);
      }

      /**
       * <pre>
       * The action to take if the target table does not exist
       * </pre>
       *
       * Protobuf enum {@code arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions.TableNotExistOption}
       */
      public enum TableNotExistOption
          implements com.google.protobuf.ProtocolMessageEnum {
        /**
         * <pre>
         * Do not use. Servers should error if this is specified by a client.
         * </pre>
         *
         * <code>TABLE_NOT_EXIST_OPTION_UNSPECIFIED = 0;</code>
         */
        TABLE_NOT_EXIST_OPTION_UNSPECIFIED(0),
        /**
         * <pre>
         * Create the table if it does not exist
         * </pre>
         *
         * <code>TABLE_NOT_EXIST_OPTION_CREATE = 1;</code>
         */
        TABLE_NOT_EXIST_OPTION_CREATE(1),
        /**
         * <pre>
         * Fail if the table does not exist
         * </pre>
         *
         * <code>TABLE_NOT_EXIST_OPTION_FAIL = 2;</code>
         */
        TABLE_NOT_EXIST_OPTION_FAIL(2),
        UNRECOGNIZED(-1),
        ;

        /**
         * <pre>
         * Do not use. Servers should error if this is specified by a client.
         * </pre>
         *
         * <code>TABLE_NOT_EXIST_OPTION_UNSPECIFIED = 0;</code>
         */
        public static final int TABLE_NOT_EXIST_OPTION_UNSPECIFIED_VALUE = 0;
        /**
         * <pre>
         * Create the table if it does not exist
         * </pre>
         *
         * <code>TABLE_NOT_EXIST_OPTION_CREATE = 1;</code>
         */
        public static final int TABLE_NOT_EXIST_OPTION_CREATE_VALUE = 1;
        /**
         * <pre>
         * Fail if the table does not exist
         * </pre>
         *
         * <code>TABLE_NOT_EXIST_OPTION_FAIL = 2;</code>
         */
        public static final int TABLE_NOT_EXIST_OPTION_FAIL_VALUE = 2;


        public final int getNumber() {
          if (this == UNRECOGNIZED) {
            throw new java.lang.IllegalArgumentException(
                "Can't get the number of an unknown enum value.");
          }
          return value;
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static TableNotExistOption valueOf(int value) {
          return forNumber(value);
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         */
        public static TableNotExistOption forNumber(int value) {
          switch (value) {
            case 0: return TABLE_NOT_EXIST_OPTION_UNSPECIFIED;
            case 1: return TABLE_NOT_EXIST_OPTION_CREATE;
            case 2: return TABLE_NOT_EXIST_OPTION_FAIL;
            default: return null;
          }
        }

        public static com.google.protobuf.Internal.EnumLiteMap<TableNotExistOption>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static final com.google.protobuf.Internal.EnumLiteMap<
            TableNotExistOption> internalValueMap =
              new com.google.protobuf.Internal.EnumLiteMap<TableNotExistOption>() {
                public TableNotExistOption findValueByNumber(int number) {
                  return TableNotExistOption.forNumber(number);
                }
              };

        public final com.google.protobuf.Descriptors.EnumValueDescriptor
            getValueDescriptor() {
          if (this == UNRECOGNIZED) {
            throw new java.lang.IllegalStateException(
                "Can't get the descriptor of an unrecognized enum value.");
          }
          return getDescriptor().getValues().get(ordinal());
        }
        public final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptorForType() {
          return getDescriptor();
        }
        public static final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptor() {
          return org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.getDescriptor().getEnumTypes().get(0);
        }

        private static final TableNotExistOption[] VALUES = values();

        public static TableNotExistOption valueOf(
            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
          if (desc.getType() != getDescriptor()) {
            throw new java.lang.IllegalArgumentException(
              "EnumValueDescriptor is not for this type.");
          }
          if (desc.getIndex() == -1) {
            return UNRECOGNIZED;
          }
          return VALUES[desc.getIndex()];
        }

        private final int value;

        private TableNotExistOption(int value) {
          this.value = value;
        }

        // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions.TableNotExistOption)
      }

      /**
       * <pre>
       * The action to take if the target table already exists
       * </pre>
       *
       * Protobuf enum {@code arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions.TableExistsOption}
       */
      public enum TableExistsOption
          implements com.google.protobuf.ProtocolMessageEnum {
        /**
         * <pre>
         * Do not use. Servers should error if this is specified by a client.
         * </pre>
         *
         * <code>TABLE_EXISTS_OPTION_UNSPECIFIED = 0;</code>
         */
        TABLE_EXISTS_OPTION_UNSPECIFIED(0),
        /**
         * <pre>
         * Fail if the table already exists
         * </pre>
         *
         * <code>TABLE_EXISTS_OPTION_FAIL = 1;</code>
         */
        TABLE_EXISTS_OPTION_FAIL(1),
        /**
         * <pre>
         * Append to the table if it already exists
         * </pre>
         *
         * <code>TABLE_EXISTS_OPTION_APPEND = 2;</code>
         */
        TABLE_EXISTS_OPTION_APPEND(2),
        /**
         * <pre>
         * Drop and recreate the table if it already exists
         * </pre>
         *
         * <code>TABLE_EXISTS_OPTION_REPLACE = 3;</code>
         */
        TABLE_EXISTS_OPTION_REPLACE(3),
        UNRECOGNIZED(-1),
        ;

        /**
         * <pre>
         * Do not use. Servers should error if this is specified by a client.
         * </pre>
         *
         * <code>TABLE_EXISTS_OPTION_UNSPECIFIED = 0;</code>
         */
        public static final int TABLE_EXISTS_OPTION_UNSPECIFIED_VALUE = 0;
        /**
         * <pre>
         * Fail if the table already exists
         * </pre>
         *
         * <code>TABLE_EXISTS_OPTION_FAIL = 1;</code>
         */
        public static final int TABLE_EXISTS_OPTION_FAIL_VALUE = 1;
        /**
         * <pre>
         * Append to the table if it already exists
         * </pre>
         *
         * <code>TABLE_EXISTS_OPTION_APPEND = 2;</code>
         */
        public static final int TABLE_EXISTS_OPTION_APPEND_VALUE = 2;
        /**
         * <pre>
         * Drop and recreate the table if it already exists
         * </pre>
         *
         * <code>TABLE_EXISTS_OPTION_REPLACE = 3;</code>
         */
        public static final int TABLE_EXISTS_OPTION_REPLACE_VALUE = 3;


        public final int getNumber() {
          if (this == UNRECOGNIZED) {
            throw new java.lang.IllegalArgumentException(
                "Can't get the number of an unknown enum value.");
          }
          return value;
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static TableExistsOption valueOf(int value) {
          return forNumber(value);
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         */
        public static TableExistsOption forNumber(int value) {
          switch (value) {
            case 0: return TABLE_EXISTS_OPTION_UNSPECIFIED;
            case 1: return TABLE_EXISTS_OPTION_FAIL;
            case 2: return TABLE_EXISTS_OPTION_APPEND;
            case 3: return TABLE_EXISTS_OPTION_REPLACE;
            default: return null;
          }
        }

        public static com.google.protobuf.Internal.EnumLiteMap<TableExistsOption>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static final com.google.protobuf.Internal.EnumLiteMap<
            TableExistsOption> internalValueMap =
              new com.google.protobuf.Internal.EnumLiteMap<TableExistsOption>() {
                public TableExistsOption findValueByNumber(int number) {
                  return TableExistsOption.forNumber(number);
                }
              };

        public final com.google.protobuf.Descriptors.EnumValueDescriptor
            getValueDescriptor() {
          if (this == UNRECOGNIZED) {
            throw new java.lang.IllegalStateException(
                "Can't get the descriptor of an unrecognized enum value.");
          }
          return getDescriptor().getValues().get(ordinal());
        }
        public final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptorForType() {
          return getDescriptor();
        }
        public static final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptor() {
          return org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.getDescriptor().getEnumTypes().get(1);
        }

        private static final TableExistsOption[] VALUES = values();

        public static TableExistsOption valueOf(
            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
          if (desc.getType() != getDescriptor()) {
            throw new java.lang.IllegalArgumentException(
              "EnumValueDescriptor is not for this type.");
          }
          if (desc.getIndex() == -1) {
            return UNRECOGNIZED;
          }
          return VALUES[desc.getIndex()];
        }

        private final int value;

        private TableExistsOption(int value) {
          this.value = value;
        }

        // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions.TableExistsOption)
      }

      public static final int IF_NOT_EXIST_FIELD_NUMBER = 1;
      private int ifNotExist_ = 0;
      /**
       * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions.TableNotExistOption if_not_exist = 1;</code>
       * @return The enum numeric value on the wire for ifNotExist.
       */
      @java.lang.Override public int getIfNotExistValue() {
        return ifNotExist_;
      }
      /**
       * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions.TableNotExistOption if_not_exist = 1;</code>
       * @return The ifNotExist.
       */
      @java.lang.Override public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.TableNotExistOption getIfNotExist() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.TableNotExistOption result = org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.TableNotExistOption.forNumber(ifNotExist_);
        return result == null ? org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.TableNotExistOption.UNRECOGNIZED : result;
      }

      public static final int IF_EXISTS_FIELD_NUMBER = 2;
      private int ifExists_ = 0;
      /**
       * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions.TableExistsOption if_exists = 2;</code>
       * @return The enum numeric value on the wire for ifExists.
       */
      @java.lang.Override public int getIfExistsValue() {
        return ifExists_;
      }
      /**
       * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions.TableExistsOption if_exists = 2;</code>
       * @return The ifExists.
       */
      @java.lang.Override public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.TableExistsOption getIfExists() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.TableExistsOption result = org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.TableExistsOption.forNumber(ifExists_);
        return result == null ? org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.TableExistsOption.UNRECOGNIZED : result;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (ifNotExist_ != org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.TableNotExistOption.TABLE_NOT_EXIST_OPTION_UNSPECIFIED.getNumber()) {
          output.writeEnum(1, ifNotExist_);
        }
        if (ifExists_ != org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.TableExistsOption.TABLE_EXISTS_OPTION_UNSPECIFIED.getNumber()) {
          output.writeEnum(2, ifExists_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (ifNotExist_ != org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.TableNotExistOption.TABLE_NOT_EXIST_OPTION_UNSPECIFIED.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, ifNotExist_);
        }
        if (ifExists_ != org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.TableExistsOption.TABLE_EXISTS_OPTION_UNSPECIFIED.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(2, ifExists_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions)) {
          return super.equals(obj);
        }
        org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions other = (org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions) obj;

        if (ifNotExist_ != other.ifNotExist_) return false;
        if (ifExists_ != other.ifExists_) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + IF_NOT_EXIST_FIELD_NUMBER;
        hash = (53 * hash) + ifNotExist_;
        hash = (37 * hash) + IF_EXISTS_FIELD_NUMBER;
        hash = (53 * hash) + ifExists_;
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       * Options for table definition behavior
       * </pre>
       *
       * Protobuf type {@code arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions)
          org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptionsOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementIngest_TableDefinitionOptions_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementIngest_TableDefinitionOptions_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.Builder.class);
        }

        // Construct using org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          ifNotExist_ = 0;
          ifExists_ = 0;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementIngest_TableDefinitionOptions_descriptor;
        }

        @java.lang.Override
        public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions getDefaultInstanceForType() {
          return org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.getDefaultInstance();
        }

        @java.lang.Override
        public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions build() {
          org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions buildPartial() {
          org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions result = new org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.ifNotExist_ = ifNotExist_;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.ifExists_ = ifExists_;
          }
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions) {
            return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions other) {
          if (other == org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.getDefaultInstance()) return this;
          if (other.ifNotExist_ != 0) {
            setIfNotExistValue(other.getIfNotExistValue());
          }
          if (other.ifExists_ != 0) {
            setIfExistsValue(other.getIfExistsValue());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  ifNotExist_ = input.readEnum();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                case 16: {
                  ifExists_ = input.readEnum();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 16
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private int ifNotExist_ = 0;
        /**
         * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions.TableNotExistOption if_not_exist = 1;</code>
         * @return The enum numeric value on the wire for ifNotExist.
         */
        @java.lang.Override public int getIfNotExistValue() {
          return ifNotExist_;
        }
        /**
         * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions.TableNotExistOption if_not_exist = 1;</code>
         * @param value The enum numeric value on the wire for ifNotExist to set.
         * @return This builder for chaining.
         */
        public Builder setIfNotExistValue(int value) {
          ifNotExist_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions.TableNotExistOption if_not_exist = 1;</code>
         * @return The ifNotExist.
         */
        @java.lang.Override
        public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.TableNotExistOption getIfNotExist() {
          org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.TableNotExistOption result = org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.TableNotExistOption.forNumber(ifNotExist_);
          return result == null ? org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.TableNotExistOption.UNRECOGNIZED : result;
        }
        /**
         * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions.TableNotExistOption if_not_exist = 1;</code>
         * @param value The ifNotExist to set.
         * @return This builder for chaining.
         */
        public Builder setIfNotExist(org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.TableNotExistOption value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          ifNotExist_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions.TableNotExistOption if_not_exist = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearIfNotExist() {
          bitField0_ = (bitField0_ & ~0x00000001);
          ifNotExist_ = 0;
          onChanged();
          return this;
        }

        private int ifExists_ = 0;
        /**
         * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions.TableExistsOption if_exists = 2;</code>
         * @return The enum numeric value on the wire for ifExists.
         */
        @java.lang.Override public int getIfExistsValue() {
          return ifExists_;
        }
        /**
         * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions.TableExistsOption if_exists = 2;</code>
         * @param value The enum numeric value on the wire for ifExists to set.
         * @return This builder for chaining.
         */
        public Builder setIfExistsValue(int value) {
          ifExists_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions.TableExistsOption if_exists = 2;</code>
         * @return The ifExists.
         */
        @java.lang.Override
        public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.TableExistsOption getIfExists() {
          org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.TableExistsOption result = org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.TableExistsOption.forNumber(ifExists_);
          return result == null ? org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.TableExistsOption.UNRECOGNIZED : result;
        }
        /**
         * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions.TableExistsOption if_exists = 2;</code>
         * @param value The ifExists to set.
         * @return This builder for chaining.
         */
        public Builder setIfExists(org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.TableExistsOption value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000002;
          ifExists_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions.TableExistsOption if_exists = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearIfExists() {
          bitField0_ = (bitField0_ & ~0x00000002);
          ifExists_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions)
      }

      // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions)
      private static final org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions();
      }

      public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<TableDefinitionOptions>
          PARSER = new com.google.protobuf.AbstractParser<TableDefinitionOptions>() {
        @java.lang.Override
        public TableDefinitionOptions parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<TableDefinitionOptions> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<TableDefinitionOptions> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int TABLE_DEFINITION_OPTIONS_FIELD_NUMBER = 1;
    private org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions tableDefinitionOptions_;
    /**
     * <pre>
     * The behavior for handling the table definition.
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions table_definition_options = 1;</code>
     * @return Whether the tableDefinitionOptions field is set.
     */
    @java.lang.Override
    public boolean hasTableDefinitionOptions() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * The behavior for handling the table definition.
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions table_definition_options = 1;</code>
     * @return The tableDefinitionOptions.
     */
    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions getTableDefinitionOptions() {
      return tableDefinitionOptions_ == null ? org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.getDefaultInstance() : tableDefinitionOptions_;
    }
    /**
     * <pre>
     * The behavior for handling the table definition.
     * </pre>
     *
     * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions table_definition_options = 1;</code>
     */
    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptionsOrBuilder getTableDefinitionOptionsOrBuilder() {
      return tableDefinitionOptions_ == null ? org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.getDefaultInstance() : tableDefinitionOptions_;
    }

    public static final int TABLE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object table_ = "";
    /**
     * <pre>
     * The table to load data into.
     * </pre>
     *
     * <code>string table = 2;</code>
     * @return The table.
     */
    @java.lang.Override
    public java.lang.String getTable() {
      java.lang.Object ref = table_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        table_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The table to load data into.
     * </pre>
     *
     * <code>string table = 2;</code>
     * @return The bytes for table.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTableBytes() {
      java.lang.Object ref = table_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        table_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SCHEMA_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object schema_ = "";
    /**
     * <pre>
     * The db_schema of the destination table to load data into. If unset, a backend-specific default may be used.
     * </pre>
     *
     * <code>optional string schema = 3;</code>
     * @return Whether the schema field is set.
     */
    @java.lang.Override
    public boolean hasSchema() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * The db_schema of the destination table to load data into. If unset, a backend-specific default may be used.
     * </pre>
     *
     * <code>optional string schema = 3;</code>
     * @return The schema.
     */
    @java.lang.Override
    public java.lang.String getSchema() {
      java.lang.Object ref = schema_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        schema_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The db_schema of the destination table to load data into. If unset, a backend-specific default may be used.
     * </pre>
     *
     * <code>optional string schema = 3;</code>
     * @return The bytes for schema.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSchemaBytes() {
      java.lang.Object ref = schema_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        schema_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CATALOG_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object catalog_ = "";
    /**
     * <pre>
     * The catalog of the destination table to load data into. If unset, a backend-specific default may be used.
     * </pre>
     *
     * <code>optional string catalog = 4;</code>
     * @return Whether the catalog field is set.
     */
    @java.lang.Override
    public boolean hasCatalog() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * The catalog of the destination table to load data into. If unset, a backend-specific default may be used.
     * </pre>
     *
     * <code>optional string catalog = 4;</code>
     * @return The catalog.
     */
    @java.lang.Override
    public java.lang.String getCatalog() {
      java.lang.Object ref = catalog_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        catalog_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The catalog of the destination table to load data into. If unset, a backend-specific default may be used.
     * </pre>
     *
     * <code>optional string catalog = 4;</code>
     * @return The bytes for catalog.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCatalogBytes() {
      java.lang.Object ref = catalog_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        catalog_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TEMPORARY_FIELD_NUMBER = 5;
    private boolean temporary_ = false;
    /**
     * <pre>
     *
     * Store ingested data in a temporary table.
     * The effect of setting temporary is to place the table in a backend-defined namespace, and to drop the table at the end of the session.
     * The namespacing may make use of a backend-specific schema and/or catalog.
     * The server should return an error if an explicit choice of schema or catalog is incompatible with the server's namespacing decision.
     * </pre>
     *
     * <code>bool temporary = 5;</code>
     * @return The temporary.
     */
    @java.lang.Override
    public boolean getTemporary() {
      return temporary_;
    }

    public static final int TRANSACTION_ID_FIELD_NUMBER = 6;
    private com.google.protobuf.ByteString transactionId_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * Perform the ingestion as part of this transaction. If specified, results should not be committed in the event of an error/cancellation.
     * </pre>
     *
     * <code>optional bytes transaction_id = 6;</code>
     * @return Whether the transactionId field is set.
     */
    @java.lang.Override
    public boolean hasTransactionId() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Perform the ingestion as part of this transaction. If specified, results should not be committed in the event of an error/cancellation.
     * </pre>
     *
     * <code>optional bytes transaction_id = 6;</code>
     * @return The transactionId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getTransactionId() {
      return transactionId_;
    }

    public static final int OPTIONS_FIELD_NUMBER = 1000;
    private static final class OptionsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementIngest_OptionsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> options_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetOptions() {
      if (options_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            OptionsDefaultEntryHolder.defaultEntry);
      }
      return options_;
    }
    public int getOptionsCount() {
      return internalGetOptions().getMap().size();
    }
    /**
     * <pre>
     * Backend-specific options.
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 1000;</code>
     */
    @java.lang.Override
    public boolean containsOptions(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetOptions().getMap().containsKey(key);
    }
    /**
     * Use {@link #getOptionsMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getOptions() {
      return getOptionsMap();
    }
    /**
     * <pre>
     * Backend-specific options.
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 1000;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, java.lang.String> getOptionsMap() {
      return internalGetOptions().getMap();
    }
    /**
     * <pre>
     * Backend-specific options.
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 1000;</code>
     */
    @java.lang.Override
    public /* nullable */
java.lang.String getOptionsOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetOptions().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Backend-specific options.
     * </pre>
     *
     * <code>map&lt;string, string&gt; options = 1000;</code>
     */
    @java.lang.Override
    public java.lang.String getOptionsOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetOptions().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getTableDefinitionOptions());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(table_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, table_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, schema_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, catalog_);
      }
      if (temporary_ != false) {
        output.writeBool(5, temporary_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeBytes(6, transactionId_);
      }
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetOptions(),
          OptionsDefaultEntryHolder.defaultEntry,
          1000);
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getTableDefinitionOptions());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(table_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, table_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, schema_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, catalog_);
      }
      if (temporary_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, temporary_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(6, transactionId_);
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
           : internalGetOptions().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
        options__ = OptionsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1000, options__);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest other = (org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest) obj;

      if (hasTableDefinitionOptions() != other.hasTableDefinitionOptions()) return false;
      if (hasTableDefinitionOptions()) {
        if (!getTableDefinitionOptions()
            .equals(other.getTableDefinitionOptions())) return false;
      }
      if (!getTable()
          .equals(other.getTable())) return false;
      if (hasSchema() != other.hasSchema()) return false;
      if (hasSchema()) {
        if (!getSchema()
            .equals(other.getSchema())) return false;
      }
      if (hasCatalog() != other.hasCatalog()) return false;
      if (hasCatalog()) {
        if (!getCatalog()
            .equals(other.getCatalog())) return false;
      }
      if (getTemporary()
          != other.getTemporary()) return false;
      if (hasTransactionId() != other.hasTransactionId()) return false;
      if (hasTransactionId()) {
        if (!getTransactionId()
            .equals(other.getTransactionId())) return false;
      }
      if (!internalGetOptions().equals(
          other.internalGetOptions())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasTableDefinitionOptions()) {
        hash = (37 * hash) + TABLE_DEFINITION_OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getTableDefinitionOptions().hashCode();
      }
      hash = (37 * hash) + TABLE_FIELD_NUMBER;
      hash = (53 * hash) + getTable().hashCode();
      if (hasSchema()) {
        hash = (37 * hash) + SCHEMA_FIELD_NUMBER;
        hash = (53 * hash) + getSchema().hashCode();
      }
      if (hasCatalog()) {
        hash = (37 * hash) + CATALOG_FIELD_NUMBER;
        hash = (53 * hash) + getCatalog().hashCode();
      }
      hash = (37 * hash) + TEMPORARY_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getTemporary());
      if (hasTransactionId()) {
        hash = (37 * hash) + TRANSACTION_ID_FIELD_NUMBER;
        hash = (53 * hash) + getTransactionId().hashCode();
      }
      if (!internalGetOptions().getMap().isEmpty()) {
        hash = (37 * hash) + OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetOptions().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Represents a bulk ingestion request. Used in the command member of FlightDescriptor
     * for the the RPC call DoPut to cause the server load the contents of the stream's
     * FlightData into the target destination.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.CommandStatementIngest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.CommandStatementIngest)
        org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementIngest_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 1000:
            return internalGetOptions();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 1000:
            return internalGetMutableOptions();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementIngest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.class, org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTableDefinitionOptionsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        tableDefinitionOptions_ = null;
        if (tableDefinitionOptionsBuilder_ != null) {
          tableDefinitionOptionsBuilder_.dispose();
          tableDefinitionOptionsBuilder_ = null;
        }
        table_ = "";
        schema_ = "";
        catalog_ = "";
        temporary_ = false;
        transactionId_ = com.google.protobuf.ByteString.EMPTY;
        internalGetMutableOptions().clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_CommandStatementIngest_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest build() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest result = new org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.tableDefinitionOptions_ = tableDefinitionOptionsBuilder_ == null
              ? tableDefinitionOptions_
              : tableDefinitionOptionsBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.table_ = table_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.schema_ = schema_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.catalog_ = catalog_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.temporary_ = temporary_;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.transactionId_ = transactionId_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.options_ = internalGetOptions();
          result.options_.makeImmutable();
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.getDefaultInstance()) return this;
        if (other.hasTableDefinitionOptions()) {
          mergeTableDefinitionOptions(other.getTableDefinitionOptions());
        }
        if (!other.getTable().isEmpty()) {
          table_ = other.table_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasSchema()) {
          schema_ = other.schema_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasCatalog()) {
          catalog_ = other.catalog_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.getTemporary() != false) {
          setTemporary(other.getTemporary());
        }
        if (other.hasTransactionId()) {
          setTransactionId(other.getTransactionId());
        }
        internalGetMutableOptions().mergeFrom(
            other.internalGetOptions());
        bitField0_ |= 0x00000040;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getTableDefinitionOptionsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                table_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                schema_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                catalog_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 40: {
                temporary_ = input.readBool();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              case 50: {
                transactionId_ = input.readBytes();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 8002: {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
                options__ = input.readMessage(
                    OptionsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableOptions().getMutableMap().put(
                    options__.getKey(), options__.getValue());
                bitField0_ |= 0x00000040;
                break;
              } // case 8002
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions tableDefinitionOptions_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions, org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.Builder, org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptionsOrBuilder> tableDefinitionOptionsBuilder_;
      /**
       * <pre>
       * The behavior for handling the table definition.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions table_definition_options = 1;</code>
       * @return Whether the tableDefinitionOptions field is set.
       */
      public boolean hasTableDefinitionOptions() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The behavior for handling the table definition.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions table_definition_options = 1;</code>
       * @return The tableDefinitionOptions.
       */
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions getTableDefinitionOptions() {
        if (tableDefinitionOptionsBuilder_ == null) {
          return tableDefinitionOptions_ == null ? org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.getDefaultInstance() : tableDefinitionOptions_;
        } else {
          return tableDefinitionOptionsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The behavior for handling the table definition.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions table_definition_options = 1;</code>
       */
      public Builder setTableDefinitionOptions(org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions value) {
        if (tableDefinitionOptionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          tableDefinitionOptions_ = value;
        } else {
          tableDefinitionOptionsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The behavior for handling the table definition.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions table_definition_options = 1;</code>
       */
      public Builder setTableDefinitionOptions(
          org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.Builder builderForValue) {
        if (tableDefinitionOptionsBuilder_ == null) {
          tableDefinitionOptions_ = builderForValue.build();
        } else {
          tableDefinitionOptionsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The behavior for handling the table definition.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions table_definition_options = 1;</code>
       */
      public Builder mergeTableDefinitionOptions(org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions value) {
        if (tableDefinitionOptionsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            tableDefinitionOptions_ != null &&
            tableDefinitionOptions_ != org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.getDefaultInstance()) {
            getTableDefinitionOptionsBuilder().mergeFrom(value);
          } else {
            tableDefinitionOptions_ = value;
          }
        } else {
          tableDefinitionOptionsBuilder_.mergeFrom(value);
        }
        if (tableDefinitionOptions_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The behavior for handling the table definition.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions table_definition_options = 1;</code>
       */
      public Builder clearTableDefinitionOptions() {
        bitField0_ = (bitField0_ & ~0x00000001);
        tableDefinitionOptions_ = null;
        if (tableDefinitionOptionsBuilder_ != null) {
          tableDefinitionOptionsBuilder_.dispose();
          tableDefinitionOptionsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The behavior for handling the table definition.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions table_definition_options = 1;</code>
       */
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.Builder getTableDefinitionOptionsBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getTableDefinitionOptionsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The behavior for handling the table definition.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions table_definition_options = 1;</code>
       */
      public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptionsOrBuilder getTableDefinitionOptionsOrBuilder() {
        if (tableDefinitionOptionsBuilder_ != null) {
          return tableDefinitionOptionsBuilder_.getMessageOrBuilder();
        } else {
          return tableDefinitionOptions_ == null ?
              org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.getDefaultInstance() : tableDefinitionOptions_;
        }
      }
      /**
       * <pre>
       * The behavior for handling the table definition.
       * </pre>
       *
       * <code>.arrow.flight.protocol.sql.CommandStatementIngest.TableDefinitionOptions table_definition_options = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions, org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.Builder, org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptionsOrBuilder> 
          getTableDefinitionOptionsFieldBuilder() {
        if (tableDefinitionOptionsBuilder_ == null) {
          tableDefinitionOptionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions, org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptions.Builder, org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest.TableDefinitionOptionsOrBuilder>(
                  getTableDefinitionOptions(),
                  getParentForChildren(),
                  isClean());
          tableDefinitionOptions_ = null;
        }
        return tableDefinitionOptionsBuilder_;
      }

      private java.lang.Object table_ = "";
      /**
       * <pre>
       * The table to load data into.
       * </pre>
       *
       * <code>string table = 2;</code>
       * @return The table.
       */
      public java.lang.String getTable() {
        java.lang.Object ref = table_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          table_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The table to load data into.
       * </pre>
       *
       * <code>string table = 2;</code>
       * @return The bytes for table.
       */
      public com.google.protobuf.ByteString
          getTableBytes() {
        java.lang.Object ref = table_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          table_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The table to load data into.
       * </pre>
       *
       * <code>string table = 2;</code>
       * @param value The table to set.
       * @return This builder for chaining.
       */
      public Builder setTable(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        table_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The table to load data into.
       * </pre>
       *
       * <code>string table = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTable() {
        table_ = getDefaultInstance().getTable();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The table to load data into.
       * </pre>
       *
       * <code>string table = 2;</code>
       * @param value The bytes for table to set.
       * @return This builder for chaining.
       */
      public Builder setTableBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        table_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object schema_ = "";
      /**
       * <pre>
       * The db_schema of the destination table to load data into. If unset, a backend-specific default may be used.
       * </pre>
       *
       * <code>optional string schema = 3;</code>
       * @return Whether the schema field is set.
       */
      public boolean hasSchema() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * The db_schema of the destination table to load data into. If unset, a backend-specific default may be used.
       * </pre>
       *
       * <code>optional string schema = 3;</code>
       * @return The schema.
       */
      public java.lang.String getSchema() {
        java.lang.Object ref = schema_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          schema_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The db_schema of the destination table to load data into. If unset, a backend-specific default may be used.
       * </pre>
       *
       * <code>optional string schema = 3;</code>
       * @return The bytes for schema.
       */
      public com.google.protobuf.ByteString
          getSchemaBytes() {
        java.lang.Object ref = schema_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          schema_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The db_schema of the destination table to load data into. If unset, a backend-specific default may be used.
       * </pre>
       *
       * <code>optional string schema = 3;</code>
       * @param value The schema to set.
       * @return This builder for chaining.
       */
      public Builder setSchema(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        schema_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The db_schema of the destination table to load data into. If unset, a backend-specific default may be used.
       * </pre>
       *
       * <code>optional string schema = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearSchema() {
        schema_ = getDefaultInstance().getSchema();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The db_schema of the destination table to load data into. If unset, a backend-specific default may be used.
       * </pre>
       *
       * <code>optional string schema = 3;</code>
       * @param value The bytes for schema to set.
       * @return This builder for chaining.
       */
      public Builder setSchemaBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        schema_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object catalog_ = "";
      /**
       * <pre>
       * The catalog of the destination table to load data into. If unset, a backend-specific default may be used.
       * </pre>
       *
       * <code>optional string catalog = 4;</code>
       * @return Whether the catalog field is set.
       */
      public boolean hasCatalog() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * The catalog of the destination table to load data into. If unset, a backend-specific default may be used.
       * </pre>
       *
       * <code>optional string catalog = 4;</code>
       * @return The catalog.
       */
      public java.lang.String getCatalog() {
        java.lang.Object ref = catalog_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          catalog_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The catalog of the destination table to load data into. If unset, a backend-specific default may be used.
       * </pre>
       *
       * <code>optional string catalog = 4;</code>
       * @return The bytes for catalog.
       */
      public com.google.protobuf.ByteString
          getCatalogBytes() {
        java.lang.Object ref = catalog_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          catalog_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The catalog of the destination table to load data into. If unset, a backend-specific default may be used.
       * </pre>
       *
       * <code>optional string catalog = 4;</code>
       * @param value The catalog to set.
       * @return This builder for chaining.
       */
      public Builder setCatalog(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        catalog_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The catalog of the destination table to load data into. If unset, a backend-specific default may be used.
       * </pre>
       *
       * <code>optional string catalog = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearCatalog() {
        catalog_ = getDefaultInstance().getCatalog();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The catalog of the destination table to load data into. If unset, a backend-specific default may be used.
       * </pre>
       *
       * <code>optional string catalog = 4;</code>
       * @param value The bytes for catalog to set.
       * @return This builder for chaining.
       */
      public Builder setCatalogBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        catalog_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private boolean temporary_ ;
      /**
       * <pre>
       *
       * Store ingested data in a temporary table.
       * The effect of setting temporary is to place the table in a backend-defined namespace, and to drop the table at the end of the session.
       * The namespacing may make use of a backend-specific schema and/or catalog.
       * The server should return an error if an explicit choice of schema or catalog is incompatible with the server's namespacing decision.
       * </pre>
       *
       * <code>bool temporary = 5;</code>
       * @return The temporary.
       */
      @java.lang.Override
      public boolean getTemporary() {
        return temporary_;
      }
      /**
       * <pre>
       *
       * Store ingested data in a temporary table.
       * The effect of setting temporary is to place the table in a backend-defined namespace, and to drop the table at the end of the session.
       * The namespacing may make use of a backend-specific schema and/or catalog.
       * The server should return an error if an explicit choice of schema or catalog is incompatible with the server's namespacing decision.
       * </pre>
       *
       * <code>bool temporary = 5;</code>
       * @param value The temporary to set.
       * @return This builder for chaining.
       */
      public Builder setTemporary(boolean value) {

        temporary_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Store ingested data in a temporary table.
       * The effect of setting temporary is to place the table in a backend-defined namespace, and to drop the table at the end of the session.
       * The namespacing may make use of a backend-specific schema and/or catalog.
       * The server should return an error if an explicit choice of schema or catalog is incompatible with the server's namespacing decision.
       * </pre>
       *
       * <code>bool temporary = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearTemporary() {
        bitField0_ = (bitField0_ & ~0x00000010);
        temporary_ = false;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString transactionId_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * Perform the ingestion as part of this transaction. If specified, results should not be committed in the event of an error/cancellation.
       * </pre>
       *
       * <code>optional bytes transaction_id = 6;</code>
       * @return Whether the transactionId field is set.
       */
      @java.lang.Override
      public boolean hasTransactionId() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * Perform the ingestion as part of this transaction. If specified, results should not be committed in the event of an error/cancellation.
       * </pre>
       *
       * <code>optional bytes transaction_id = 6;</code>
       * @return The transactionId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getTransactionId() {
        return transactionId_;
      }
      /**
       * <pre>
       * Perform the ingestion as part of this transaction. If specified, results should not be committed in the event of an error/cancellation.
       * </pre>
       *
       * <code>optional bytes transaction_id = 6;</code>
       * @param value The transactionId to set.
       * @return This builder for chaining.
       */
      public Builder setTransactionId(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        transactionId_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Perform the ingestion as part of this transaction. If specified, results should not be committed in the event of an error/cancellation.
       * </pre>
       *
       * <code>optional bytes transaction_id = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearTransactionId() {
        bitField0_ = (bitField0_ & ~0x00000020);
        transactionId_ = getDefaultInstance().getTransactionId();
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> options_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetOptions() {
        if (options_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              OptionsDefaultEntryHolder.defaultEntry);
        }
        return options_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetMutableOptions() {
        if (options_ == null) {
          options_ = com.google.protobuf.MapField.newMapField(
              OptionsDefaultEntryHolder.defaultEntry);
        }
        if (!options_.isMutable()) {
          options_ = options_.copy();
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return options_;
      }
      public int getOptionsCount() {
        return internalGetOptions().getMap().size();
      }
      /**
       * <pre>
       * Backend-specific options.
       * </pre>
       *
       * <code>map&lt;string, string&gt; options = 1000;</code>
       */
      @java.lang.Override
      public boolean containsOptions(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetOptions().getMap().containsKey(key);
      }
      /**
       * Use {@link #getOptionsMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getOptions() {
        return getOptionsMap();
      }
      /**
       * <pre>
       * Backend-specific options.
       * </pre>
       *
       * <code>map&lt;string, string&gt; options = 1000;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, java.lang.String> getOptionsMap() {
        return internalGetOptions().getMap();
      }
      /**
       * <pre>
       * Backend-specific options.
       * </pre>
       *
       * <code>map&lt;string, string&gt; options = 1000;</code>
       */
      @java.lang.Override
      public /* nullable */
java.lang.String getOptionsOrDefault(
          java.lang.String key,
          /* nullable */
java.lang.String defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetOptions().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * Backend-specific options.
       * </pre>
       *
       * <code>map&lt;string, string&gt; options = 1000;</code>
       */
      @java.lang.Override
      public java.lang.String getOptionsOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetOptions().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearOptions() {
        bitField0_ = (bitField0_ & ~0x00000040);
        internalGetMutableOptions().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * Backend-specific options.
       * </pre>
       *
       * <code>map&lt;string, string&gt; options = 1000;</code>
       */
      public Builder removeOptions(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableOptions().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
          getMutableOptions() {
        bitField0_ |= 0x00000040;
        return internalGetMutableOptions().getMutableMap();
      }
      /**
       * <pre>
       * Backend-specific options.
       * </pre>
       *
       * <code>map&lt;string, string&gt; options = 1000;</code>
       */
      public Builder putOptions(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableOptions().getMutableMap()
            .put(key, value);
        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <pre>
       * Backend-specific options.
       * </pre>
       *
       * <code>map&lt;string, string&gt; options = 1000;</code>
       */
      public Builder putAllOptions(
          java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutableOptions().getMutableMap()
            .putAll(values);
        bitField0_ |= 0x00000040;
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.CommandStatementIngest)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.CommandStatementIngest)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CommandStatementIngest>
        PARSER = new com.google.protobuf.AbstractParser<CommandStatementIngest>() {
      @java.lang.Override
      public CommandStatementIngest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CommandStatementIngest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CommandStatementIngest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.CommandStatementIngest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DoPutUpdateResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.DoPutUpdateResult)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The number of records updated. A return value of -1 represents
     * an unknown updated record count.
     * </pre>
     *
     * <code>int64 record_count = 1;</code>
     * @return The recordCount.
     */
    long getRecordCount();
  }
  /**
   * <pre>
   *
   * Returned from the RPC call DoPut when a CommandStatementUpdate,
   * CommandPreparedStatementUpdate, or CommandStatementIngest was
   * in the request, containing results from the update.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.DoPutUpdateResult}
   */
  public static final class DoPutUpdateResult extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.DoPutUpdateResult)
      DoPutUpdateResultOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DoPutUpdateResult.newBuilder() to construct.
    private DoPutUpdateResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DoPutUpdateResult() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DoPutUpdateResult();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_DoPutUpdateResult_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_DoPutUpdateResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult.class, org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult.Builder.class);
    }

    public static final int RECORD_COUNT_FIELD_NUMBER = 1;
    private long recordCount_ = 0L;
    /**
     * <pre>
     * The number of records updated. A return value of -1 represents
     * an unknown updated record count.
     * </pre>
     *
     * <code>int64 record_count = 1;</code>
     * @return The recordCount.
     */
    @java.lang.Override
    public long getRecordCount() {
      return recordCount_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (recordCount_ != 0L) {
        output.writeInt64(1, recordCount_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (recordCount_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, recordCount_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult other = (org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult) obj;

      if (getRecordCount()
          != other.getRecordCount()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + RECORD_COUNT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getRecordCount());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Returned from the RPC call DoPut when a CommandStatementUpdate,
     * CommandPreparedStatementUpdate, or CommandStatementIngest was
     * in the request, containing results from the update.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.DoPutUpdateResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.DoPutUpdateResult)
        org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_DoPutUpdateResult_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_DoPutUpdateResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult.class, org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        recordCount_ = 0L;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_DoPutUpdateResult_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult build() {
        org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult result = new org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.recordCount_ = recordCount_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult.getDefaultInstance()) return this;
        if (other.getRecordCount() != 0L) {
          setRecordCount(other.getRecordCount());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                recordCount_ = input.readInt64();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private long recordCount_ ;
      /**
       * <pre>
       * The number of records updated. A return value of -1 represents
       * an unknown updated record count.
       * </pre>
       *
       * <code>int64 record_count = 1;</code>
       * @return The recordCount.
       */
      @java.lang.Override
      public long getRecordCount() {
        return recordCount_;
      }
      /**
       * <pre>
       * The number of records updated. A return value of -1 represents
       * an unknown updated record count.
       * </pre>
       *
       * <code>int64 record_count = 1;</code>
       * @param value The recordCount to set.
       * @return This builder for chaining.
       */
      public Builder setRecordCount(long value) {

        recordCount_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The number of records updated. A return value of -1 represents
       * an unknown updated record count.
       * </pre>
       *
       * <code>int64 record_count = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearRecordCount() {
        bitField0_ = (bitField0_ & ~0x00000001);
        recordCount_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.DoPutUpdateResult)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.DoPutUpdateResult)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<DoPutUpdateResult>
        PARSER = new com.google.protobuf.AbstractParser<DoPutUpdateResult>() {
      @java.lang.Override
      public DoPutUpdateResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<DoPutUpdateResult> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<DoPutUpdateResult> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.DoPutUpdateResult getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DoPutPreparedStatementResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.DoPutPreparedStatementResult)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Represents a (potentially updated) opaque handle for the prepared statement on the server.
     * Because the handle could potentially be updated, any previous handles for this prepared
     * statement should be considered invalid, and all subsequent requests for this prepared
     * statement must use this new handle.
     * The updated handle allows implementing query parameters with stateless services.
     * 
     * When an updated handle is not provided by the server, clients should contiue
     * using the previous handle provided by `ActionCreatePreparedStatementResonse`.
     * </pre>
     *
     * <code>optional bytes prepared_statement_handle = 1;</code>
     * @return Whether the preparedStatementHandle field is set.
     */
    boolean hasPreparedStatementHandle();
    /**
     * <pre>
     * Represents a (potentially updated) opaque handle for the prepared statement on the server.
     * Because the handle could potentially be updated, any previous handles for this prepared
     * statement should be considered invalid, and all subsequent requests for this prepared
     * statement must use this new handle.
     * The updated handle allows implementing query parameters with stateless services.
     * 
     * When an updated handle is not provided by the server, clients should contiue
     * using the previous handle provided by `ActionCreatePreparedStatementResonse`.
     * </pre>
     *
     * <code>optional bytes prepared_statement_handle = 1;</code>
     * @return The preparedStatementHandle.
     */
    com.google.protobuf.ByteString getPreparedStatementHandle();
  }
  /**
   * <pre>
   * An *optional* response returned when `DoPut` is called with `CommandPreparedStatementQuery`.
   *
   * *Note on legacy behavior*: previous versions of the protocol did not return any result for
   * this command, and that behavior should still be supported by clients. In that case, the client
   * can continue as though the fields in this message were not provided or set to sensible default values.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.DoPutPreparedStatementResult}
   */
  public static final class DoPutPreparedStatementResult extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.DoPutPreparedStatementResult)
      DoPutPreparedStatementResultOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DoPutPreparedStatementResult.newBuilder() to construct.
    private DoPutPreparedStatementResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DoPutPreparedStatementResult() {
      preparedStatementHandle_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DoPutPreparedStatementResult();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_DoPutPreparedStatementResult_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_DoPutPreparedStatementResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult.class, org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult.Builder.class);
    }

    private int bitField0_;
    public static final int PREPARED_STATEMENT_HANDLE_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString preparedStatementHandle_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * Represents a (potentially updated) opaque handle for the prepared statement on the server.
     * Because the handle could potentially be updated, any previous handles for this prepared
     * statement should be considered invalid, and all subsequent requests for this prepared
     * statement must use this new handle.
     * The updated handle allows implementing query parameters with stateless services.
     * 
     * When an updated handle is not provided by the server, clients should contiue
     * using the previous handle provided by `ActionCreatePreparedStatementResonse`.
     * </pre>
     *
     * <code>optional bytes prepared_statement_handle = 1;</code>
     * @return Whether the preparedStatementHandle field is set.
     */
    @java.lang.Override
    public boolean hasPreparedStatementHandle() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Represents a (potentially updated) opaque handle for the prepared statement on the server.
     * Because the handle could potentially be updated, any previous handles for this prepared
     * statement should be considered invalid, and all subsequent requests for this prepared
     * statement must use this new handle.
     * The updated handle allows implementing query parameters with stateless services.
     * 
     * When an updated handle is not provided by the server, clients should contiue
     * using the previous handle provided by `ActionCreatePreparedStatementResonse`.
     * </pre>
     *
     * <code>optional bytes prepared_statement_handle = 1;</code>
     * @return The preparedStatementHandle.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getPreparedStatementHandle() {
      return preparedStatementHandle_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeBytes(1, preparedStatementHandle_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, preparedStatementHandle_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult other = (org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult) obj;

      if (hasPreparedStatementHandle() != other.hasPreparedStatementHandle()) return false;
      if (hasPreparedStatementHandle()) {
        if (!getPreparedStatementHandle()
            .equals(other.getPreparedStatementHandle())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasPreparedStatementHandle()) {
        hash = (37 * hash) + PREPARED_STATEMENT_HANDLE_FIELD_NUMBER;
        hash = (53 * hash) + getPreparedStatementHandle().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * An *optional* response returned when `DoPut` is called with `CommandPreparedStatementQuery`.
     *
     * *Note on legacy behavior*: previous versions of the protocol did not return any result for
     * this command, and that behavior should still be supported by clients. In that case, the client
     * can continue as though the fields in this message were not provided or set to sensible default values.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.DoPutPreparedStatementResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.DoPutPreparedStatementResult)
        org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_DoPutPreparedStatementResult_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_DoPutPreparedStatementResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult.class, org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        preparedStatementHandle_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_DoPutPreparedStatementResult_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult build() {
        org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult result = new org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.preparedStatementHandle_ = preparedStatementHandle_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult.getDefaultInstance()) return this;
        if (other.hasPreparedStatementHandle()) {
          setPreparedStatementHandle(other.getPreparedStatementHandle());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                preparedStatementHandle_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.ByteString preparedStatementHandle_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * Represents a (potentially updated) opaque handle for the prepared statement on the server.
       * Because the handle could potentially be updated, any previous handles for this prepared
       * statement should be considered invalid, and all subsequent requests for this prepared
       * statement must use this new handle.
       * The updated handle allows implementing query parameters with stateless services.
       * 
       * When an updated handle is not provided by the server, clients should contiue
       * using the previous handle provided by `ActionCreatePreparedStatementResonse`.
       * </pre>
       *
       * <code>optional bytes prepared_statement_handle = 1;</code>
       * @return Whether the preparedStatementHandle field is set.
       */
      @java.lang.Override
      public boolean hasPreparedStatementHandle() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Represents a (potentially updated) opaque handle for the prepared statement on the server.
       * Because the handle could potentially be updated, any previous handles for this prepared
       * statement should be considered invalid, and all subsequent requests for this prepared
       * statement must use this new handle.
       * The updated handle allows implementing query parameters with stateless services.
       * 
       * When an updated handle is not provided by the server, clients should contiue
       * using the previous handle provided by `ActionCreatePreparedStatementResonse`.
       * </pre>
       *
       * <code>optional bytes prepared_statement_handle = 1;</code>
       * @return The preparedStatementHandle.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getPreparedStatementHandle() {
        return preparedStatementHandle_;
      }
      /**
       * <pre>
       * Represents a (potentially updated) opaque handle for the prepared statement on the server.
       * Because the handle could potentially be updated, any previous handles for this prepared
       * statement should be considered invalid, and all subsequent requests for this prepared
       * statement must use this new handle.
       * The updated handle allows implementing query parameters with stateless services.
       * 
       * When an updated handle is not provided by the server, clients should contiue
       * using the previous handle provided by `ActionCreatePreparedStatementResonse`.
       * </pre>
       *
       * <code>optional bytes prepared_statement_handle = 1;</code>
       * @param value The preparedStatementHandle to set.
       * @return This builder for chaining.
       */
      public Builder setPreparedStatementHandle(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        preparedStatementHandle_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Represents a (potentially updated) opaque handle for the prepared statement on the server.
       * Because the handle could potentially be updated, any previous handles for this prepared
       * statement should be considered invalid, and all subsequent requests for this prepared
       * statement must use this new handle.
       * The updated handle allows implementing query parameters with stateless services.
       * 
       * When an updated handle is not provided by the server, clients should contiue
       * using the previous handle provided by `ActionCreatePreparedStatementResonse`.
       * </pre>
       *
       * <code>optional bytes prepared_statement_handle = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPreparedStatementHandle() {
        bitField0_ = (bitField0_ & ~0x00000001);
        preparedStatementHandle_ = getDefaultInstance().getPreparedStatementHandle();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.DoPutPreparedStatementResult)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.DoPutPreparedStatementResult)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<DoPutPreparedStatementResult>
        PARSER = new com.google.protobuf.AbstractParser<DoPutPreparedStatementResult>() {
      @java.lang.Override
      public DoPutPreparedStatementResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<DoPutPreparedStatementResult> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<DoPutPreparedStatementResult> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.DoPutPreparedStatementResult getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  @java.lang.Deprecated public interface ActionCancelQueryRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.ActionCancelQueryRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The result of the GetFlightInfo RPC that initiated the query.
     * XXX(ARROW-16902): this must be a serialized FlightInfo, but is
     * rendered as bytes because Protobuf does not really support one
     * DLL using Protobuf definitions from another DLL.
     * </pre>
     *
     * <code>bytes info = 1;</code>
     * @return The info.
     */
    com.google.protobuf.ByteString getInfo();
  }
  /**
   * <pre>
   *
   * Request message for the "CancelQuery" action.
   *
   * Explicitly cancel a running query.
   *
   * This lets a single client explicitly cancel work, no matter how many clients
   * are involved/whether the query is distributed or not, given server support.
   * The transaction/statement is not rolled back; it is the application's job to
   * commit or rollback as appropriate. This only indicates the client no longer
   * wishes to read the remainder of the query results or continue submitting
   * data.
   *
   * This command is idempotent.
   *
   * This command is deprecated since 13.0.0. Use the "CancelFlightInfo"
   * action with DoAction instead.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.ActionCancelQueryRequest}
   */
  @java.lang.Deprecated public static final class ActionCancelQueryRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.ActionCancelQueryRequest)
      ActionCancelQueryRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ActionCancelQueryRequest.newBuilder() to construct.
    private ActionCancelQueryRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ActionCancelQueryRequest() {
      info_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ActionCancelQueryRequest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionCancelQueryRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionCancelQueryRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest.class, org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest.Builder.class);
    }

    public static final int INFO_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString info_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * The result of the GetFlightInfo RPC that initiated the query.
     * XXX(ARROW-16902): this must be a serialized FlightInfo, but is
     * rendered as bytes because Protobuf does not really support one
     * DLL using Protobuf definitions from another DLL.
     * </pre>
     *
     * <code>bytes info = 1;</code>
     * @return The info.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getInfo() {
      return info_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!info_.isEmpty()) {
        output.writeBytes(1, info_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!info_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, info_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest other = (org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest) obj;

      if (!getInfo()
          .equals(other.getInfo())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + INFO_FIELD_NUMBER;
      hash = (53 * hash) + getInfo().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * Request message for the "CancelQuery" action.
     *
     * Explicitly cancel a running query.
     *
     * This lets a single client explicitly cancel work, no matter how many clients
     * are involved/whether the query is distributed or not, given server support.
     * The transaction/statement is not rolled back; it is the application's job to
     * commit or rollback as appropriate. This only indicates the client no longer
     * wishes to read the remainder of the query results or continue submitting
     * data.
     *
     * This command is idempotent.
     *
     * This command is deprecated since 13.0.0. Use the "CancelFlightInfo"
     * action with DoAction instead.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.ActionCancelQueryRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.ActionCancelQueryRequest)
        org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionCancelQueryRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionCancelQueryRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest.class, org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        info_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionCancelQueryRequest_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest build() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest result = new org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.info_ = info_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest.getDefaultInstance()) return this;
        if (other.getInfo() != com.google.protobuf.ByteString.EMPTY) {
          setInfo(other.getInfo());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                info_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.ByteString info_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * The result of the GetFlightInfo RPC that initiated the query.
       * XXX(ARROW-16902): this must be a serialized FlightInfo, but is
       * rendered as bytes because Protobuf does not really support one
       * DLL using Protobuf definitions from another DLL.
       * </pre>
       *
       * <code>bytes info = 1;</code>
       * @return The info.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getInfo() {
        return info_;
      }
      /**
       * <pre>
       * The result of the GetFlightInfo RPC that initiated the query.
       * XXX(ARROW-16902): this must be a serialized FlightInfo, but is
       * rendered as bytes because Protobuf does not really support one
       * DLL using Protobuf definitions from another DLL.
       * </pre>
       *
       * <code>bytes info = 1;</code>
       * @param value The info to set.
       * @return This builder for chaining.
       */
      public Builder setInfo(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        info_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The result of the GetFlightInfo RPC that initiated the query.
       * XXX(ARROW-16902): this must be a serialized FlightInfo, but is
       * rendered as bytes because Protobuf does not really support one
       * DLL using Protobuf definitions from another DLL.
       * </pre>
       *
       * <code>bytes info = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearInfo() {
        bitField0_ = (bitField0_ & ~0x00000001);
        info_ = getDefaultInstance().getInfo();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.ActionCancelQueryRequest)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.ActionCancelQueryRequest)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ActionCancelQueryRequest>
        PARSER = new com.google.protobuf.AbstractParser<ActionCancelQueryRequest>() {
      @java.lang.Override
      public ActionCancelQueryRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ActionCancelQueryRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ActionCancelQueryRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  @java.lang.Deprecated public interface ActionCancelQueryResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.sql.ActionCancelQueryResult)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.arrow.flight.protocol.sql.ActionCancelQueryResult.CancelResult result = 1;</code>
     * @return The enum numeric value on the wire for result.
     */
    int getResultValue();
    /**
     * <code>.arrow.flight.protocol.sql.ActionCancelQueryResult.CancelResult result = 1;</code>
     * @return The result.
     */
    org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult.CancelResult getResult();
  }
  /**
   * <pre>
   *
   * The result of cancelling a query.
   *
   * The result should be wrapped in a google.protobuf.Any message.
   *
   * This command is deprecated since 13.0.0. Use the "CancelFlightInfo"
   * action with DoAction instead.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.sql.ActionCancelQueryResult}
   */
  @java.lang.Deprecated public static final class ActionCancelQueryResult extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.sql.ActionCancelQueryResult)
      ActionCancelQueryResultOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ActionCancelQueryResult.newBuilder() to construct.
    private ActionCancelQueryResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ActionCancelQueryResult() {
      result_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ActionCancelQueryResult();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionCancelQueryResult_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionCancelQueryResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult.class, org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult.Builder.class);
    }

    /**
     * Protobuf enum {@code arrow.flight.protocol.sql.ActionCancelQueryResult.CancelResult}
     */
    public enum CancelResult
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       * The cancellation status is unknown. Servers should avoid using
       * this value (send a NOT_FOUND error if the requested query is
       * not known). Clients can retry the request.
       * </pre>
       *
       * <code>CANCEL_RESULT_UNSPECIFIED = 0;</code>
       */
      CANCEL_RESULT_UNSPECIFIED(0),
      /**
       * <pre>
       * The cancellation request is complete. Subsequent requests with
       * the same payload may return CANCELLED or a NOT_FOUND error.
       * </pre>
       *
       * <code>CANCEL_RESULT_CANCELLED = 1;</code>
       */
      CANCEL_RESULT_CANCELLED(1),
      /**
       * <pre>
       * The cancellation request is in progress. The client may retry
       * the cancellation request.
       * </pre>
       *
       * <code>CANCEL_RESULT_CANCELLING = 2;</code>
       */
      CANCEL_RESULT_CANCELLING(2),
      /**
       * <pre>
       * The query is not cancellable. The client should not retry the
       * cancellation request.
       * </pre>
       *
       * <code>CANCEL_RESULT_NOT_CANCELLABLE = 3;</code>
       */
      CANCEL_RESULT_NOT_CANCELLABLE(3),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * The cancellation status is unknown. Servers should avoid using
       * this value (send a NOT_FOUND error if the requested query is
       * not known). Clients can retry the request.
       * </pre>
       *
       * <code>CANCEL_RESULT_UNSPECIFIED = 0;</code>
       */
      public static final int CANCEL_RESULT_UNSPECIFIED_VALUE = 0;
      /**
       * <pre>
       * The cancellation request is complete. Subsequent requests with
       * the same payload may return CANCELLED or a NOT_FOUND error.
       * </pre>
       *
       * <code>CANCEL_RESULT_CANCELLED = 1;</code>
       */
      public static final int CANCEL_RESULT_CANCELLED_VALUE = 1;
      /**
       * <pre>
       * The cancellation request is in progress. The client may retry
       * the cancellation request.
       * </pre>
       *
       * <code>CANCEL_RESULT_CANCELLING = 2;</code>
       */
      public static final int CANCEL_RESULT_CANCELLING_VALUE = 2;
      /**
       * <pre>
       * The query is not cancellable. The client should not retry the
       * cancellation request.
       * </pre>
       *
       * <code>CANCEL_RESULT_NOT_CANCELLABLE = 3;</code>
       */
      public static final int CANCEL_RESULT_NOT_CANCELLABLE_VALUE = 3;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static CancelResult valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static CancelResult forNumber(int value) {
        switch (value) {
          case 0: return CANCEL_RESULT_UNSPECIFIED;
          case 1: return CANCEL_RESULT_CANCELLED;
          case 2: return CANCEL_RESULT_CANCELLING;
          case 3: return CANCEL_RESULT_NOT_CANCELLABLE;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<CancelResult>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          CancelResult> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<CancelResult>() {
              public CancelResult findValueByNumber(int number) {
                return CancelResult.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalStateException(
              "Can't get the descriptor of an unrecognized enum value.");
        }
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult.getDescriptor().getEnumTypes().get(0);
      }

      private static final CancelResult[] VALUES = values();

      public static CancelResult valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private CancelResult(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.sql.ActionCancelQueryResult.CancelResult)
    }

    public static final int RESULT_FIELD_NUMBER = 1;
    private int result_ = 0;
    /**
     * <code>.arrow.flight.protocol.sql.ActionCancelQueryResult.CancelResult result = 1;</code>
     * @return The enum numeric value on the wire for result.
     */
    @java.lang.Override public int getResultValue() {
      return result_;
    }
    /**
     * <code>.arrow.flight.protocol.sql.ActionCancelQueryResult.CancelResult result = 1;</code>
     * @return The result.
     */
    @java.lang.Override public org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult.CancelResult getResult() {
      org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult.CancelResult result = org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult.CancelResult.forNumber(result_);
      return result == null ? org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult.CancelResult.UNRECOGNIZED : result;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (result_ != org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult.CancelResult.CANCEL_RESULT_UNSPECIFIED.getNumber()) {
        output.writeEnum(1, result_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (result_ != org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult.CancelResult.CANCEL_RESULT_UNSPECIFIED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, result_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult other = (org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult) obj;

      if (result_ != other.result_) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + RESULT_FIELD_NUMBER;
      hash = (53 * hash) + result_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *
     * The result of cancelling a query.
     *
     * The result should be wrapped in a google.protobuf.Any message.
     *
     * This command is deprecated since 13.0.0. Use the "CancelFlightInfo"
     * action with DoAction instead.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.sql.ActionCancelQueryResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.sql.ActionCancelQueryResult)
        org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionCancelQueryResult_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionCancelQueryResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult.class, org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult.Builder.class);
      }

      // Construct using org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        result_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.internal_static_arrow_flight_protocol_sql_ActionCancelQueryResult_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult getDefaultInstanceForType() {
        return org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult build() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult buildPartial() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult result = new org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.result_ = result_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult) {
          return mergeFrom((org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult other) {
        if (other == org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult.getDefaultInstance()) return this;
        if (other.result_ != 0) {
          setResultValue(other.getResultValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                result_ = input.readEnum();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int result_ = 0;
      /**
       * <code>.arrow.flight.protocol.sql.ActionCancelQueryResult.CancelResult result = 1;</code>
       * @return The enum numeric value on the wire for result.
       */
      @java.lang.Override public int getResultValue() {
        return result_;
      }
      /**
       * <code>.arrow.flight.protocol.sql.ActionCancelQueryResult.CancelResult result = 1;</code>
       * @param value The enum numeric value on the wire for result to set.
       * @return This builder for chaining.
       */
      public Builder setResultValue(int value) {
        result_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.arrow.flight.protocol.sql.ActionCancelQueryResult.CancelResult result = 1;</code>
       * @return The result.
       */
      @java.lang.Override
      public org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult.CancelResult getResult() {
        org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult.CancelResult result = org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult.CancelResult.forNumber(result_);
        return result == null ? org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult.CancelResult.UNRECOGNIZED : result;
      }
      /**
       * <code>.arrow.flight.protocol.sql.ActionCancelQueryResult.CancelResult result = 1;</code>
       * @param value The result to set.
       * @return This builder for chaining.
       */
      public Builder setResult(org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult.CancelResult value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        result_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.arrow.flight.protocol.sql.ActionCancelQueryResult.CancelResult result = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearResult() {
        bitField0_ = (bitField0_ & ~0x00000001);
        result_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.sql.ActionCancelQueryResult)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.sql.ActionCancelQueryResult)
    private static final org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult();
    }

    public static org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ActionCancelQueryResult>
        PARSER = new com.google.protobuf.AbstractParser<ActionCancelQueryResult>() {
      @java.lang.Override
      public ActionCancelQueryResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ActionCancelQueryResult> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ActionCancelQueryResult> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.apache.arrow.flight.sql.impl.FlightSql.ActionCancelQueryResult getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public static final int EXPERIMENTAL_FIELD_NUMBER = 1000;
  /**
   * <code>extend .google.protobuf.MessageOptions { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      com.google.protobuf.DescriptorProtos.MessageOptions,
      java.lang.Boolean> experimental = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        java.lang.Boolean.class,
        null);
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_CommandGetSqlInfo_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_CommandGetSqlInfo_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_CommandGetXdbcTypeInfo_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_CommandGetXdbcTypeInfo_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_CommandGetCatalogs_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_CommandGetCatalogs_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_CommandGetDbSchemas_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_CommandGetDbSchemas_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_CommandGetTables_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_CommandGetTables_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_CommandGetTableTypes_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_CommandGetTableTypes_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_CommandGetPrimaryKeys_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_CommandGetPrimaryKeys_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_CommandGetExportedKeys_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_CommandGetExportedKeys_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_CommandGetImportedKeys_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_CommandGetImportedKeys_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_CommandGetCrossReference_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_CommandGetCrossReference_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_ActionCreatePreparedStatementRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_ActionCreatePreparedStatementRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_SubstraitPlan_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_SubstraitPlan_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_ActionCreatePreparedSubstraitPlanRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_ActionCreatePreparedSubstraitPlanRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_ActionCreatePreparedStatementResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_ActionCreatePreparedStatementResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_ActionClosePreparedStatementRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_ActionClosePreparedStatementRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_ActionBeginTransactionRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_ActionBeginTransactionRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_ActionBeginSavepointRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_ActionBeginSavepointRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_ActionBeginTransactionResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_ActionBeginTransactionResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_ActionBeginSavepointResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_ActionBeginSavepointResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_ActionEndTransactionRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_ActionEndTransactionRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_ActionEndSavepointRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_ActionEndSavepointRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_CommandStatementQuery_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_CommandStatementQuery_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_CommandStatementSubstraitPlan_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_CommandStatementSubstraitPlan_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_TicketStatementQuery_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_TicketStatementQuery_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_CommandPreparedStatementQuery_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_CommandPreparedStatementQuery_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_CommandStatementUpdate_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_CommandStatementUpdate_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_CommandPreparedStatementUpdate_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_CommandPreparedStatementUpdate_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_CommandStatementIngest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_CommandStatementIngest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_CommandStatementIngest_TableDefinitionOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_CommandStatementIngest_TableDefinitionOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_CommandStatementIngest_OptionsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_CommandStatementIngest_OptionsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_DoPutUpdateResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_DoPutUpdateResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_DoPutPreparedStatementResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_DoPutPreparedStatementResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_ActionCancelQueryRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_ActionCancelQueryRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_sql_ActionCancelQueryResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_sql_ActionCancelQueryResult_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\017FlightSql.proto\022\031arrow.flight.protocol" +
      ".sql\032 google/protobuf/descriptor.proto\"!" +
      "\n\021CommandGetSqlInfo\022\014\n\004info\030\001 \003(\r\">\n\026Com" +
      "mandGetXdbcTypeInfo\022\026\n\tdata_type\030\001 \001(\005H\000" +
      "\210\001\001B\014\n\n_data_type\"\024\n\022CommandGetCatalogs\"" +
      "{\n\023CommandGetDbSchemas\022\024\n\007catalog\030\001 \001(\tH" +
      "\000\210\001\001\022%\n\030db_schema_filter_pattern\030\002 \001(\tH\001" +
      "\210\001\001B\n\n\010_catalogB\033\n\031_db_schema_filter_pat" +
      "tern\"\353\001\n\020CommandGetTables\022\024\n\007catalog\030\001 \001" +
      "(\tH\000\210\001\001\022%\n\030db_schema_filter_pattern\030\002 \001(" +
      "\tH\001\210\001\001\022&\n\031table_name_filter_pattern\030\003 \001(" +
      "\tH\002\210\001\001\022\023\n\013table_types\030\004 \003(\t\022\026\n\016include_s" +
      "chema\030\005 \001(\010B\n\n\010_catalogB\033\n\031_db_schema_fi" +
      "lter_patternB\034\n\032_table_name_filter_patte" +
      "rn\"\026\n\024CommandGetTableTypes\"n\n\025CommandGet" +
      "PrimaryKeys\022\024\n\007catalog\030\001 \001(\tH\000\210\001\001\022\026\n\tdb_" +
      "schema\030\002 \001(\tH\001\210\001\001\022\r\n\005table\030\003 \001(\tB\n\n\010_cat" +
      "alogB\014\n\n_db_schema\"o\n\026CommandGetExported" +
      "Keys\022\024\n\007catalog\030\001 \001(\tH\000\210\001\001\022\026\n\tdb_schema\030" +
      "\002 \001(\tH\001\210\001\001\022\r\n\005table\030\003 \001(\tB\n\n\010_catalogB\014\n" +
      "\n_db_schema\"o\n\026CommandGetImportedKeys\022\024\n" +
      "\007catalog\030\001 \001(\tH\000\210\001\001\022\026\n\tdb_schema\030\002 \001(\tH\001" +
      "\210\001\001\022\r\n\005table\030\003 \001(\tB\n\n\010_catalogB\014\n\n_db_sc" +
      "hema\"\346\001\n\030CommandGetCrossReference\022\027\n\npk_" +
      "catalog\030\001 \001(\tH\000\210\001\001\022\031\n\014pk_db_schema\030\002 \001(\t" +
      "H\001\210\001\001\022\020\n\010pk_table\030\003 \001(\t\022\027\n\nfk_catalog\030\004 " +
      "\001(\tH\002\210\001\001\022\031\n\014fk_db_schema\030\005 \001(\tH\003\210\001\001\022\020\n\010f" +
      "k_table\030\006 \001(\tB\r\n\013_pk_catalogB\017\n\r_pk_db_s" +
      "chemaB\r\n\013_fk_catalogB\017\n\r_fk_db_schema\"e\n" +
      "$ActionCreatePreparedStatementRequest\022\r\n" +
      "\005query\030\001 \001(\t\022\033\n\016transaction_id\030\002 \001(\014H\000\210\001" +
      "\001B\021\n\017_transaction_id\".\n\rSubstraitPlan\022\014\n" +
      "\004plan\030\001 \001(\014\022\017\n\007version\030\002 \001(\t\"\222\001\n(ActionC" +
      "reatePreparedSubstraitPlanRequest\0226\n\004pla" +
      "n\030\001 \001(\0132(.arrow.flight.protocol.sql.Subs" +
      "traitPlan\022\033\n\016transaction_id\030\002 \001(\014H\000\210\001\001B\021" +
      "\n\017_transaction_id\"z\n#ActionCreatePrepare" +
      "dStatementResult\022!\n\031prepared_statement_h" +
      "andle\030\001 \001(\014\022\026\n\016dataset_schema\030\002 \001(\014\022\030\n\020p" +
      "arameter_schema\030\003 \001(\014\"H\n#ActionClosePrep" +
      "aredStatementRequest\022!\n\031prepared_stateme" +
      "nt_handle\030\001 \001(\014\"\037\n\035ActionBeginTransactio" +
      "nRequest\"C\n\033ActionBeginSavepointRequest\022" +
      "\026\n\016transaction_id\030\001 \001(\014\022\014\n\004name\030\002 \001(\t\"6\n" +
      "\034ActionBeginTransactionResult\022\026\n\016transac" +
      "tion_id\030\001 \001(\014\"2\n\032ActionBeginSavepointRes" +
      "ult\022\024\n\014savepoint_id\030\001 \001(\014\"\371\001\n\033ActionEndT" +
      "ransactionRequest\022\026\n\016transaction_id\030\001 \001(" +
      "\014\022U\n\006action\030\002 \001(\0162E.arrow.flight.protoco" +
      "l.sql.ActionEndTransactionRequest.EndTra" +
      "nsaction\"k\n\016EndTransaction\022\037\n\033END_TRANSA" +
      "CTION_UNSPECIFIED\020\000\022\032\n\026END_TRANSACTION_C" +
      "OMMIT\020\001\022\034\n\030END_TRANSACTION_ROLLBACK\020\002\"\352\001" +
      "\n\031ActionEndSavepointRequest\022\024\n\014savepoint" +
      "_id\030\001 \001(\014\022Q\n\006action\030\002 \001(\0162A.arrow.flight" +
      ".protocol.sql.ActionEndSavepointRequest." +
      "EndSavepoint\"d\n\014EndSavepoint\022\035\n\031END_SAVE" +
      "POINT_UNSPECIFIED\020\000\022\031\n\025END_SAVEPOINT_REL" +
      "EASE\020\001\022\032\n\026END_SAVEPOINT_ROLLBACK\020\002\"V\n\025Co" +
      "mmandStatementQuery\022\r\n\005query\030\001 \001(\t\022\033\n\016tr" +
      "ansaction_id\030\002 \001(\014H\000\210\001\001B\021\n\017_transaction_" +
      "id\"\207\001\n\035CommandStatementSubstraitPlan\0226\n\004" +
      "plan\030\001 \001(\0132(.arrow.flight.protocol.sql.S" +
      "ubstraitPlan\022\033\n\016transaction_id\030\002 \001(\014H\000\210\001" +
      "\001B\021\n\017_transaction_id\"0\n\024TicketStatementQ" +
      "uery\022\030\n\020statement_handle\030\001 \001(\014\"B\n\035Comman" +
      "dPreparedStatementQuery\022!\n\031prepared_stat" +
      "ement_handle\030\001 \001(\014\"W\n\026CommandStatementUp" +
      "date\022\r\n\005query\030\001 \001(\t\022\033\n\016transaction_id\030\002 " +
      "\001(\014H\000\210\001\001B\021\n\017_transaction_id\"C\n\036CommandPr" +
      "eparedStatementUpdate\022!\n\031prepared_statem" +
      "ent_handle\030\001 \001(\014\"\266\007\n\026CommandStatementIng" +
      "est\022j\n\030table_definition_options\030\001 \001(\0132H." +
      "arrow.flight.protocol.sql.CommandStateme" +
      "ntIngest.TableDefinitionOptions\022\r\n\005table" +
      "\030\002 \001(\t\022\023\n\006schema\030\003 \001(\tH\000\210\001\001\022\024\n\007catalog\030\004" +
      " \001(\tH\001\210\001\001\022\021\n\ttemporary\030\005 \001(\010\022\033\n\016transact" +
      "ion_id\030\006 \001(\014H\002\210\001\001\022P\n\007options\030\350\007 \003(\0132>.ar" +
      "row.flight.protocol.sql.CommandStatement" +
      "Ingest.OptionsEntry\032\231\004\n\026TableDefinitionO" +
      "ptions\022r\n\014if_not_exist\030\001 \001(\0162\\.arrow.fli" +
      "ght.protocol.sql.CommandStatementIngest." +
      "TableDefinitionOptions.TableNotExistOpti" +
      "on\022m\n\tif_exists\030\002 \001(\0162Z.arrow.flight.pro" +
      "tocol.sql.CommandStatementIngest.TableDe" +
      "finitionOptions.TableExistsOption\"\201\001\n\023Ta" +
      "bleNotExistOption\022&\n\"TABLE_NOT_EXIST_OPT" +
      "ION_UNSPECIFIED\020\000\022!\n\035TABLE_NOT_EXIST_OPT" +
      "ION_CREATE\020\001\022\037\n\033TABLE_NOT_EXIST_OPTION_F" +
      "AIL\020\002\"\227\001\n\021TableExistsOption\022#\n\037TABLE_EXI" +
      "STS_OPTION_UNSPECIFIED\020\000\022\034\n\030TABLE_EXISTS" +
      "_OPTION_FAIL\020\001\022\036\n\032TABLE_EXISTS_OPTION_AP" +
      "PEND\020\002\022\037\n\033TABLE_EXISTS_OPTION_REPLACE\020\003\032" +
      ".\n\014OptionsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 " +
      "\001(\t:\0028\001B\t\n\007_schemaB\n\n\010_catalogB\021\n\017_trans" +
      "action_id\")\n\021DoPutUpdateResult\022\024\n\014record" +
      "_count\030\001 \001(\003\"d\n\034DoPutPreparedStatementRe" +
      "sult\022&\n\031prepared_statement_handle\030\001 \001(\014H" +
      "\000\210\001\001B\034\n\032_prepared_statement_handle\",\n\030Ac" +
      "tionCancelQueryRequest\022\014\n\004info\030\001 \001(\014:\002\030\001" +
      "\"\374\001\n\027ActionCancelQueryResult\022O\n\006result\030\001" +
      " \001(\0162?.arrow.flight.protocol.sql.ActionC" +
      "ancelQueryResult.CancelResult\"\213\001\n\014Cancel" +
      "Result\022\035\n\031CANCEL_RESULT_UNSPECIFIED\020\000\022\033\n" +
      "\027CANCEL_RESULT_CANCELLED\020\001\022\034\n\030CANCEL_RES" +
      "ULT_CANCELLING\020\002\022!\n\035CANCEL_RESULT_NOT_CA" +
      "NCELLABLE\020\003:\002\030\001*\222\031\n\007SqlInfo\022\032\n\026FLIGHT_SQ" +
      "L_SERVER_NAME\020\000\022\035\n\031FLIGHT_SQL_SERVER_VER" +
      "SION\020\001\022#\n\037FLIGHT_SQL_SERVER_ARROW_VERSIO" +
      "N\020\002\022\037\n\033FLIGHT_SQL_SERVER_READ_ONLY\020\003\022\031\n\025" +
      "FLIGHT_SQL_SERVER_SQL\020\004\022\037\n\033FLIGHT_SQL_SE" +
      "RVER_SUBSTRAIT\020\005\022+\n\'FLIGHT_SQL_SERVER_SU" +
      "BSTRAIT_MIN_VERSION\020\006\022+\n\'FLIGHT_SQL_SERV" +
      "ER_SUBSTRAIT_MAX_VERSION\020\007\022!\n\035FLIGHT_SQL" +
      "_SERVER_TRANSACTION\020\010\022\034\n\030FLIGHT_SQL_SERV" +
      "ER_CANCEL\020\t\022$\n FLIGHT_SQL_SERVER_BULK_IN" +
      "GESTION\020\n\0223\n/FLIGHT_SQL_SERVER_INGEST_TR" +
      "ANSACTIONS_SUPPORTED\020\013\022\'\n#FLIGHT_SQL_SER" +
      "VER_STATEMENT_TIMEOUT\020d\022)\n%FLIGHT_SQL_SE" +
      "RVER_TRANSACTION_TIMEOUT\020e\022\024\n\017SQL_DDL_CA" +
      "TALOG\020\364\003\022\023\n\016SQL_DDL_SCHEMA\020\365\003\022\022\n\rSQL_DDL" +
      "_TABLE\020\366\003\022\030\n\023SQL_IDENTIFIER_CASE\020\367\003\022\036\n\031S" +
      "QL_IDENTIFIER_QUOTE_CHAR\020\370\003\022\037\n\032SQL_QUOTE" +
      "D_IDENTIFIER_CASE\020\371\003\022\"\n\035SQL_ALL_TABLES_A" +
      "RE_SELECTABLE\020\372\003\022\026\n\021SQL_NULL_ORDERING\020\373\003" +
      "\022\021\n\014SQL_KEYWORDS\020\374\003\022\032\n\025SQL_NUMERIC_FUNCT" +
      "IONS\020\375\003\022\031\n\024SQL_STRING_FUNCTIONS\020\376\003\022\031\n\024SQ" +
      "L_SYSTEM_FUNCTIONS\020\377\003\022\033\n\026SQL_DATETIME_FU" +
      "NCTIONS\020\200\004\022\035\n\030SQL_SEARCH_STRING_ESCAPE\020\201" +
      "\004\022\036\n\031SQL_EXTRA_NAME_CHARACTERS\020\202\004\022!\n\034SQL" +
      "_SUPPORTS_COLUMN_ALIASING\020\203\004\022\037\n\032SQL_NULL" +
      "_PLUS_NULL_IS_NULL\020\204\004\022\031\n\024SQL_SUPPORTS_CO" +
      "NVERT\020\205\004\022)\n$SQL_SUPPORTS_TABLE_CORRELATI" +
      "ON_NAMES\020\206\004\0223\n.SQL_SUPPORTS_DIFFERENT_TA" +
      "BLE_CORRELATION_NAMES\020\207\004\022)\n$SQL_SUPPORTS" +
      "_EXPRESSIONS_IN_ORDER_BY\020\210\004\022$\n\037SQL_SUPPO" +
      "RTS_ORDER_BY_UNRELATED\020\211\004\022\033\n\026SQL_SUPPORT" +
      "ED_GROUP_BY\020\212\004\022$\n\037SQL_SUPPORTS_LIKE_ESCA" +
      "PE_CLAUSE\020\213\004\022&\n!SQL_SUPPORTS_NON_NULLABL" +
      "E_COLUMNS\020\214\004\022\032\n\025SQL_SUPPORTED_GRAMMAR\020\215\004" +
      "\022\037\n\032SQL_ANSI92_SUPPORTED_LEVEL\020\216\004\0220\n+SQL" +
      "_SUPPORTS_INTEGRITY_ENHANCEMENT_FACILITY" +
      "\020\217\004\022\"\n\035SQL_OUTER_JOINS_SUPPORT_LEVEL\020\220\004\022" +
      "\024\n\017SQL_SCHEMA_TERM\020\221\004\022\027\n\022SQL_PROCEDURE_T" +
      "ERM\020\222\004\022\025\n\020SQL_CATALOG_TERM\020\223\004\022\031\n\024SQL_CAT" +
      "ALOG_AT_START\020\224\004\022\"\n\035SQL_SCHEMAS_SUPPORTE" +
      "D_ACTIONS\020\225\004\022#\n\036SQL_CATALOGS_SUPPORTED_A" +
      "CTIONS\020\226\004\022&\n!SQL_SUPPORTED_POSITIONED_CO" +
      "MMANDS\020\227\004\022$\n\037SQL_SELECT_FOR_UPDATE_SUPPO" +
      "RTED\020\230\004\022$\n\037SQL_STORED_PROCEDURES_SUPPORT" +
      "ED\020\231\004\022\035\n\030SQL_SUPPORTED_SUBQUERIES\020\232\004\022(\n#" +
      "SQL_CORRELATED_SUBQUERIES_SUPPORTED\020\233\004\022\031" +
      "\n\024SQL_SUPPORTED_UNIONS\020\234\004\022\"\n\035SQL_MAX_BIN" +
      "ARY_LITERAL_LENGTH\020\235\004\022 \n\033SQL_MAX_CHAR_LI" +
      "TERAL_LENGTH\020\236\004\022\037\n\032SQL_MAX_COLUMN_NAME_L" +
      "ENGTH\020\237\004\022 \n\033SQL_MAX_COLUMNS_IN_GROUP_BY\020" +
      "\240\004\022\035\n\030SQL_MAX_COLUMNS_IN_INDEX\020\241\004\022 \n\033SQL" +
      "_MAX_COLUMNS_IN_ORDER_BY\020\242\004\022\036\n\031SQL_MAX_C" +
      "OLUMNS_IN_SELECT\020\243\004\022\035\n\030SQL_MAX_COLUMNS_I" +
      "N_TABLE\020\244\004\022\030\n\023SQL_MAX_CONNECTIONS\020\245\004\022\037\n\032" +
      "SQL_MAX_CURSOR_NAME_LENGTH\020\246\004\022\031\n\024SQL_MAX" +
      "_INDEX_LENGTH\020\247\004\022\036\n\031SQL_DB_SCHEMA_NAME_L" +
      "ENGTH\020\250\004\022\"\n\035SQL_MAX_PROCEDURE_NAME_LENGT" +
      "H\020\251\004\022 \n\033SQL_MAX_CATALOG_NAME_LENGTH\020\252\004\022\025" +
      "\n\020SQL_MAX_ROW_SIZE\020\253\004\022$\n\037SQL_MAX_ROW_SIZ" +
      "E_INCLUDES_BLOBS\020\254\004\022\035\n\030SQL_MAX_STATEMENT" +
      "_LENGTH\020\255\004\022\027\n\022SQL_MAX_STATEMENTS\020\256\004\022\036\n\031S" +
      "QL_MAX_TABLE_NAME_LENGTH\020\257\004\022\035\n\030SQL_MAX_T" +
      "ABLES_IN_SELECT\020\260\004\022\034\n\027SQL_MAX_USERNAME_L" +
      "ENGTH\020\261\004\022&\n!SQL_DEFAULT_TRANSACTION_ISOL" +
      "ATION\020\262\004\022\037\n\032SQL_TRANSACTIONS_SUPPORTED\020\263" +
      "\004\0220\n+SQL_SUPPORTED_TRANSACTIONS_ISOLATIO" +
      "N_LEVELS\020\264\004\0222\n-SQL_DATA_DEFINITION_CAUSE" +
      "S_TRANSACTION_COMMIT\020\265\004\0221\n,SQL_DATA_DEFI" +
      "NITIONS_IN_TRANSACTIONS_IGNORED\020\266\004\022#\n\036SQ" +
      "L_SUPPORTED_RESULT_SET_TYPES\020\267\004\022;\n6SQL_S" +
      "UPPORTED_CONCURRENCIES_FOR_RESULT_SET_UN" +
      "SPECIFIED\020\270\004\022<\n7SQL_SUPPORTED_CONCURRENC" +
      "IES_FOR_RESULT_SET_FORWARD_ONLY\020\271\004\022@\n;SQ" +
      "L_SUPPORTED_CONCURRENCIES_FOR_RESULT_SET" +
      "_SCROLL_SENSITIVE\020\272\004\022B\n=SQL_SUPPORTED_CO" +
      "NCURRENCIES_FOR_RESULT_SET_SCROLL_INSENS" +
      "ITIVE\020\273\004\022 \n\033SQL_BATCH_UPDATES_SUPPORTED\020" +
      "\274\004\022\035\n\030SQL_SAVEPOINTS_SUPPORTED\020\275\004\022#\n\036SQL" +
      "_NAMED_PARAMETERS_SUPPORTED\020\276\004\022\035\n\030SQL_LO" +
      "CATORS_UPDATE_COPY\020\277\004\0225\n0SQL_STORED_FUNC" +
      "TIONS_USING_CALL_SYNTAX_SUPPORTED\020\300\004*\221\001\n" +
      "\027SqlSupportedTransaction\022\"\n\036SQL_SUPPORTE" +
      "D_TRANSACTION_NONE\020\000\022)\n%SQL_SUPPORTED_TR" +
      "ANSACTION_TRANSACTION\020\001\022\'\n#SQL_SUPPORTED" +
      "_TRANSACTION_SAVEPOINT\020\002*\262\001\n\033SqlSupporte" +
      "dCaseSensitivity\022 \n\034SQL_CASE_SENSITIVITY" +
      "_UNKNOWN\020\000\022)\n%SQL_CASE_SENSITIVITY_CASE_" +
      "INSENSITIVE\020\001\022\"\n\036SQL_CASE_SENSITIVITY_UP" +
      "PERCASE\020\002\022\"\n\036SQL_CASE_SENSITIVITY_LOWERC" +
      "ASE\020\003*\202\001\n\017SqlNullOrdering\022\031\n\025SQL_NULLS_S" +
      "ORTED_HIGH\020\000\022\030\n\024SQL_NULLS_SORTED_LOW\020\001\022\035" +
      "\n\031SQL_NULLS_SORTED_AT_START\020\002\022\033\n\027SQL_NUL" +
      "LS_SORTED_AT_END\020\003*^\n\023SupportedSqlGramma" +
      "r\022\027\n\023SQL_MINIMUM_GRAMMAR\020\000\022\024\n\020SQL_CORE_G" +
      "RAMMAR\020\001\022\030\n\024SQL_EXTENDED_GRAMMAR\020\002*h\n\036Su" +
      "pportedAnsi92SqlGrammarLevel\022\024\n\020ANSI92_E" +
      "NTRY_SQL\020\000\022\033\n\027ANSI92_INTERMEDIATE_SQL\020\001\022" +
      "\023\n\017ANSI92_FULL_SQL\020\002*m\n\031SqlOuterJoinsSup" +
      "portLevel\022\031\n\025SQL_JOINS_UNSUPPORTED\020\000\022\033\n\027" +
      "SQL_LIMITED_OUTER_JOINS\020\001\022\030\n\024SQL_FULL_OU" +
      "TER_JOINS\020\002*Q\n\023SqlSupportedGroupBy\022\032\n\026SQ" +
      "L_GROUP_BY_UNRELATED\020\000\022\036\n\032SQL_GROUP_BY_B" +
      "EYOND_SELECT\020\001*\220\001\n\032SqlSupportedElementAc" +
      "tions\022\"\n\036SQL_ELEMENT_IN_PROCEDURE_CALLS\020" +
      "\000\022$\n SQL_ELEMENT_IN_INDEX_DEFINITIONS\020\001\022" +
      "(\n$SQL_ELEMENT_IN_PRIVILEGE_DEFINITIONS\020" +
      "\002*V\n\036SqlSupportedPositionedCommands\022\031\n\025S" +
      "QL_POSITIONED_DELETE\020\000\022\031\n\025SQL_POSITIONED" +
      "_UPDATE\020\001*\227\001\n\026SqlSupportedSubqueries\022!\n\035" +
      "SQL_SUBQUERIES_IN_COMPARISONS\020\000\022\034\n\030SQL_S" +
      "UBQUERIES_IN_EXISTS\020\001\022\031\n\025SQL_SUBQUERIES_" +
      "IN_INS\020\002\022!\n\035SQL_SUBQUERIES_IN_QUANTIFIED" +
      "S\020\003*6\n\022SqlSupportedUnions\022\r\n\tSQL_UNION\020\000" +
      "\022\021\n\rSQL_UNION_ALL\020\001*\311\001\n\034SqlTransactionIs" +
      "olationLevel\022\030\n\024SQL_TRANSACTION_NONE\020\000\022$" +
      "\n SQL_TRANSACTION_READ_UNCOMMITTED\020\001\022\"\n\036" +
      "SQL_TRANSACTION_READ_COMMITTED\020\002\022#\n\037SQL_" +
      "TRANSACTION_REPEATABLE_READ\020\003\022 \n\034SQL_TRA" +
      "NSACTION_SERIALIZABLE\020\004*\211\001\n\030SqlSupported" +
      "Transactions\022\037\n\033SQL_TRANSACTION_UNSPECIF" +
      "IED\020\000\022$\n SQL_DATA_DEFINITION_TRANSACTION" +
      "S\020\001\022&\n\"SQL_DATA_MANIPULATION_TRANSACTION" +
      "S\020\002*\274\001\n\031SqlSupportedResultSetType\022#\n\037SQL" +
      "_RESULT_SET_TYPE_UNSPECIFIED\020\000\022$\n SQL_RE" +
      "SULT_SET_TYPE_FORWARD_ONLY\020\001\022*\n&SQL_RESU" +
      "LT_SET_TYPE_SCROLL_INSENSITIVE\020\002\022(\n$SQL_" +
      "RESULT_SET_TYPE_SCROLL_SENSITIVE\020\003*\242\001\n S" +
      "qlSupportedResultSetConcurrency\022*\n&SQL_R" +
      "ESULT_SET_CONCURRENCY_UNSPECIFIED\020\000\022(\n$S" +
      "QL_RESULT_SET_CONCURRENCY_READ_ONLY\020\001\022(\n" +
      "$SQL_RESULT_SET_CONCURRENCY_UPDATABLE\020\002*" +
      "\231\004\n\022SqlSupportsConvert\022\026\n\022SQL_CONVERT_BI" +
      "GINT\020\000\022\026\n\022SQL_CONVERT_BINARY\020\001\022\023\n\017SQL_CO" +
      "NVERT_BIT\020\002\022\024\n\020SQL_CONVERT_CHAR\020\003\022\024\n\020SQL" +
      "_CONVERT_DATE\020\004\022\027\n\023SQL_CONVERT_DECIMAL\020\005" +
      "\022\025\n\021SQL_CONVERT_FLOAT\020\006\022\027\n\023SQL_CONVERT_I" +
      "NTEGER\020\007\022!\n\035SQL_CONVERT_INTERVAL_DAY_TIM" +
      "E\020\010\022#\n\037SQL_CONVERT_INTERVAL_YEAR_MONTH\020\t" +
      "\022\035\n\031SQL_CONVERT_LONGVARBINARY\020\n\022\033\n\027SQL_C" +
      "ONVERT_LONGVARCHAR\020\013\022\027\n\023SQL_CONVERT_NUME" +
      "RIC\020\014\022\024\n\020SQL_CONVERT_REAL\020\r\022\030\n\024SQL_CONVE" +
      "RT_SMALLINT\020\016\022\024\n\020SQL_CONVERT_TIME\020\017\022\031\n\025S" +
      "QL_CONVERT_TIMESTAMP\020\020\022\027\n\023SQL_CONVERT_TI" +
      "NYINT\020\021\022\031\n\025SQL_CONVERT_VARBINARY\020\022\022\027\n\023SQ" +
      "L_CONVERT_VARCHAR\020\023*\217\004\n\014XdbcDataType\022\025\n\021" +
      "XDBC_UNKNOWN_TYPE\020\000\022\r\n\tXDBC_CHAR\020\001\022\020\n\014XD" +
      "BC_NUMERIC\020\002\022\020\n\014XDBC_DECIMAL\020\003\022\020\n\014XDBC_I" +
      "NTEGER\020\004\022\021\n\rXDBC_SMALLINT\020\005\022\016\n\nXDBC_FLOA" +
      "T\020\006\022\r\n\tXDBC_REAL\020\007\022\017\n\013XDBC_DOUBLE\020\010\022\021\n\rX" +
      "DBC_DATETIME\020\t\022\021\n\rXDBC_INTERVAL\020\n\022\020\n\014XDB" +
      "C_VARCHAR\020\014\022\r\n\tXDBC_DATE\020[\022\r\n\tXDBC_TIME\020" +
      "\\\022\022\n\016XDBC_TIMESTAMP\020]\022\035\n\020XDBC_LONGVARCHA" +
      "R\020\377\377\377\377\377\377\377\377\377\001\022\030\n\013XDBC_BINARY\020\376\377\377\377\377\377\377\377\377\001\022\033" +
      "\n\016XDBC_VARBINARY\020\375\377\377\377\377\377\377\377\377\001\022\037\n\022XDBC_LONG" +
      "VARBINARY\020\374\377\377\377\377\377\377\377\377\001\022\030\n\013XDBC_BIGINT\020\373\377\377\377" +
      "\377\377\377\377\377\001\022\031\n\014XDBC_TINYINT\020\372\377\377\377\377\377\377\377\377\001\022\025\n\010XDB" +
      "C_BIT\020\371\377\377\377\377\377\377\377\377\001\022\027\n\nXDBC_WCHAR\020\370\377\377\377\377\377\377\377\377" +
      "\001\022\032\n\rXDBC_WVARCHAR\020\367\377\377\377\377\377\377\377\377\001*\243\010\n\023XdbcDa" +
      "tetimeSubcode\022\030\n\024XDBC_SUBCODE_UNKNOWN\020\000\022" +
      "\025\n\021XDBC_SUBCODE_YEAR\020\001\022\025\n\021XDBC_SUBCODE_D" +
      "ATE\020\001\022\025\n\021XDBC_SUBCODE_TIME\020\002\022\026\n\022XDBC_SUB" +
      "CODE_MONTH\020\002\022\032\n\026XDBC_SUBCODE_TIMESTAMP\020\003" +
      "\022\024\n\020XDBC_SUBCODE_DAY\020\003\022#\n\037XDBC_SUBCODE_T" +
      "IME_WITH_TIMEZONE\020\004\022\025\n\021XDBC_SUBCODE_HOUR" +
      "\020\004\022(\n$XDBC_SUBCODE_TIMESTAMP_WITH_TIMEZO" +
      "NE\020\005\022\027\n\023XDBC_SUBCODE_MINUTE\020\005\022\027\n\023XDBC_SU" +
      "BCODE_SECOND\020\006\022\036\n\032XDBC_SUBCODE_YEAR_TO_M" +
      "ONTH\020\007\022\034\n\030XDBC_SUBCODE_DAY_TO_HOUR\020\010\022\036\n\032" +
      "XDBC_SUBCODE_DAY_TO_MINUTE\020\t\022\036\n\032XDBC_SUB" +
      "CODE_DAY_TO_SECOND\020\n\022\037\n\033XDBC_SUBCODE_HOU" +
      "R_TO_MINUTE\020\013\022\037\n\033XDBC_SUBCODE_HOUR_TO_SE" +
      "COND\020\014\022!\n\035XDBC_SUBCODE_MINUTE_TO_SECOND\020" +
      "\r\022\036\n\032XDBC_SUBCODE_INTERVAL_YEAR\020e\022\037\n\033XDB" +
      "C_SUBCODE_INTERVAL_MONTH\020f\022\035\n\031XDBC_SUBCO" +
      "DE_INTERVAL_DAY\020g\022\036\n\032XDBC_SUBCODE_INTERV" +
      "AL_HOUR\020h\022 \n\034XDBC_SUBCODE_INTERVAL_MINUT" +
      "E\020i\022 \n\034XDBC_SUBCODE_INTERVAL_SECOND\020j\022\'\n" +
      "#XDBC_SUBCODE_INTERVAL_YEAR_TO_MONTH\020k\022%" +
      "\n!XDBC_SUBCODE_INTERVAL_DAY_TO_HOUR\020l\022\'\n" +
      "#XDBC_SUBCODE_INTERVAL_DAY_TO_MINUTE\020m\022\'" +
      "\n#XDBC_SUBCODE_INTERVAL_DAY_TO_SECOND\020n\022" +
      "(\n$XDBC_SUBCODE_INTERVAL_HOUR_TO_MINUTE\020" +
      "o\022(\n$XDBC_SUBCODE_INTERVAL_HOUR_TO_SECON" +
      "D\020p\022*\n&XDBC_SUBCODE_INTERVAL_MINUTE_TO_S" +
      "ECOND\020q\032\002\020\001*W\n\010Nullable\022\030\n\024NULLABILITY_N" +
      "O_NULLS\020\000\022\030\n\024NULLABILITY_NULLABLE\020\001\022\027\n\023N" +
      "ULLABILITY_UNKNOWN\020\002*a\n\nSearchable\022\023\n\017SE" +
      "ARCHABLE_NONE\020\000\022\023\n\017SEARCHABLE_CHAR\020\001\022\024\n\020" +
      "SEARCHABLE_BASIC\020\002\022\023\n\017SEARCHABLE_FULL\020\003*" +
      "\\\n\021UpdateDeleteRules\022\013\n\007CASCADE\020\000\022\014\n\010RES" +
      "TRICT\020\001\022\014\n\010SET_NULL\020\002\022\r\n\tNO_ACTION\020\003\022\017\n\013" +
      "SET_DEFAULT\020\004:6\n\014experimental\022\037.google.p" +
      "rotobuf.MessageOptions\030\350\007 \001(\010BV\n org.apa" +
      "che.arrow.flight.sql.implZ2github.com/ap" +
      "ache/arrow/go/arrow/flight/gen/flightb\006p" +
      "roto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          com.google.protobuf.DescriptorProtos.getDescriptor(),
        });
    internal_static_arrow_flight_protocol_sql_CommandGetSqlInfo_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_arrow_flight_protocol_sql_CommandGetSqlInfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_CommandGetSqlInfo_descriptor,
        new java.lang.String[] { "Info", });
    internal_static_arrow_flight_protocol_sql_CommandGetXdbcTypeInfo_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_arrow_flight_protocol_sql_CommandGetXdbcTypeInfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_CommandGetXdbcTypeInfo_descriptor,
        new java.lang.String[] { "DataType", });
    internal_static_arrow_flight_protocol_sql_CommandGetCatalogs_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_arrow_flight_protocol_sql_CommandGetCatalogs_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_CommandGetCatalogs_descriptor,
        new java.lang.String[] { });
    internal_static_arrow_flight_protocol_sql_CommandGetDbSchemas_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_arrow_flight_protocol_sql_CommandGetDbSchemas_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_CommandGetDbSchemas_descriptor,
        new java.lang.String[] { "Catalog", "DbSchemaFilterPattern", });
    internal_static_arrow_flight_protocol_sql_CommandGetTables_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_arrow_flight_protocol_sql_CommandGetTables_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_CommandGetTables_descriptor,
        new java.lang.String[] { "Catalog", "DbSchemaFilterPattern", "TableNameFilterPattern", "TableTypes", "IncludeSchema", });
    internal_static_arrow_flight_protocol_sql_CommandGetTableTypes_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_arrow_flight_protocol_sql_CommandGetTableTypes_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_CommandGetTableTypes_descriptor,
        new java.lang.String[] { });
    internal_static_arrow_flight_protocol_sql_CommandGetPrimaryKeys_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_arrow_flight_protocol_sql_CommandGetPrimaryKeys_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_CommandGetPrimaryKeys_descriptor,
        new java.lang.String[] { "Catalog", "DbSchema", "Table", });
    internal_static_arrow_flight_protocol_sql_CommandGetExportedKeys_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_arrow_flight_protocol_sql_CommandGetExportedKeys_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_CommandGetExportedKeys_descriptor,
        new java.lang.String[] { "Catalog", "DbSchema", "Table", });
    internal_static_arrow_flight_protocol_sql_CommandGetImportedKeys_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_arrow_flight_protocol_sql_CommandGetImportedKeys_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_CommandGetImportedKeys_descriptor,
        new java.lang.String[] { "Catalog", "DbSchema", "Table", });
    internal_static_arrow_flight_protocol_sql_CommandGetCrossReference_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_arrow_flight_protocol_sql_CommandGetCrossReference_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_CommandGetCrossReference_descriptor,
        new java.lang.String[] { "PkCatalog", "PkDbSchema", "PkTable", "FkCatalog", "FkDbSchema", "FkTable", });
    internal_static_arrow_flight_protocol_sql_ActionCreatePreparedStatementRequest_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_arrow_flight_protocol_sql_ActionCreatePreparedStatementRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_ActionCreatePreparedStatementRequest_descriptor,
        new java.lang.String[] { "Query", "TransactionId", });
    internal_static_arrow_flight_protocol_sql_SubstraitPlan_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_arrow_flight_protocol_sql_SubstraitPlan_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_SubstraitPlan_descriptor,
        new java.lang.String[] { "Plan", "Version", });
    internal_static_arrow_flight_protocol_sql_ActionCreatePreparedSubstraitPlanRequest_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_arrow_flight_protocol_sql_ActionCreatePreparedSubstraitPlanRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_ActionCreatePreparedSubstraitPlanRequest_descriptor,
        new java.lang.String[] { "Plan", "TransactionId", });
    internal_static_arrow_flight_protocol_sql_ActionCreatePreparedStatementResult_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_arrow_flight_protocol_sql_ActionCreatePreparedStatementResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_ActionCreatePreparedStatementResult_descriptor,
        new java.lang.String[] { "PreparedStatementHandle", "DatasetSchema", "ParameterSchema", });
    internal_static_arrow_flight_protocol_sql_ActionClosePreparedStatementRequest_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_arrow_flight_protocol_sql_ActionClosePreparedStatementRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_ActionClosePreparedStatementRequest_descriptor,
        new java.lang.String[] { "PreparedStatementHandle", });
    internal_static_arrow_flight_protocol_sql_ActionBeginTransactionRequest_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_arrow_flight_protocol_sql_ActionBeginTransactionRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_ActionBeginTransactionRequest_descriptor,
        new java.lang.String[] { });
    internal_static_arrow_flight_protocol_sql_ActionBeginSavepointRequest_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_arrow_flight_protocol_sql_ActionBeginSavepointRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_ActionBeginSavepointRequest_descriptor,
        new java.lang.String[] { "TransactionId", "Name", });
    internal_static_arrow_flight_protocol_sql_ActionBeginTransactionResult_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_arrow_flight_protocol_sql_ActionBeginTransactionResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_ActionBeginTransactionResult_descriptor,
        new java.lang.String[] { "TransactionId", });
    internal_static_arrow_flight_protocol_sql_ActionBeginSavepointResult_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_arrow_flight_protocol_sql_ActionBeginSavepointResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_ActionBeginSavepointResult_descriptor,
        new java.lang.String[] { "SavepointId", });
    internal_static_arrow_flight_protocol_sql_ActionEndTransactionRequest_descriptor =
      getDescriptor().getMessageTypes().get(19);
    internal_static_arrow_flight_protocol_sql_ActionEndTransactionRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_ActionEndTransactionRequest_descriptor,
        new java.lang.String[] { "TransactionId", "Action", });
    internal_static_arrow_flight_protocol_sql_ActionEndSavepointRequest_descriptor =
      getDescriptor().getMessageTypes().get(20);
    internal_static_arrow_flight_protocol_sql_ActionEndSavepointRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_ActionEndSavepointRequest_descriptor,
        new java.lang.String[] { "SavepointId", "Action", });
    internal_static_arrow_flight_protocol_sql_CommandStatementQuery_descriptor =
      getDescriptor().getMessageTypes().get(21);
    internal_static_arrow_flight_protocol_sql_CommandStatementQuery_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_CommandStatementQuery_descriptor,
        new java.lang.String[] { "Query", "TransactionId", });
    internal_static_arrow_flight_protocol_sql_CommandStatementSubstraitPlan_descriptor =
      getDescriptor().getMessageTypes().get(22);
    internal_static_arrow_flight_protocol_sql_CommandStatementSubstraitPlan_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_CommandStatementSubstraitPlan_descriptor,
        new java.lang.String[] { "Plan", "TransactionId", });
    internal_static_arrow_flight_protocol_sql_TicketStatementQuery_descriptor =
      getDescriptor().getMessageTypes().get(23);
    internal_static_arrow_flight_protocol_sql_TicketStatementQuery_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_TicketStatementQuery_descriptor,
        new java.lang.String[] { "StatementHandle", });
    internal_static_arrow_flight_protocol_sql_CommandPreparedStatementQuery_descriptor =
      getDescriptor().getMessageTypes().get(24);
    internal_static_arrow_flight_protocol_sql_CommandPreparedStatementQuery_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_CommandPreparedStatementQuery_descriptor,
        new java.lang.String[] { "PreparedStatementHandle", });
    internal_static_arrow_flight_protocol_sql_CommandStatementUpdate_descriptor =
      getDescriptor().getMessageTypes().get(25);
    internal_static_arrow_flight_protocol_sql_CommandStatementUpdate_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_CommandStatementUpdate_descriptor,
        new java.lang.String[] { "Query", "TransactionId", });
    internal_static_arrow_flight_protocol_sql_CommandPreparedStatementUpdate_descriptor =
      getDescriptor().getMessageTypes().get(26);
    internal_static_arrow_flight_protocol_sql_CommandPreparedStatementUpdate_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_CommandPreparedStatementUpdate_descriptor,
        new java.lang.String[] { "PreparedStatementHandle", });
    internal_static_arrow_flight_protocol_sql_CommandStatementIngest_descriptor =
      getDescriptor().getMessageTypes().get(27);
    internal_static_arrow_flight_protocol_sql_CommandStatementIngest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_CommandStatementIngest_descriptor,
        new java.lang.String[] { "TableDefinitionOptions", "Table", "Schema", "Catalog", "Temporary", "TransactionId", "Options", });
    internal_static_arrow_flight_protocol_sql_CommandStatementIngest_TableDefinitionOptions_descriptor =
      internal_static_arrow_flight_protocol_sql_CommandStatementIngest_descriptor.getNestedTypes().get(0);
    internal_static_arrow_flight_protocol_sql_CommandStatementIngest_TableDefinitionOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_CommandStatementIngest_TableDefinitionOptions_descriptor,
        new java.lang.String[] { "IfNotExist", "IfExists", });
    internal_static_arrow_flight_protocol_sql_CommandStatementIngest_OptionsEntry_descriptor =
      internal_static_arrow_flight_protocol_sql_CommandStatementIngest_descriptor.getNestedTypes().get(1);
    internal_static_arrow_flight_protocol_sql_CommandStatementIngest_OptionsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_CommandStatementIngest_OptionsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_arrow_flight_protocol_sql_DoPutUpdateResult_descriptor =
      getDescriptor().getMessageTypes().get(28);
    internal_static_arrow_flight_protocol_sql_DoPutUpdateResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_DoPutUpdateResult_descriptor,
        new java.lang.String[] { "RecordCount", });
    internal_static_arrow_flight_protocol_sql_DoPutPreparedStatementResult_descriptor =
      getDescriptor().getMessageTypes().get(29);
    internal_static_arrow_flight_protocol_sql_DoPutPreparedStatementResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_DoPutPreparedStatementResult_descriptor,
        new java.lang.String[] { "PreparedStatementHandle", });
    internal_static_arrow_flight_protocol_sql_ActionCancelQueryRequest_descriptor =
      getDescriptor().getMessageTypes().get(30);
    internal_static_arrow_flight_protocol_sql_ActionCancelQueryRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_ActionCancelQueryRequest_descriptor,
        new java.lang.String[] { "Info", });
    internal_static_arrow_flight_protocol_sql_ActionCancelQueryResult_descriptor =
      getDescriptor().getMessageTypes().get(31);
    internal_static_arrow_flight_protocol_sql_ActionCancelQueryResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_sql_ActionCancelQueryResult_descriptor,
        new java.lang.String[] { "Result", });
    experimental.internalInit(descriptor.getExtensions().get(0));
    com.google.protobuf.DescriptorProtos.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}