Skip to content
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

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

pramodsatya
Copy link
Contributor

@pramodsatya pramodsatya commented Mar 26, 2024

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 to JsonBasedUdfFunctionMetadata 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 which returns the list of function signatures, conforming to format JsonBasedUdfFunctionMetadata, for all the presto functions supported in velox. Depends on Velox changes in the PR. This endpoint is registered in PrestoServer only when it is configured as a sidecar.

Test Plan

Unit tests are added in FunctionMetadataTest.cpp.

== NO RELEASE NOTE ==

cc: @tdcmeehan @soumiiow

@pramodsatya pramodsatya changed the title [WIP] [native] Retrieve Json function metadata for prestissimo functions [native] Retrieve Json function metadata for prestissimo functions Jun 7, 2024
@aditi-pandit
Copy link
Contributor

@pramodsatya : Please give more information about how this http method will be used in Presto server.

Copy link
Contributor Author

@pramodsatya pramodsatya left a 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?

Copy link
Contributor

@mbasmanova mbasmanova left a 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 ?

@tdcmeehan
Copy link
Contributor

@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.

@mbasmanova
Copy link
Contributor

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?

Copy link
Contributor

@aditi-pandit aditi-pandit left a 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.

Copy link
Contributor

@steveburnett steveburnett left a 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.

presto-docs/src/main/sphinx/develop/worker-protocol.rst Outdated Show resolved Hide resolved
presto-docs/src/main/sphinx/develop/worker-protocol.rst Outdated Show resolved Hide resolved
presto-docs/src/main/sphinx/develop/worker-protocol.rst Outdated Show resolved Hide resolved
Copy link
Contributor

@czentgr czentgr left a 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.

@pramodsatya
Copy link
Contributor Author

Thanks, I have a few comments.

Thanks for the feedback @czentgr, I have addressed the comments. Could you please take another look?

Copy link
Contributor

@steveburnett steveburnett left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the new doc! I have a suggestion about where the new page should be located, let me know what you think.

presto-docs/src/main/sphinx/develop.rst Outdated Show resolved Hide resolved
@pramodsatya
Copy link
Contributor Author

Thanks for the new doc! I have a suggestion about where the new page should be located, let me know what you think.

Thanks for the suggestion @steveburnett, yes I agree presto-cpp.rst seems more suitable for this doc and I moved it there. Could you please take another look?

steveburnett
steveburnett previously approved these changes Aug 6, 2024
Copy link
Contributor

@steveburnett steveburnett left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! (docs)

Pull updated branch, new local doc build, looks good. Thanks!

@pramodsatya pramodsatya force-pushed the fn_metadata branch 2 times, most recently from cdb557e to 396ecd2 Compare August 12, 2024 22:57
facebook-github-bot pushed a commit to facebookincubator/velox that referenced this pull request Aug 13, 2024
…#10664)

Summary:
Prefix is not needed to register custom type `HyperLogLog` in `ApproxDistinctAggregates`.
`registerHyperLogLogType` is used instead to make registration of customType `HyperLogLog`
uniform across velox.

Use of prefix in `registerCustomType` here resulted in the following error while running tests
in [presto PR](prestodb/presto#22332):
```
Reason: Type doesn't exist: 'HYPERLOGLOG'
Retriable: False
Function: validateBaseTypeAndCollectTypeParams
File: /Users/pramod/Desktop/velox/velox/expression/FunctionSignature.cpp
Line: 125
```

Pull Request resolved: #10664

Reviewed By: bikramSingh91

Differential Revision: D61163251

Pulled By: xiaoxmeng

fbshipit-source-id: 8d316a9bc863a779ab81a50fb06b5d3761d8316b
@pramodsatya pramodsatya force-pushed the fn_metadata branch 2 times, most recently from a4723a0 to c607530 Compare August 15, 2024 04:56
@steveburnett
Copy link
Contributor

@pramodsatya, I notice that the documentation I reviewed is not part of this PR now. Can I ask why?

@pramodsatya
Copy link
Contributor Author

@pramodsatya, I notice that the documentation I reviewed is not part of this PR now. Can I ask why?

Hi @steveburnett, @tdcmeehan shared that the OpenAPI documentation for this endpoint will be added in: #23358 , so I reverted the previous documentation. Would that be fine?

@steveburnett
Copy link
Contributor

Hi @steveburnett, @tdcmeehan shared that the OpenAPI documentation for this endpoint will be added in: #23358 , so I reverted the previous documentation. Would that be fine?

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.

@aditi-pandit
Copy link
Contributor

@pramodsatya : Please can you rebase your code. I'll continue with the review then.

@pramodsatya pramodsatya force-pushed the fn_metadata branch 2 times, most recently from 4ed8961 to 56813d3 Compare August 22, 2024 21:46
@pramodsatya
Copy link
Contributor Author

@pramodsatya : Please can you rebase your code. I'll continue with the review then.

Thanks @aditi-pandit, rebased and fixed the CI failures.

- presto-main/src/main/java/com/facebook/presto/connector/system/SystemTransactionHandle.java
Copy link
Contributor

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants