Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

[coverage] Conformance findings: METADATA-028,METADATA-035,METADATA-036,METADATA-037,METADATA-038

オープン
#479 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
48/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
静か
技術スタック
node.js, sql, typescript
領域
api, backend

調査の方向性

まず、tests 配下の coverage PR にある METADATA-028、METADATA-035、METADATA-036、METADATA-037、METADATA-038 の再現テストから始め、その後、この connector の GetPrimaryKeys、GetTables、GetCrossReference のエントリーポイントを追跡してください。期待される結果と ExecuteStatement の呼び出し回数に関するアサーションを完了基準として使用し、文書化されている Thrift と SEA の違いも含めてください。

索引モデルが issue の本文から書いたものです。

説明

Summary

Surfaced by the multi-language coverage fan-out while conformance-testing these SPEC-IDs against databricks/databricks-sql-nodejs. Each finding is committed as an expected-failure (xfail) test in the coverage PR — the test asserts the CORRECT (post-fix) behavior and stays red until THIS driver (databricks/databricks-sql-nodejs) is fixed, then flips green as a tripwire.

Findings

  • METADATA-028 [sea]: SEA getPrimaryKeys with a NULL tableName dies at the napi FFI boundary ("Failed to convert JavaScript value Undefined into rust type String") instead of raising a clean invalid-argument error (SQLSTATE 42000) naming the missing table argument
    • failing test: METADATA-028 — getPrimaryKeys with NULL tableName is rejected with an argument error [sea] (see the coverage PR diff under tests/)
  • METADATA-035 [thrift, sea]: getTables with an empty tableTypes list ([]) is treated as "match none" and returns 0 rows instead of behaving like null and matching ALL table types; same match-none defect as databricks-jdbc#1570 / databricks-sql-kernel#187
    • failing test: getTables — empty tableTypes filter matches ALL table types, like null [thrift], getTables — empty tableTypes filter matches ALL table types, like null [sea] (see the coverage PR diff under tests/)
  • METADATA-036 [sea]: SEA getPrimaryKeys/getCrossReference with a catalog set and the corresponding schema NULL dies at the napi FFI boundary instead of raising the clean client-side invalid-argument error (SQLSTATE 42000) naming the schema argument
    • failing test: METADATA-036 — getPrimaryKeys and getCrossReference reject a catalog set with a NULL schema [sea] (see the coverage PR diff under tests/)
  • METADATA-037 [sea]: SEA getCrossReference with a NULL foreign table THROWS a napi FFI conversion error instead of treating the argument as unspecified and returning an empty result (Thrift correctly returns empty)
    • failing test: METADATA-037 — getCrossReference with NULL foreign table returns empty, no error [sea] (see the coverage PR diff under tests/)
  • METADATA-038 [sea]: SEA getCrossReference with BOTH parent and foreign table NULL throws a napi FFI conversion error instead of returning an empty result per the JDBC-SEA reference, so the documented Thrift-vs-SEA divergence is not honored on the SEA side
    • failing test: METADATA-038 — getCrossReference with BOTH tables NULL: Thrift rejects, SEA returns empty [sea] (see the coverage PR diff under tests/)
  • METADATA-028: SEA getPrimaryKeys with a NULL tableName dies at the napi FFI boundary ("Failed to convert JavaScript value Undefined into rust type String") instead of raising a clean invalid-argument error (SQLSTATE 42000) naming the missing table argument; Thrift rejects it correctly
  • METADATA-035: getTables with an empty tableTypes list ([]) is treated as "match none" and returns 0 rows on BOTH thrift and sea, instead of behaving like null and matching ALL table types (fixture TABLE and VIEW both missing); same match-none defect as databricks-jdbc#1570 / databricks-sql-kernel#187
  • METADATA-036: SEA getPrimaryKeys/getCrossReference with a catalog set and the corresponding schema NULL dies at the napi FFI boundary ("Failed to convert JavaScript value Undefined into rust type String") instead of raising the clean client-side invalid-argument error (SQLSTATE 42000) naming the schema argument
  • METADATA-038: SEA getCrossReference with BOTH parent and foreign table NULL throws a napi FFI conversion error instead of returning an empty result per the JDBC-SEA reference behavior, so the documented Thrift-vs-SEA divergence is not honored on the SEA side

Reproduce & Expected

METADATA-028 — Validates GetPrimaryKeys rejects a NULL/empty table name with a clear argument error.

Reproduce:

  • Call GetPrimaryKeys with catalog and schema set but NO table name

Expected (per the shared spec):

  • [sea] exactly 0 ExecuteStatement call(s)
  • full assertion contract:
result:
- error:
    contains:
    - table
    - 'null'
- sql_state: '42000'
protocol:
  sea:
  - call_count:
      operation: ExecuteStatement
      expected: 0
METADATA-035 — Validates that GetTables treats an EMPTY table-types filter (types: []) the same as a null filter (match ALL table types), rather than matching nothing.

Reproduce:

  • Call GetObjects with tableTypes = [] (empty, non-null list)

Expected (per the shared spec):

  • GetObjects completes successfully with an empty table-types filter
  • The TABLE is returned (empty filter matched it). Assert.Contains(tables, t => t.table == testTable)
  • The VIEW is ALSO returned (empty filter matched all types, not just TABLE). Assert.Contains(tables, t => t.table == testView)
METADATA-036 — Validates that GetPrimaryKeys and GetCrossReference reject a request that specifies a catalog but leaves the corresponding schema NULL.

Reproduce:

  • Call GetPrimaryKeys with catalog + table set and schema left NULL
  • Call GetCrossReference with foreign catalog + foreign table set and foreign schema left NULL

Expected (per the shared spec):

  • [sea] exactly 0 ExecuteStatement call(s)
  • full assertion contract:
protocol:
  thrift:
  - label: get_primary_keys
    error:
      contains:
      - assertion
      - failed
      - GET_FUNCTIONS
  - label: get_cross_reference
    error:
      contains:
      - assertion
      - failed
      - GET_FUNCTIONS
  sea:
  - label: get_primary_keys
    error:
      contains:
      - schema
      - 'null'
      - catalog
  - label: get_primary_keys
    sql_state: '42000'
  - label: get_cross_reference
    error:
      contains:
      - schema
      - 'null'
      - catalog
  - label: get_cross_reference
    sql_state: '42000'
  - call_count:
      operation: ExecuteStatement
      expected: 0
METADATA-037 — Validates that GetCrossReference treats a NULL foreign table as "unspecified" and returns an empty result (no error), even when the parent (PK) side IS fully specified.

Reproduce:

  • Call GetCrossReference with the parent (PK) side fully specified — catalog, schema
    and table — but the foreign table left NULL (foreign catalog and schema set).

Expected (per the shared spec):

  • completes without an exception
  • result has exactly 0 row(s)
  • [sea] exactly 0 ExecuteStatement call(s)
METADATA-038 — Validates the one exact-match key input where Thrift and SEA deliberately disagree: GetCrossReference with BOTH the parent table and the foreign table NULL.

Reproduce:

  • Call GetCrossReference with foreign catalog and foreign schema set but NEITHER the
    parent table nor the foreign table specified.

Expected (per the shared spec):

  • [sea] exactly 0 ExecuteStatement call(s)
  • full assertion contract:
protocol:
  thrift:
  - error:
      contains:
      - foreigntable
      - parenttablename
      - 'null'
  - sql_state: '42000'
  sea:
  - no_exception: true
  - row_count: 0
  - call_count:
      operation: ExecuteStatement
      expected: 0

Context

主要言語
TypeScript
スター
36
フォーク
50
平均マージ
13時間 46分
マージ済み PR(30日)
9

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

databricks/databricks-sql-nodejs のほかの issue

databricks/databricks-sql-nodejs の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。