Comments (2)
A simpler example:
SELECT id, ( a /*+b*/ + c) sum_cols
FROM my_table
the above query has a comment for +b
only and because the comment is /* */
the sequence /*+
breaks the parsing.
from sqlglot.
This is out of scope for us right now. The issue is that hints are tokenized & parsed as if they were not comments:
>>> import sqlglot
>>> sqlglot.parse_one("SELECT /*+ REPARTITION(100) */ x FROM tbl")
Select(
hint=Hint(
expressions=[
Anonymous(
this=REPARTITION,
expressions=[
Literal(this=100, is_string=False)])]),
expressions=[
Column(
this=Identifier(this=x, quoted=False))],
from=From(
this=Table(
this=Identifier(this=tbl, quoted=False))))
The alternative would be to treat hints as comments, but that's brittle because comments are attached on tokens based on heuristics and there may be edge cases where hints are lost because they're attached to the wrong token.
Perhaps you can do a regex substitution in order to include a space between /*
and +
. This will result in tokenizing this as a comment.
from sqlglot.
Related Issues (20)
- Inverting boolean filter with OR not retaining parenthesis on .sql() HOT 1
- Snowflake secure views creation sql fails to parse HOT 1
- Makes upper case last arg in Clickhouse date_sub func HOT 7
- sqlglot fails to parse BigQuery type cast
- bug in `nulls_first` default for oracle dialect. HOT 3
- Tokenizer Error with raw string ending with \ HOT 1
- wrong qualify_columns on generated columns HOT 1
- Support for try_parse_json
- Intermittent segfault when calling `Expression.find_all` HOT 4
- [Postgres/Redshift] - Treat optimizer hints as comments in Postgres/Redshift HOT 4
- parse SQL with CAST FUNCTION exception under MySQL dialect
- Snowflake Dialect - Column By Position HOT 3
- clickhouse: "cannot traverse scope" for queries with CTEs and placeholders HOT 3
- [Databricks] Date units in functions interpreted as columns HOT 2
- nondeterministic column order in optimized plans HOT 2
- Translation error with dateadd from Snowflake to duckdb HOT 3
- clickhouse `extract` function is transformed to uppercase
- Snowflake nested fields are incorrectly translated using `JSON_EXTRACT` HOT 4
- sqlglot.transpile from Snowflake to postgres raises error when Snowflake CONNECT BY is used in sql query HOT 2
- #3706 breaks `::` parsing in tsql HOT 1
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 sqlglot.