sql-formatter icon indicating copy to clipboard operation
sql-formatter copied to clipboard

Some identifiers get converted to uppercase with keywordCase:upper

Open krishnagogada opened this issue 1 year ago • 3 comments

Input data

Which SQL and options did you provide as input?

create table player_match_details(
  name varchar(150),
  match varchar(150),
  score int
);

Expected Output

CREATE TABLE player_match_details(
  name varchar(150),
  match varchar(150),
  score int
);

Actual Output

CREATE TABLE player_match_details(
  name varchar(150),
  MATCH varchar(150),
  score int
);

Usage

  • How are you calling / using the library?
import { format } from 'sql-formatter';
  • What SQL language(s) does this apply to?
  {
      language: 'sql',
      indent: '',
      uppercase: true,
      linesBetweenQueries: 2
   }
  • Which SQL Formatter version are you using? 15.3.1

krishnagogada avatar May 09 '24 12:05 krishnagogada

Thanks for reporting. This is similar to #302 and #732.

One one hand this is really a fundamental problem with SQL Formatter that can't be easily fixed. (I could remove MATCH from list of keywords and then we'd have the opposite problem).

On another hand, you would be better off not using the default language:"sql". If possible choose the value that matches the SQL dialect you're actually using, like language: "postgresql". That other dialect might or might not have MATCH in its list of keywords.

FYI, there are no uppercase and indent options in latest SQL Formatter. You're either using some old version or some other tool altogether.

nene avatar May 09 '24 15:05 nene

@nene

Thanks for the reply, I kept the specific language SQLite, even though I have the issue. Is there any alternative fix?

krishnagogada avatar May 15 '24 09:05 krishnagogada

An alternative is to use a different formatting library which doesn't have this issue: https://github.com/nene/prettier-plugin-sql-cst

nene avatar May 15 '24 10:05 nene