[
https://issues.apache.org/jira/browse/CALCITE-5074?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17515653#comment-17515653
]
Julian Hyde commented on CALCITE-5074:
--------------------------------------
Can you create a separate issue for "TABLESAMPLE ... ROWS". It is a feature we
might wish to support in core Calcite, or at least in Babel.
In this issue, we should discuss the proposed changes to the templating
mechanism (using TABLESAMPLE as a good example).
> Allowing parser extensions
> --------------------------
>
> Key: CALCITE-5074
> URL: https://issues.apache.org/jira/browse/CALCITE-5074
> Project: Calcite
> Issue Type: New Feature
> Reporter: Rohan Garg
> Priority: Major
>
> We (I and [~cheddar]) recently had the need to extend various parts of
> Calcite in a non-standard SQL manner in our project which uses Calcite. For
> example, Calcite's TABLESAMPLE keyword always takes a percentage to sample
> and we wanted to adjust it to also allow for an explicit number of rows.
> Given that this is non-standard, we felt that it wouldn't make sense to do a
> PR that actually impacts Calcite's normal behavior, so we sought a method of
> extending Calcite to add support for our capabilities while still benefiting
> from all that Calcite offers.
> We came up with an idea for having an "override map" that can be provided in
> configuration and will cause the parser to override a specific production
> rule which can't be categorized in the current extension buckets. We include
> a commit link to show the idea in action
> (https://github.com/rohangarg/calcite/commit/7f0c6ad8c8f6bb2a1d1cca025d35670a8c62b3c4).
> It's a bit fiddly in that each override point needs to be extended with
> if/else template syntax, but that's a pattern that already seems to exist and
> maybe that's a feature rather than a bug? In either case, if that's too
> fiddly, but this general pattern makes sense, a subsequent task could be
> taken on to try to see if there's another point that this could be added more
> generically without the need for adding the if/else in the template. Does
> this seem like something that could be merged?
> We have included an override grammar that also relaxes the percentage
> constraints on TABLESAMPLE as an example of the type of customization that
> this is attempting to enable.
> Just for reference, this customization does exist in other systems as well,
> so it's non-standard but also not unheard of:
> 1. MS SQL Server :
> https://docs.microsoft.com/en-us/sql/t-sql/queries/from-transact-sql?view=sql-server-ver15#tablesample-clause
> 2. Snowflake :
> https://docs.snowflake.com/en/sql-reference/constructs/sample.html
> 3. Google Spanner :
> https://cloud.google.com/spanner/docs/reference/standard-sql/query-syntax#tablesample_operator
> 4. Apache Spark :
> https://spark.apache.org/docs/latest/sql-ref-syntax-qry-select-sampling.html
--
This message was sent by Atlassian Jira
(v8.20.1#820001)