jiangxt2 opened a new issue, #13489: URL: https://github.com/apache/gravitino/issues/13489
### Describe the subtask Implement the first independently reviewable, governed Apache Doris batch-read slice for parent issue #12846. This subtask establishes the read-only JDBC baseline that later Doris type, native-reader, and semantic-lane contributions can extend. Its ownership boundary, opt-in mechanism, and schema contract must follow the parent issue's accepted Pre-PR decision gate; this subtask does not choose a generic, shared, dedicated-adapter, or external ownership model. Scope: - Select the specialized Doris read path only through the opt-in mechanism accepted for #12846; when it is disabled, or when another JDBC provider is used, preserve the existing generic JDBC behavior. - Use Gravitino `SELECT_TABLE` authorization before specialized Doris physical access and require a vended JDBC credential for the specialized path. Do not change the existing generic JDBC credential behavior for other providers. - Establish a physical-schema compatibility contract for ordinary scalar reads using both Doris FE schema and JDBC metadata, including column count, order, names, type families, signatures, and nullability; fail closed when the two physical sources disagree or when the logical schema drifts. - Reject unsafe connection or Spark-option overrides and keep sensitive credential, connection, and JDBC URL details out of externally visible failures and logs. - Expose a read-only specialized table. Reject `INSERT`, overwrite, streaming writes, and Spark catalog DDL through this specialized path. - Continue to use the existing Spark JDBC V2 delegate for queries whose Doris-specific native or normalized routing is not provided by this subtask. This subtask does not add Doris-specific aggregate, Top-N, limit, offset, partition, native-tablet, or special-type routing. - Document the selected Spark/Scala baseline and the external Doris Connector and MySQL Connector/J runtime dependencies without claiming the final compatibility matrix. Acceptance criteria: - Generic JDBC fallback and non-Doris providers retain their existing behavior. - A `SELECT_TABLE` denial prevents the Spark adapter from loading the specialized Doris physical schema or read delegate and from entering the specialized Doris data path. - Missing specialized-path credentials, protected-option overrides, unsafe options, logical/physical schema drift, and unsupported special types fail closed. - The specialized table rejects writes and Spark catalog DDL. - Ordinary scalar reads succeed against the targeted Doris test environment with nullable and non-nullable coverage. - Unit tests cover registration, fallback, authorization ordering, credential failures, option rejection, schema compatibility, and capability rejection; a focused Doris integration test covers the governed scalar-read path and at least one schema-drift or unsupported-special-type rejection path. - Error responses and logs do not expose credentials, JDBC URLs, or other sensitive connection details. Non-goals: - Doris `LARGEINT`, JSON, `DATETIME(p)`/`DATETIMEV2(p)`, or other special-type normalization. - The native Doris tablet reader. - Doris-specific aggregate, Top-N, global-limit, offset, or partitioned-read routing. - Batch append, Stream Load, truncate overwrite, 2PC, row-level writes, or write privileges. ### Parent issue [Feature Issue #12846](https://github.com/apache/gravitino/issues/12846) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
