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]

Reply via email to