-
Notifications
You must be signed in to change notification settings - Fork 5.4k
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
[native] Retrieve Json function metadata for prestissimo functions #22332
Conversation
3e2eac3
to
330b340
Compare
330b340
to
6386575
Compare
@pramodsatya : Please give more information about how this http method will be used in Presto server. |
presto-native-execution/presto_cpp/main/types/FunctionMetadata.h
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/main/types/tests/FunctionMetadataTest.cpp
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/main/types/tests/FunctionMetadataTest.cpp
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/main/types/tests/FunctionMetadataTest.cpp
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/main/types/FunctionMetadata.cpp
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/main/types/FunctionMetadata.cpp
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/main/types/FunctionMetadata.cpp
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/main/types/FunctionMetadata.cpp
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/main/types/FunctionMetadata.cpp
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/main/types/FunctionMetadata.cpp
Outdated
Show resolved
Hide resolved
bd8b27f
to
edd9e93
Compare
edd9e93
to
0cf2dd5
Compare
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.
Thanks for the feedback @aditi-pandit, addressed the review comments. Could you please take another look?
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.
@pramodsatya Would you document the new endpoint somewhere in https://prestodb.io/docs/current/develop/worker-protocol.html ?
0cf2dd5
to
27d780d
Compare
@mbasmanova we have started to document our endpoints using OpenAPI, and eventually all sidecar endpoints (and, hopefully all Presto endpoints) will have corresponding OpenAPI documentation. |
Sounds cool. Where can I see docs for the new endpoint? |
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.
@pramodsatya : The changes look good. Please add more test cases though... We should cover functions with different types, template parameters, array, map functions as well.
presto-native-execution/presto_cpp/main/types/FunctionMetadata.cpp
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/main/types/FunctionMetadata.cpp
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/main/types/FunctionMetadata.cpp
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/main/types/FunctionMetadata.cpp
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/main/types/tests/FunctionMetadataTest.cpp
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/main/types/tests/FunctionMetadataTest.cpp
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/main/types/tests/FunctionMetadataTest.cpp
Outdated
Show resolved
Hide resolved
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.
Thanks for the doc! Pulled branch and made a local docs build. Some nits of capitalization, everything else looks fine.
27d780d
to
90dd09f
Compare
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.
Thanks, I have a few comments.
presto-native-execution/presto_cpp/main/types/tests/CMakeLists.txt
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/main/types/tests/CMakeLists.txt
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/presto_protocol/presto_protocol.yml
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/presto_protocol/special/Language.cpp.inc
Outdated
Show resolved
Hide resolved
90dd09f
to
a006c3e
Compare
Thanks for the feedback @czentgr, I have addressed the comments. Could you please take another look? |
Thanks @pramodsatya, I missed that! I thought there was probably a good reason for it that I had overlooked and didn't know what it was. Yes, that's fine with me, and I appreciate your explanation. |
@pramodsatya : Please can you rebase your code. I'll continue with the review then. |
4ed8961
to
56813d3
Compare
Thanks @aditi-pandit, rebased and fixed the CI failures. |
56813d3
to
da222f9
Compare
da222f9
to
88c8b7a
Compare
- presto-main/src/main/java/com/facebook/presto/connector/system/SystemTransactionHandle.java |
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.
Agree that there isn't particular organization in this file. But we should make it in alphabetical order. Will send out a PR for it.
presto-native-execution/presto_cpp/main/types/FunctionMetadata.cpp
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/main/types/FunctionMetadata.cpp
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/main/types/FunctionMetadata.cpp
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/main/types/FunctionMetadata.cpp
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/main/types/FunctionMetadata.cpp
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/main/types/tests/FunctionMetadataTest.cpp
Outdated
Show resolved
Hide resolved
88c8b7a
to
568e1cf
Compare
@pramodsatya : This code looks good. @czentgr : Would be great if you did a pass as well. Will give approval once you give a heads-up. |
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.
One thought and one nit.
presto-native-execution/presto_cpp/main/types/FunctionMetadata.cpp
Outdated
Show resolved
Hide resolved
568e1cf
to
d716ca2
Compare
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.
Thanks for the feedback @czentgr @aditi-pandit. Consolidated the sidecar endpoints to a single function, also added a helper function to identify and exclude function signatures with unsupported Presto types (hugeint is currently unsupported in Presto). Could you please take another look?
d716ca2
to
37deb95
Compare
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.
@pramodsatya : Have 2 minor comments. Rest is looking good.
presto-native-execution/presto_cpp/main/types/tests/TestUtils.cpp
Outdated
Show resolved
Hide resolved
37deb95
to
11c83e3
Compare
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.
Thanks for the feedback @aditi-pandit, addressed the comments. Could you please take another look?
presto-native-execution/presto_cpp/main/types/tests/TestUtils.cpp
Outdated
Show resolved
Hide resolved
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.
Thanks @pramodsatya
Please can you also add a link to the documentation of the API.
@aditi-pandit |
Motivation and Context
For fail fast function validation in Prestissimo, the coordinator needs to know the list of function signatures that are supported by Prestissimo. This is so we can validate during parsing and analysis that a function is supported. In order to expose this, a new HTTP method is added that returns the function signatures supported by the Prestissimo worker.
The format of the functions should be a map of name to function signature. Name is a simple string. Function signature is a JSON object which matches the format of
JsonBasedUdfFunctionMetadata
in the Java code. All functions currently come from Velox, hence we need to retrieve the list of supported functions in Velox. This map is translated to a format that conforms toJsonBasedUdfFunctionMetadata
and is serialized to JSON for consumption by the Java coordinator.Description
For full context, see #23000
This PR adds a http endpoint
/v1/functions
to the sidecar, which returns the list of function signatures conforming to formatJsonBasedUdfFunctionMetadata
for all the registered Presto native functions.Test Plan
Unit tests are added in
FunctionMetadataTest.cpp
. E2E tests will be added in a followup PR