Skip to content

DBX-6972 Fix silent errors when an autoincrement/default PK composite component do not have a value + Refactor#939

Open
huydo862003 wants to merge 6 commits into
masterfrom
fix/pk-null-validation
Open

DBX-6972 Fix silent errors when an autoincrement/default PK composite component do not have a value + Refactor#939
huydo862003 wants to merge 6 commits into
masterfrom
fix/pk-null-validation

Conversation

@huydo862003

@huydo862003 huydo862003 commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Problem: When a composite PK column:
    • Has increment or default constraint (so technically, null is fine).
    • Is omitted from records (no entry in records -> assume the default/unique values if increment)
      -> This causes createNullErrors/findDuplicateErrors to crash on undefined row values for the omitted PK columns (because the records do not have nodes for these entries)
  • Fix some bugs:
    1. If PK columns are missing, fallback to report errors on the entire row, instead of crash.
    2. A PK's uniqueness check should be skipped if it has an auto-increment field.
  • Refactor:
    1. Simplify signature of the records validator function which use the legacy pre-query-based compiler API.

Issue

(issue link here)

Lasting Changes (Technical)

(please list down: code changes/things that have wide-effect; new libraries/functions added that can be used by others; examples below)

  • (Added class EmailValidator to validate email address' validity)
  • (Added Tenant#is_trial? check)

Checklist

Please check directly on the box once each of these are done

  • Documentation (if necessary)
  • Lint Checks Passed
  • Unit Tests Passed
  • Coverage Tests Passed
  • Integration Tests Passed
  • Code Review

@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown

Benchmark Result

dbml-parse

suite 🏠 master 🔀 this branch change
18k 1061.08ms ±6.82% 1073.229ms ±5.45% ⚪ +1.1%
25k 1542.642ms ±4.95% 1526.657ms ±2.52% ⚪ -1.0%

@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown

Coverage Report

Commit: f19634d

Overall Coverage

Metric Coverage
Lines ✅ 84.98% (8620/10143)
Statements ✅ 82.34% (9329/11330)
Functions ✅ 87.56% (1809/2066)
Branches ⚠️ 73.27% (5566/7597)

Package Coverage

Package Lines Statements Functions Branches
dbml-cli ✅ 100.00% ✅ 100.00% ✅ 100.00% ✅ 100.00%
dbml-connector ⚠️ 64.62% ⚠️ 64.36% ⚠️ 59.53% ⚠️ 59.09%
dbml-core N/A N/A N/A N/A
dbml-parse ✅ 87.07% ✅ 84.09% ✅ 90.11% ⚠️ 74.33%

⚠️ Coverage Warnings

The following packages have coverage below 80%:

  • dbml-connector: 64.62% line coverage

Files with Coverage Below 80%

dbml-connector

9 file(s) below 80% coverage
File Lines Statements Functions Branches
src/connectors/bigquery/index.ts 0.00% 0.00% 0.00% 0.00%
src/utils/credential-loader.ts 0.00% 0.00% 0.00% 0.00%
src/utils/helpers.ts 0.00% 0.00% 0.00% 0.00%
src/connectors/snowflake/index.ts 10.56% 10.31% 0.00% 0.00%
src/utils/parseSchema.ts 46.15% 42.85% 28.57% 27.27%
src/connectors/connector.ts 66.66% 66.66% 100.00% 57.14%
src/connectors/oracle/tables.ts 71.25% 67.39% 100.00% 56.96%
src/connectors/oracle/index.ts 80.00% 80.76% 100.00% 25.00%
src/connectors/oracle/utils.ts 85.71% 85.71% 100.00% 71.42%

dbml-parse

81 file(s) below 80% coverage
File Lines Statements Functions Branches
src/compiler/queries/container/scope.ts 0.00% 0.00% 0.00% 0.00%
src/services/diagnostics/provider.ts 0.00% 0.00% 0.00% 0.00%
src/compiler/queries/pipeline/interpret.ts 11.76% 13.51% 66.66% 41.66%
src/services/suggestions/crossFile.ts 19.35% 19.44% 33.33% 10.00%
src/core/local_modules/enum/index.ts 48.00% 46.29% 57.14% 52.63%
src/core/global_modules/project/interpret.ts 52.50% 46.66% 83.33% 23.07%
src/compiler/projectLayout/layout.ts 54.16% 53.84% 75.00% 52.63%
src/compiler/queries/legacy/parse.ts 61.53% 53.33% 66.66% 25.00%
src/core/local_modules/ref/index.ts 62.50% 61.76% 100.00% 57.14%
src/core/types/report.ts 62.50% 55.55% 75.00% 57.14%
src/core/types/symbol/symbols.ts 62.69% 55.03% 59.83% 45.83%
src/core/global_modules/records/utils/data/values.ts 63.30% 55.71% 72.72% 49.28%
src/core/local_modules/tableGroup/validate.ts 64.55% 64.44% 71.42% 58.00%
src/compiler/queries/legacy/token.ts 66.66% 66.66% 66.66% 100.00%
src/core/global_modules/enum/bind.ts 66.66% 68.75% 83.33% 50.00%
src/core/local_modules/program/index.ts 66.66% 69.23% 75.00% 62.50%
src/core/global_modules/note/bind.ts 69.23% 71.42% 83.33% 50.00%
src/core/local_modules/checks/index.ts 69.23% 75.00% 100.00% 64.28%
src/core/local_modules/project/index.ts 73.07% 73.07% 100.00% 68.18%
src/compiler/queries/utils.ts 73.10% 73.38% 90.90% 51.11%
src/core/local_modules/tablePartial/validate.ts 73.12% 71.83% 79.22% 57.67%
src/core/global_modules/project/bind.ts 73.33% 75.00% 100.00% 50.00%
src/core/parser/utils.ts 73.49% 73.80% 100.00% 81.10%
src/core/local_modules/indexes/index.ts 73.68% 69.35% 63.63% 64.28%
src/core/local_modules/use/index.ts 73.91% 75.00% 75.00% 81.25%
src/core/local_modules/indexes/validate.ts 74.28% 74.66% 90.90% 56.00%
src/core/local_modules/note/index.ts 75.00% 75.86% 75.00% 72.72%
src/services/suggestions/utils/index.ts 75.00% 75.00% 100.00% 60.71%
src/core/local_modules/records/index.ts 75.60% 76.19% 100.00% 68.08%
src/core/local_modules/project/validate.ts 75.86% 75.86% 100.00% 56.25%
src/core/global_modules/indexes/bind.ts 76.31% 74.35% 90.90% 68.96%
src/core/local_modules/custom/index.ts 76.47% 76.19% 80.00% 75.00%
src/core/global_modules/records/utils/data/sqlTypes.ts 76.59% 80.64% 82.35% 72.22%
src/core/global_modules/utils.ts 76.92% 73.80% 62.50% 62.50%
src/core/global_modules/tablePartial/interpret.ts 77.89% 70.64% 78.94% 53.73%
src/core/local_modules/note/validate.ts 78.00% 76.36% 83.33% 71.05%
src/core/types/filepath.ts 79.48% 78.57% 77.77% 70.37%
src/core/global_modules/program/utils.ts 80.00% 80.00% 100.00% 70.00%
src/core/global_modules/tableGroup/bind.ts 80.00% 80.00% 100.00% 57.14%
src/core/local_modules/records/validate.ts 80.28% 80.55% 93.75% 72.30%
src/core/global_modules/indexes/interpret.ts 81.39% 72.00% 100.00% 56.66%
__tests__/utils/compiler.ts 81.42% 80.10% 100.00% 57.26%
src/core/local_modules/tablePartial/index.ts 81.48% 81.48% 100.00% 77.27%
src/core/local_modules/diagramView/validate.ts 81.57% 78.04% 84.21% 72.72%
src/core/local_modules/checks/validate.ts 81.63% 82.69% 93.75% 70.00%
src/core/global_modules/records/bind.ts 82.92% 83.72% 93.75% 67.30%
src/compiler/queries/container/token.ts 83.33% 85.71% 100.00% 75.00%
src/core/global_modules/ref/bind.ts 83.87% 83.87% 90.00% 75.00%
src/core/local_modules/enum/validate.ts 83.87% 80.30% 81.25% 73.68%
src/core/local_modules/table/validate.ts 84.55% 85.14% 90.24% 73.04%
src/core/parser/parser.ts 85.34% 85.55% 100.00% 76.67%
__tests__/utils/mocks.ts 85.71% 86.20% 75.00% 100.00%
src/core/global_modules/use/index.ts 86.59% 83.20% 100.00% 78.22%
src/services/suggestions/utils/useMerger.ts 86.95% 81.13% 100.00% 46.34%
src/core/global_modules/tablePartial/bind.ts 87.03% 87.27% 100.00% 71.42%
src/services/suggestions/provider.ts 87.81% 83.85% 98.41% 75.15%
src/core/global_modules/tablePartial/index.ts 88.27% 86.70% 100.00% 79.36%
src/core/global_modules/tableGroup/interpret.ts 88.37% 88.37% 100.00% 77.27%
src/services/suggestions/recordRowSnippet.ts 88.46% 87.09% 100.00% 73.80%
src/compiler/queries/nodeAtPosition.ts 88.88% 90.00% 100.00% 75.00%
src/core/global_modules/diagramView/index.ts 89.16% 86.23% 83.33% 78.18%
src/core/global_modules/table/interpret.ts 90.69% 84.72% 95.45% 67.70%
src/compiler/index.ts 90.76% 90.83% 75.00% 78.84%
src/core/global_modules/records/index.ts 90.90% 87.15% 100.00% 79.16%
src/core/global_modules/records/utils/constraints/pk.ts 91.66% 88.88% 93.75% 63.15%
src/core/types/symbol/metadata.ts 92.10% 77.58% 97.61% 62.72%
src/core/global_modules/schema/index.ts 92.26% 82.46% 91.66% 70.07%
src/core/utils/interpret.ts 93.33% 90.00% 100.00% 73.23%
src/core/global_modules/diagramView/interpret.ts 94.59% 90.40% 92.85% 75.75%
src/services/suggestions/use.ts 94.68% 87.61% 100.00% 77.45%
src/core/global_modules/note/interpret.ts 95.65% 95.65% 100.00% 75.00%
src/core/global_modules/records/interpret.ts 95.97% 92.59% 100.00% 79.54%
__tests__/examples/interpreter/multifile/utils.ts 96.00% 89.65% 100.00% 62.50%
src/compiler/queries/canonicalName.ts 96.96% 92.10% 100.00% 76.66%
src/core/global_modules/program/interpret.ts 97.07% 91.45% 100.00% 70.31%
src/core/types/errors.ts 98.48% 98.48% 66.66% 100.00%
src/compiler/queries/transform/renameTable.ts 99.05% 90.47% 100.00% 78.82%
src/core/global_modules/checks/interpret.ts 100.00% 88.88% 100.00% 60.00%
src/core/global_modules/program/index.ts 100.00% 85.71% 100.00% 75.00%
src/core/global_modules/records/utils/constraints/unique.ts 100.00% 94.87% 100.00% 58.33%
src/services/definition/provider.ts 100.00% 95.23% 100.00% 71.42%

@huydo862003 huydo862003 changed the title Fix silent errors when an autoincrement/default PK composite component do not have a value + Refactor DBX-6972 Fix silent errors when an autoincrement/default PK composite component do not have a value + Refactor Jul 6, 2026
@linear-code

linear-code Bot commented Jul 6, 2026

Copy link
Copy Markdown

DBX-6972

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant