Comments (5)
The problem is that you're trying to match the string between double quotes:
" . date('y-m-d') . "
with a regular expression
['"]\s?\..*\.\s?['"]
This would work, but the problem is that this string is also inside singe quotes:
'" . date('y-m-d') . "'
That regex would only match from the second character of this string, so it won't succeed. Next sql-formatter will try to match a single-quoted string token, which will succeed, matching the part within single quotes:
'" . date('
It will then continue detecting the following tokens: y
, -
, m
, -
, d
, ') . "'
.
I guess you'll need to cover this case with another more specialized regex. Though fundamentally you can't parse PHP with a regular expression. Hopefully you know the limitations of this approach.
from sql-formatter.
Well it's your call if you want to shoot yourself in the foot, but already in this example SQL, this regex will match the following:
'" . date('Y-m-d') . "', 'YYYY-MM-DD'
That is, it will greedily match everything between first and last quote. It will also happily match from "
to '
if it sees the opportunity.
from sql-formatter.
The problem is that you're trying to match the string between double quotes:
" . date('y-m-d') . "
with a regular expression
['"]\s?\..*\.\s?['"]
This would work, but the problem is that this string is also inside singe quotes:
'" . date('y-m-d') . "'
That regex would only match from the second character of this string, so it won't succeed. Next sql-formatter will try to match a single-quoted string token, which will succeed, matching the part within single quotes:
'" . date('
It will then continue detecting the following tokens:
y
,-
,m
,-
,d
,') . "'
.I guess you'll need to cover this case with another more specialized regex. Though fundamentally you can't parse PHP with a regular expression. Hopefully you know the limitations of this approach.
Thank you! You are absolutely right. I change my config to
{
language: 'postgresql',
tabWidth: 4,
keywordCase: 'upper',
functionCase: 'upper',
identifierCase: 'lower',
linesBetweenQueries: 1,
paramTypes: {
custom: [
{ regex: String.raw`\{\$?[\w\d\->\[\]]+\}` },
{ regex: String.raw`\$[\w\d\->\[\]]+` },
{ regex: String.raw`['"].*['"]` },
],
positional: true,
named: [':', '@'],
},
}
and everything works
from sql-formatter.
This ['"].*['"]
regex is likely not what you want. It will override the builtin double- and single-quoted strings/identifiers matching in SQL Formatter with a broken implementation. You really should use something more specific than that.
from sql-formatter.
This
['"].*['"]
regex is likely not what you want. It will override the builtin double- and single-quoted strings/identifiers matching in SQL Formatter with a broken implementation. You really should use something more specific than that.
I've tested some queries, everything seems to be fine
from sql-formatter.
Related Issues (20)
- [FORMATTING] 'DESC' is not capitalised unlike other SQL keywords HOT 4
- Ability to disable the formatter for a block of SQL HOT 2
- [FORMATTING] Issue with format clickhouse formatter. HOT 1
- [FORMATTING] OPTION Formatting for T-SQL HOT 3
- [FORMATTING] Querying a semi-structured data with an element name that is a reserved clause is incorrect HOT 4
- [FORMATTING] Postgres formatter throws error when '@?' operator is used for json filtering HOT 2
- [FORMATTING] No new line except before `;` and no caps HOT 2
- [FORMATTING] Field named "password" converted to uppercase when "keywordCase" is "upper" HOT 9
- [FORMATTING] function name should not be changed in pgsql HOT 2
- Failure on schema-qualified special `OPERATOR` in PostgreSQL HOT 3
- Unable to configure to use the configuration setting for placeholders HOT 3
- [FORMATTING] Why are tabularLeft parentheses so ugly? Can you add hierarchical styles or align backspace HOT 3
- Cannot read properties of undefined (reading 'nestedBlockComments') HOT 3
- Feature Request: Option to Configure Indentation for SQL JOIN Clauses HOT 2
- Unable to use "#" in table names HOT 2
- [FORMATTING] `DEFAULT VALUES` not properly supported in INSERT statement HOT 3
- [FORMATTING] When the language is postgres, executing "select * from test. [User]" will result in an error message HOT 5
- [Question] How to apply formatting inside of table definition? HOT 4
- PL/SQL error parsing FOR x IN a..b LOOP HOT 3
- Feature Request: Support TiDB syntax
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sql-formatter.