Open
Conversation
sqlglot 30.x split the expression hierarchy: Expr is now a base trait with _set_parent raising NotImplementedError, while Expression is the concrete class that implements it. Trait classes (Binary, Func) inherit from Expr, so custom expression classes must now inherit from both Expression and their trait class. Additionally, Parser.expression() now expects a pre-constructed instance instead of class + kwargs. Changes: - Add exp.Expression to SpatialPredicate, GIQLCluster, GIQLMerge, GIQLDistance, and GIQLNearest base classes - Construct expression instances before passing to self.expression() in the parser - Pin sqlglot >=30.0.0
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
ExprvsExpressionsplit)Parser.expression()calls in the dialect to pass pre-constructed instances (new API)>=30.0.0Details
sqlglot 30.x made
Expra base trait where_set_parentraisesNotImplementedError. Concrete classes must inherit from bothExpression(which implements_set_parent,__init__, etc.) and their trait class (Binary,Func). This mirrors how sqlglot's own classes are defined (e.g.,class Add(Expression, Binary)).Affected classes:
SpatialPredicate,GIQLCluster,GIQLMerge,GIQLDistance,GIQLNearest.Test plan