Skip to content

feat(duckdb): Add transpilation support for CHR function.#7430

Merged
georgesittas merged 4 commits intomainfrom
RD-1147697-chr-char
Apr 1, 2026
Merged

feat(duckdb): Add transpilation support for CHR function.#7430
georgesittas merged 4 commits intomainfrom
RD-1147697-chr-char

Conversation

@fivetran-amrutabhimsenayachit
Copy link
Copy Markdown
Collaborator

CHR with a float/decimal literal fails at runtime in DuckDB.
CHR(65.9) transpiles unchanged. Snowflake rounds 65.9 → 66 → 'B'; DuckDB strictly requires INTEGER and raises: No function matches the given name and argument types 'chr(DECIMAL(3, 1))'.

python -c "
from sqlglot import parse_one
from sqlglot.optimizer.annotate_types import annotate_types
expr = parse_one('SELECT CHR(65) AS chr_int, CHR(65.9) AS chr_float, CHAR(65) AS char_alias, CHR(NULL) AS chr_null, CHR(8364) AS chr_unicode', read='snowflake')
annotated = annotate_types(expr, dialect='snowflake')
print(annotated.sql('duckdb'))
"
-->
SELECT CHR(65) AS chr_int, CHR(CAST(65.9 AS INT)) AS chr_float, CHR(65) AS char_alias, CHR(NULL) AS chr_null, CHR(8364) AS chr_unicode

│ chr_int │ chr_float │ char_alias │ chr_null │ chr_unicode │
│ varchar │  varchar  │  varchar   │ varchar  │   varchar   │
├─────────┼───────────┼────────────┼──────────┼─────────────┤
│ A       │ B         │ A          │ NULL     │ €           │
└─────────┴───────────┴────────────┴──────────┴─────────────┘

@georgesittas georgesittas force-pushed the RD-1147697-chr-char branch from 0f6caad to 4a97e9f Compare April 1, 2026 17:40
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 1, 2026

SQLGlot Integration Test Results

Comparing:

  • this branch (sqlglot:RD-1147697-chr-char, sqlglot version: RD-1147697-chr-char)
  • baseline (main, sqlglot version: 0.0.1.dev1)

By Dialect

dialect main sqlglot:RD-1147697-chr-char transitions links
bigquery -> bigquery 23872/23877 passed (100.0%) 21252/21252 passed (100.0%) No change full result / delta
bigquery -> duckdb 2106/2624 passed (80.3%) 0/0 passed (0.0%) No change full result / delta
duckdb -> duckdb 4003/4003 passed (100.0%) 4003/4003 passed (100.0%) No change full result / delta
snowflake -> duckdb 1511/2674 passed (56.5%) 0/0 passed (0.0%) No change full result / delta
snowflake -> snowflake 65910/65910 passed (100.0%) 63015/63015 passed (100.0%) No change full result / delta
databricks -> databricks 1364/1364 passed (100.0%) 1364/1364 passed (100.0%) No change full result / delta
postgres -> postgres 6040/6040 passed (100.0%) 6040/6040 passed (100.0%) No change full result / delta
redshift -> redshift 7059/7059 passed (100.0%) 7059/7059 passed (100.0%) No change full result / delta

Overall

main: 113551 total, 111865 passed (pass rate: 98.5%), sqlglot version: 0.0.1.dev1

sqlglot:RD-1147697-chr-char: 102733 total, 102733 passed (pass rate: 100.0%), sqlglot version: RD-1147697-chr-char

Transitions:
No change

✅ 4 test(s) passed

@georgesittas georgesittas merged commit 3f31ffe into main Apr 1, 2026
8 checks passed
@georgesittas georgesittas deleted the RD-1147697-chr-char branch April 1, 2026 18:12
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.

2 participants