versioned_docs/version-0.9.0-incubating/open-api/partitions.yaml (423 lines of code) (raw):
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
---
paths:
/metalakes/{metalake}/catalogs/{catalog}/schemas/{schema}/tables/{table}/partitions:
parameters:
- $ref: "./openapi.yaml#/components/parameters/metalake"
- $ref: "./openapi.yaml#/components/parameters/catalog"
- $ref: "./openapi.yaml#/components/parameters/schema"
- $ref: "./openapi.yaml#/components/parameters/table"
get:
tags:
- partition
summary: List partitions (names)
operationId: listPartitions
parameters:
- $ref: "#/components/parameters/details"
responses:
"200":
description: Returns list of partition objects if {details} is true, else returns list of partition names
content:
application/vnd.gravitino.v1+json:
schema:
oneOf:
- $ref: "#/components/schemas/PartitionNameListResponse"
- $ref: "#/components/schemas/PartitionListResponse"
examples:
PartitionNameListResponse:
$ref: "#/components/examples/PartitionNameListResponse"
PartitionListResponse:
$ref: "#/components/examples/PartitionListResponse"
"400":
$ref: "./openapi.yaml#/components/responses/BadRequestErrorResponse"
"5xx":
$ref: "./openapi.yaml#/components/responses/ServerErrorResponse"
post:
tags:
- partition
summary: Add partitions
operationId: addPartitions
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AddPartitionsRequest"
examples:
HiveAddPartition:
$ref: "#/components/examples/HiveAddPartition"
responses:
"200":
$ref: "#/components/responses/PartitionListResponse"
"409":
description: Conflict - The target partition already exists
content:
application/vnd.gravitino.v1+json:
schema:
$ref: "./openapi.yaml#/components/schemas/ErrorModel"
examples:
PartitionAlreadyExistsErrorResponse:
$ref: "#/components/examples/PartitionAlreadyExistsErrorResponse"
"5xx":
$ref: "./openapi.yaml#/components/responses/ServerErrorResponse"
/metalakes/{metalake}/catalogs/{catalog}/schemas/{schema}/tables/{table}/partitions/{partition}:
parameters:
- $ref: "./openapi.yaml#/components/parameters/metalake"
- $ref: "./openapi.yaml#/components/parameters/catalog"
- $ref: "./openapi.yaml#/components/parameters/schema"
- $ref: "./openapi.yaml#/components/parameters/table"
- $ref: "#/components/parameters/partition"
get:
tags:
- partition
summary: Get partition by name
operationId: getPartition
description: Returns the specified partition
responses:
"200":
$ref: "#/components/responses/PartitionResponse"
"404":
description: Not Found - The specified partition does not exist
content:
application/vnd.gravitino.v1+json:
schema:
$ref: "./openapi.yaml#/components/schemas/ErrorModel"
examples:
NoSuchMetalakeException:
$ref: "./metalakes.yaml#/components/examples/NoSuchMetalakeException"
NoSuchCatalogException:
$ref: "./catalogs.yaml#/components/examples/NoSuchCatalogException"
NoSuchSchemaException:
$ref: "./schemas.yaml#/components/examples/NoSuchSchemaException"
NoSuchTableException:
$ref: "./tables.yaml#/components/examples/NoSuchTableException"
NoSuchPartitionException:
$ref: "#/components/examples/NoSuchPartitionException"
"5xx":
$ref: "./openapi.yaml#/components/responses/ServerErrorResponse"
delete:
tags:
- partition
summary: Drop partition by name
operationId: dropPartition
description: Drops the specified partition
parameters:
- $ref: "#/components/parameters/purge"
responses:
"200":
$ref: "./openapi.yaml#/components/responses/DropResponse"
"400":
$ref: "./openapi.yaml#/components/responses/BadRequestErrorResponse"
"5xx":
$ref: "./openapi.yaml#/components/responses/ServerErrorResponse"
components:
parameters:
details:
name: details
in: query
description: Include detailed information about the partitions
required: false
schema:
type: boolean
default: false
purge:
name: purge
in: query
description: Purge the partition data
required: false
schema:
type: boolean
default: false
partition:
name: partition
in: path
description: The name of the partition
required: true
schema:
type: string
schemas:
PartitionSpec:
oneOf:
- $ref: "#/components/schemas/IdentityPartition"
- $ref: "#/components/schemas/RangePartition"
- $ref: "#/components/schemas/ListPartition"
discriminator:
propertyName: type
mapping:
identity: "#/components/schemas/IdentityPartition"
range: "#/components/schemas/RangePartition"
list: "#/components/schemas/ListPartition"
AddPartitionsRequest:
type: object
required:
- partitions
properties:
partitions:
type: array
description: The partitions to add
items:
$ref: "#/components/schemas/PartitionSpec"
PartitionNameListResponse:
type: object
properties:
code:
type: integer
format: int32
description: Status code of the response
enum:
- 0
example: 0
names:
type: array
description: A list of partition names
items:
type: string
PartitionListResponse:
type: object
properties:
code:
type: integer
format: int32
description: Status code of the response
enum:
- 0
example: 0
partitions:
type: array
description: A list of partitions
items:
$ref: "#/components/schemas/PartitionSpec"
Properties:
type: object
description: The properties of the partition
nullable: true
default: {}
additionalProperties:
type: string
Name:
type: string
description: The name of the partition
ListValue:
type: array
description: The elements of lists partition
items:
$ref: "./expression.yaml#/components/schemas/Literal"
IdentityPartition:
type: object
required:
- type
- fieldNames
- values
properties:
type:
type: string
enum:
- "identity"
name:
$ref: "#/components/schemas/Name"
fieldNames:
$ref: "./tables.yaml#/components/schemas/FieldNames"
values:
type: array
description: The values of the partition, must be the same length and order as fieldNames
items:
$ref: "./expression.yaml#/components/schemas/Literal"
properties:
$ref: "#/components/schemas/Properties"
RangePartition:
type: object
required:
- type
- name
- upper
- lower
properties:
type:
type: string
enum:
- "range"
name:
$ref: "#/components/schemas/Name"
upper:
$ref: "./expression.yaml#/components/schemas/Literal"
lower:
$ref: "./expression.yaml#/components/schemas/Literal"
properties:
$ref: "#/components/schemas/Properties"
ListPartition:
type: object
required:
- type
- name
- lists
properties:
type:
type: string
enum:
- "list"
name:
$ref: "#/components/schemas/Name"
lists:
type: array
description: The values of the partition
items:
$ref: "#/components/schemas/ListValue"
properties:
$ref: "#/components/schemas/Properties"
responses:
PartitionListResponse:
description: Returns list of partition objects
content:
application/vnd.gravitino.v1+json:
schema:
$ref: "#/components/schemas/PartitionListResponse"
PartitionResponse:
description: Returns include the partition object
content:
application/vnd.gravitino.v1+json:
schema:
type: object
properties:
code:
type: integer
format: int32
description: Status code of the response
enum:
- 0
partition:
$ref: "#/components/schemas/PartitionSpec"
examples:
GetHivePartitionResponse:
$ref: "#/components/examples/HivePartitionResponse"
examples:
PartitionNameListResponse:
value: {
"code": 0,
"names": [
"p1",
"p2"
]
}
PartitionListResponse:
value: {
"code": 0,
"partitions": [
{
"type": "identity",
"name": "p1",
"fieldNames": [
[
"col1"
]
],
"values": [
{
"type": "literal",
"dataType": "string",
"value": "v1"
}
],
"properties": {}
},
{
"type": "identity",
"name": "p2",
"fieldNames": [
[
"col1"
]
],
"values": [
{
"type": "literal",
"dataType": "string",
"value": "v2"
}
],
"properties": {}
}
]
}
HiveAddPartition:
value: {
"partitions": [
{
"type": "identity",
"fieldNames": [
[
"hive_col_name2"
],
[
"hive_col_name3"
]
],
"values": [
{
"type": "literal",
"dataType": "date",
"value": "2023-01-02"
},
{
"type": "literal",
"dataType": "string",
"value": "gravitino_it_test2"
}
],
"properties": null
}
]
}
HivePartitionResponse:
value: {
"code": 0,
"partition": {
"type": "identity",
"name": "hive_col_name2=2023-01-01/hive_col_name3=gravitino_it_test",
"fieldNames": [
[
"hive_col_name2"
],
[
"hive_col_name3"
]
],
"values": [
{
"type": "literal",
"dataType": "string",
"value": "2023-01-01"
},
{
"type": "literal",
"dataType": "string",
"value": "gravitino_it_test"
}
],
"properties": {
"totalSize": "2",
"numRows": "0",
"rawDataSize": "0",
"COLUMN_STATS_ACCURATE": "{\"BASIC_STATS\":\"true\"}",
"numFiles": "1",
"transient_lastDdlTime": "1706950516"
}
}
}
PartitionAlreadyExistsErrorResponse:
value: {
"code": 1004,
"type": "PartitionAlreadyExistsException",
"message": "Failed to operate partition(s) operation [CREATE] of table [table1], reason [p1]",
"stack": [
"org.apache.gravitino.exceptions.PartitionAlreadyExistsException: p1",
"..."
]
}
NoSuchPartitionException:
value: {
"code": 1003,
"type": "NoSuchPartitionException",
"message": "Failed to operate partition(s) operation [GET] of table [table1], reason [p3]",
"stack": [
"org.apache.gravitino.exceptions.NoSuchPartitionException: p3",
"..."
]
}