Comments (2)
Hi @dnnancy, this functionality is by design. It is intended that the series of AND expressions is parsed as a chain of AND CriteriaExpressions. This is how abstract syntax trees (AST) work. Unless I'm mistaken!
Your example results in the following graph:
CriteriaExpression(AND)
/ \
CreditLimit = 1000 CriteriaExpression(AND)
/ \
Email LIKE '%...' TwitterId = 'joe'
Unless the sql includes brackets, it is not a nested expression. A nested expression contains one other expression which will incorporate the AST that describes the inner expression. This would result in a parent node of the current root node in the above graph.
Could you give me an example of how the current functionality is broken?
from sqlformat.
Hi @benlaan, thanks for looking into this, and also the explanation. The current challenge is, when walking through the tree, we don't know whether it is an actual condition (leaf node) or an nested CriteriaExpression unless we evaluate the operator in string format ("AND", "OR"), which is probably not very efficient, I suppose.
I am also wondering if it is possible to support Operator enum which would be more efficient when using the parser.
Thanks again.
from sqlformat.
Related Issues (20)
- Fields in the form or [Aggregation]([Owner].[Table].[Column]) aren't being formatted properly HOT 1
- Support integrating with Visual Studio HOT 5
- Can't parse SELECT COUNT(DISTINCT SomeColumn)
- Separating comment text HOT 1
- Failing to parse CAST() with DOUBLE PRECISION type
- Strange Format when NOT is wrapped in an expression
- EXEC someProc doesn't have a formatter
- NullReferenceException with missing 'On' clause in join
- Inner unioned query without From fails to parse
- List of unsupported features? HOT 1
- Multiple Statements with sp_execute only parse the first one
- Create View statement cannot handle schema prefix
- Unicode HOT 2
- Support Bitwise operations
- Formatting takes a long time (Gave up after an hour)
- Getting a SyntaxException while parsing a SQL statment
- INSERT INTO formatting issue with nested SELECT's
- sp_execute INSERT looses fields HOT 1
- VS2017: Some of projects cannot be open HOT 1
- Parsing error
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 sqlformat.