Feature/sap hana#4462
Conversation
ness-david-dedu
left a comment
There was a problem hiding this comment.
Non-inline issues
internal/impl/saphana/bench/ngdbc.jar — A proprietary SAP HANA JDBC driver binary is committed to the repository. The README already documents how to obtain it from the SAP Software Downloads Center; ship the instructions, not the file. Remove it and add it to .gitignore.
docs/benchmark-results/SUMMARY.md — The SAP HANA connector adds a results file (docs/benchmark-results/sap-hana.md) but SUMMARY.md is not updated. Per docs/benchmarking.md: "When adding a new benchmark suite — update the table in this document, and update docs/benchmark-results/SUMMARY.md."
docs/benchmarking.md — The "Existing Benchmarks" table in this file does not include the SAP HANA entry. The same maintenance rule applies: add a row for the new suite.
|
Commits
Review Five issues found across security and dependency classification.
|
…put config Covers: quoteIdentifier helper, tableRef/openRows escaping in input, output split into schema_name+table, go.mod direct dep, ngdbc.jar removal, SUMMARY.md and benchmarking.md updates.
84a9f04 to
f301c6a
Compare
ness-david-dedu
left a comment
There was a problem hiding this comment.
docs/benchmark-results/SUMMARY.md — SAP HANA row is added to the "At a Glance" table but there is no corresponding paragraph under the "What These Numbers Mean" section. Every other connector has one. Add a short paragraph explaining what the numbers mean and what the benchmark measured (e.g. fetch_size sensitivity, Kafka overhead, recommended config).
|
Commits Review Three code issues and one docs gap found in the updated PR.
|
|
Commits
Review Two previous rounds of findings have been resolved (DSN Secret field, poll-loop nil guard, benchmark config gaps, SQL injection, output identifier quoting). Three remaining issues:
|
…fig gaps Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… GWT logs Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
ea5af3b to
9eac8f0
Compare
|
- hwm: string→any; store raw scanned value directly instead of
fmt.Sprintf(%v) — prevents time.Time formatting to unparseable
string when incrementing_column is a TIMESTAMP
- timestamp+incrementing openRows: fall back to pure-timestamp
predicate when hwm==nil (timestampHWM advanced past an empty
poll but no incrementing value seen yet), preventing nil bind
against a numeric column on the next query
- output: prepare INSERT stmt once in Connect, use stmt.ExecContext
in WriteBatch — makes go-hdb MtInsert path explicit rather than
relying on undocumented argument-count detection
- go.mod: remove stray blank line in // indirect block
- public/components/all: restore alphabetical import order
(salesforce before saphana)
Upstream added cloud_unsupported_reason column and removed version column from internal/plugins/info.csv. Updated sap_hana entries to new schema format and reinserted in correct alphabetical position.
|
The approach here is the right one and matches the scope we defined for SAP HANA: a dedicated polling There are also a few good ideas in #4490 worth pulling in here — it grows the scope of this PR slightly, but keeps everything in one place. A few things to address before merge: Config surface
Schema metadata (ideas from #4490)
Behavior
Tests / CI
|
- IS_NULLABLE from SYS.TABLE_COLUMNS replaces blanket optional:true
- Primary-key discovery via SYS.INDEX_COLUMNS ⋈ SYS.INDEXES;
emitted as primary_key_columns JSON array metadata per message
- DECIMAL → canonical string (CanonicaliseDecimal / CanonicaliseBigDecimal)
instead of lossy float64; consistent with oracle/mysql/postgres/mssql
- numeric_mapping field: none (default) / best_fit / best_fit_eager_double
- Rename metadata keys: sap_hana_schema → database_schema,
sap_hana_table → table_name (matches agreed naming)
- poll_interval default 5s → 60s
- max_retries and partition_count config fields added
- License headers on all bench/**/main.go files
No description provided.