GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — DuckDB: accept digit separators in numeric literals by guizmaii · Pull Request #2797 · JSQLParser/JSqlParser

Conversation

@guizmaii

@guizmaii guizmaii commented Oct 13, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

For DuckDB, which accepts _ between digits in numeric literals (docs), as does PostgreSQL 16.

MySQL identifiers may start with digits, so 2024_01 is a column or table there. Separators are therefore opt-in:

Input Default (unchanged) withDigitSeparators() / Dialect.POSTGRESQL
1_000 Column 1_000 LongValue 1000
92_000.0 error DoubleValue 92000.0
1e1_0 Column 1e1_0 DoubleValue 1e10
LIMIT 1_000 LIMIT column 1_000 LIMIT 1000
FROM 2024_01 table 2024_01 error
  • New Feature.allowDigitSeparators (default false) with withDigitSeparators(); Dialect.POSTGRESQL enables it.
  • Behaviour change for Dialect.POSTGRESQL only: 2024_01 is now LongValue 202401 instead of a column, as PostgreSQL never allows unquoted digit-led identifiers (PostgreSQL < 16 reads 1_000 as 1 AS _000).
  • S_LONG accepts _ between digits. Under the feature, the lexical action drops the separators from the image, so the ~30 grammar actions that read number tokens (Long.valueOf(token.image), ...) need no change. 1_000 deparses as 1000.
  • Without the feature, the action cuts the token back to what master lexes (the identifier 2024_01, or .5 before _5). The default output is identical to master on the whole DuckDB test suite below.
  • checkGrammarAmbiguity: no conflicts. ./gradlew check: 10,125 tests, 0 failures.
  • DuckDB's own test suite (test/sql, 70,729 statements): default mode identical to master; with the feature, 10 more parse, none less.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
guizmaii added 2 commits October 13, 2026 19:22
@guizmaii
DuckDB: accept digit separators in numeric literals
c55818f
`1_000_000`, `92_000.0` and `1e1_0` are numbers in DuckDB and
PostgreSQL 16, but MySQL reads `2024_01` as an identifier. The new
`Feature.allowDigitSeparators`, enabled by the PostgreSQL dialect,
drops the separators from the token image, so every consumer of number
tokens keeps working. Without it, lexing is unchanged.
@guizmaii
Keep the javadoc of truncateIdentifierToken above it
2c7ae8c
@guizmaii
guizmaii marked this pull request as ready for review October 13, 2026 08:33
Copilot AI balanced review requested due to automatic review settings October 13, 2026 08:33
Copilot AI reviewed Oct 13, 2026

Copilot AI left a comment

Copy link
Copy Markdown

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@guizmaii guizmaii mentioned this pull request Oct 13, 2026
DuckDB: remaining syntax to support #2804
Open
27 tasks
@manticore-projects
manticore-projects merged commit ac8a4f0 into JSQLParser:master Oct 13, 2026
10 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@manticore-projects

manticore-projects commented Oct 13, 2026

Copy link
Copy Markdown
Contributor

Good one, thank you!

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@guizmaii
guizmaii deleted the duckdb-numeric-underscores branch October 22, 2026 23:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

Copilot code review Copilot
Copilot review effort
Applies to this pull request for everyone.Learn more about Copilot code review.
Copilot left review comments

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

3 participants

@guizmaii @manticore-projects
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.