[ 
https://issues.apache.org/jira/browse/CALCITE-4087?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17145811#comment-17145811
 ] 

Julian Hyde commented on CALCITE-4087:
--------------------------------------

[~rubenql], Hoisting at RelNode level makes perfect sense. It would come under 
CALCITE-963.

This change is still worthwhile, because it preserves the formatting of the 
original SQL and is probably more robust because it doesn't require the 
statement to pass through validation. For example, one use case for this change 
(which I believe is [~fzakaria]'s use case) is to mask PII such as passwords 
and social security numbers when writing SQL to a trace log.

> Hoist, a utility to replace literals in a SQL string with placeholders
> ----------------------------------------------------------------------
>
>                 Key: CALCITE-4087
>                 URL: https://issues.apache.org/jira/browse/CALCITE-4087
>             Project: Calcite
>          Issue Type: New Feature
>          Components: babel
>    Affects Versions: 1.23.0
>            Reporter: Julian Hyde
>            Assignee: Julian Hyde
>            Priority: Major
>
> Add "Hoist", a utility to replace literals in a SQL string with placeholders.
> By default it uses Calcite's parser, but you can configure to use different 
> quoting, casing, and also to use a different parser such as Babel for other 
> dialects of SQL.
> It generates a data structure, {{Hoisted}}, that contains a map of where the 
> literals occur within the SQL string. The Hoisted.substitute method generates 
> an alternative SQL string, replacing the literals with a custom string.
> It does not call {{SqlNode.unparse}}, and therefore does not lose any of the 
> original formatting.
> For more examples, see tests added to {{SqlParserTest}} and 
> {{BabelParserTest}}.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to