rdblue commented on code in PR #9695: URL: https://github.com/apache/iceberg/pull/9695#discussion_r1494948585
########## open-api/rest-catalog-open-api.yaml: ########## @@ -532,6 +532,100 @@ paths: 5XX: $ref: '#/components/responses/ServerErrorResponse' + /v1/{prefix}/namespaces/{namespace}/tables/{table}/preplan: + parameters: + - $ref: '#/components/parameters/prefix' + - $ref: '#/components/parameters/namespace' + - $ref: '#/components/parameters/table' + post: + tags: + - Catalog API + summary: Find plan-tasks based on a plan context. + description: + When a user submits a query, this operation will find the relevant plan-tasks + based on the user's selected columns, and filters. The plan-tasks can be later used during PlanTable + to distribute this work for performance gain. + operationId: PreplanTable + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PreplanTableRequest' + responses: + 200: + $ref: '#/components/responses/PreplanTableResponse' + 400: + $ref: '#/components/responses/BadRequestErrorResponse' + 401: + $ref: '#/components/responses/UnauthorizedResponse' + 403: + $ref: '#/components/responses/ForbiddenResponse' + 404: + description: + Not Found + - NoSuchTableException, the table does not exist + - NoSuchNamespaceException, the namespace does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorModel' + examples: + TableDoesNotExist: + $ref: '#/components/examples/NoSuchTableError' + NamespaceDoesNotExist: + $ref: '#/components/examples/NoSuchNamespaceError' + 419: + $ref: '#/components/responses/AuthenticationTimeoutResponse' + 503: + $ref: '#/components/responses/ServiceUnavailableResponse' + 5XX: + $ref: '#/components/responses/ServerErrorResponse' + + /v1/{prefix}/namespaces/{namespace}/tables/{table}/plan/: + parameters: + - $ref: '#/components/parameters/prefix' + - $ref: '#/components/parameters/namespace' + - $ref: '#/components/parameters/table' + post: + tags: + - Catalog API + summary: Initiate plan on table to find relevant file scan tasks for a specific query. + operationId: PlanTable + description: + When a user submits a query, we can do a plan to find the relevant file scan tasks + based on the user's selected columns, and filters. For enhanced query performance, + users can provide a plan-task which will distribute the planning work. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PlanTableRequest' + responses: Review Comment: I think this also needs a response code that instructs the caller to use the pre-planning endpoint. I don't think any of the 3xx responses fit because those are redirecting the request and this indicates that the response type will change. There are some 4xx responses that would make sense: * `413 — Payload Too Large` could indicate that the result is too large. If the request had no `plan-task`, then the solution is to use pre-planning to break down the work. I think this makes sense if the service supports pre-planning and direct planning (not passing `plan-task` in the request to this endpoint) * `421 — Misdirected Request` or `422 — Unprocessable Entity` could indicate that pre-planning is required for all requests to this endpoint What do you think? -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For additional commands, e-mail: issues-h...@iceberg.apache.org