-
Notifications
You must be signed in to change notification settings - Fork 3.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix the druid json_object issue #16592
base: master
Are you sure you want to change the base?
Conversation
So to resolve this problem, we need to update the calcite to a release that includes your fix? |
can we add a test case? |
@FrankChen021, @kgyrtkirk and @cryptoe |
So you want all functions to work with equalsIgnoreCase ?
|
I wonder why can't we simply use the
I've done a quick check with a testcase in
I'm not sure if other tests will pass with this change...but ...other way around could be to somehow get rid of the |
May i know what is your idea of SqlStdOperator versions solution? |
); | ||
} | ||
}) | ||
.returnTypeInference(NESTED_RETURN_TYPE_INFERENCE) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the are some differences between these functions....most importantly the return type is different; the SqlStdOp
returns VARCHAR
; meanwhile this function was returning NESTED_DATA
there are also some test failures; one is CalciteNestedDataQueryTest.testJsonQueryAndJsonObject
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@kgyrtkirk @cryptoe and @FrankChen021 i try to use the original OperatorConversions(not SqlStdOperatorTable.JSON_OBJECT)
and during plan process, original JsonObjectOperatorConversion will add new virtualColumn base on the Expression.
but for the BindablesQuery, we have different plan process and not add virtualColumn base on the Expression, so it will go to calcite json_object, then we have this runtime error for any BindablesQuery which use json_object.
Please let me know your idea, i need your help to fix this issue.
@kgyrtkirk i have try to add some calcite rule for plan, but it still need to get sqlfunction from rextableimp, i do not have any other work around now, i am open if someone can provide idea or continue to work on this, i can monitor and learn. |
I think that getting rid of the bindables mode might just make this and possibly other issues go away... I was looking around a bit and I think you will get similar issues for all the functions inside to address that I think the following might be considered:
I would preffer (2) as I have a feeling that (1) might be quite tricky.... I'll try to think about further alternatives/ideas/etc cc: @gianm |
@kgyrtkirk thanks let me know your solution, i will try this week. |
Fixes #16356.
Description
the dependence calcite cr need to be review
the root case is that the operator is SqlFunction, but in the map, the key instance is SqlJsonObjectFunction, the type is not equals, so we can naver get from the map in the following code:
Fixed the bug ...
Release note
Fix the SQL JSON_OBJECT() function results in RUNTIME_FAILURE when querying INFORMATION_SCHEMA.COLUMNS
Key changed/added classes in this PR
NestedDataOperatorConversions.java
This PR has: