rahil-c commented on code in PR #9695: URL: https://github.com/apache/iceberg/pull/9695#discussion_r1692158506
########## 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: @rdblue I think 422, is more clear on the exact reason why we need to even call `preplan` first as the response is too large. `421` however can mean several things, either similar to the above reasoning, or that we just require a client to call `preplan`. If you feel like we should only keep one of these which one do you prefer more between 421 and 422? ########## 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: @rdblue @amogh-jahagirdar I think 422, is more clear on the exact reason why we need to even call `preplan` first as the response is too large. `421` however can mean several things, either similar to the above reasoning, or that we just require a client to call `preplan`. If you feel like we should only keep one of these which one do you prefer more between 421 and 422? -- 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