rdblue commented on code in PR #9717:
URL: https://github.com/apache/iceberg/pull/9717#discussion_r1501932441
##########
open-api/rest-catalog-open-api.yaml:
##########
@@ -3324,6 +3324,274 @@ components:
type: integer
format: int64
+ BooleanTypeValue:
+ type: boolean
+ example: true
+
+ IntegerTypeValue:
+ type: integer
+ example: 42
+
+ LongTypeValue:
+ type: integer
+ format: int64
+ example: 9223372036854775807
+
+ FloatTypeValue:
+ type: number
+ format: float
+ example: 3.14
+
+ DoubleTypeValue:
+ type: number
+ format: double
+ example: 123.456
+
+ DecimalTypeValue:
+ type: string
+ description:
+ "Decimal type values are serialized as strings. Decimals with a
positive scale serialize as numeric plain
+ text, while decimals with a negative scale use scientific notation and
the exponent will be equal to the
+ negated scale. For instance, a decimal with a positive scale is
'123.4500', with zero scale is '2',
+ and with a negative scale is '2E+20'"
+ example: "123.4500"
+
+
+ StringTypeValue:
+ type: string
+ example: "hello"
+
+ UUIDTypeValue:
+ type: string
+ format: uuid
+ pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+ maxLength: 36
+ minLength: 36
+ description:
+ "UUID type values are serialized as a 36-character lowercase string in
standard UUID format as specified
+ by RFC-4122"
+ example: "eb26bdb1-a1d8-4aa6-990e-da940875492c"
+
+ DateTypeValue:
+ type: string
+ format: date
+ description:
+ "Date type values follow the 'YYYY-MM-DD' ISO-8601 standard date
format"
+ example: "2007-12-03"
+
+ TimeTypeValue:
+ type: string
+ description:
+ "Time type values follow the 'HH:MM[:SS[.sssssssss]]' ISO-8601 format
with microsecond precision"
+ example: "22:31:08.123456"
+
+ TimestampTypeValue:
+ type: string
+ description:
+ "Timestamp type values follow the 'YYYY-MM-DDTHH:MM:SS.ssssss'
ISO-8601 format with microsecond precision"
+ example: "2007-12-03T10:15:30.123456"
+
+ TimestampTzTypeValue:
+ type: string
+ description:
+ "TimestampTz type values follow the 'YYYY-MM-DDTHH:MM:SS.ssssss+00:00'
ISO-8601 format with microsecond precision,
+ and a timezone offset (+00:00 for UTC)"
+ example: "2007-12-03T10:15:30.123456+00:00"
+
+ TimestampNanoTypeValue:
+ type: string
+ description:
+ "Timestamp_ns type values follow the 'YYYY-MM-DDTHH:MM:SS.sssssssss'
ISO-8601 format with nanosecond precision"
+ example: "2007-12-03T10:15:30.123456789"
+
+ TimestampTzNanoTypeValue:
+ type: string
+ description:
+ "Timestamp_ns type values follow the
'YYYY-MM-DDTHH:MM:SS.sssssssss+00:00' ISO-8601 format with nanosecond
+ precision, and a timezone offset (+00:00 for UTC)"
+ example: "2007-12-03T10:15:30.123456789+00:00"
+
+
+ FixedTypeValue:
+ type: string
+ description:
+ "Fixed length type values are stored and serialized as an uppercase
hexadecimal string
+ preserving the fixed length"
+ example: "78797A"
+
+ BinaryTypeValue:
+ type: string
+ description:
+ "Binary type values are stored and serialized as an uppercase
hexadecimal string"
+ example: "78797A"
+
+
+ PartitionData:
+ type: object
+ description:
+ "Partition data is serialized, where field id are preserved as a
string JSON key, and the fields value is
+ serialized based on the defined types"
+ additionalProperties:
+ oneOf:
+ - $ref: '#/components/schemas/PrimitiveTypeValue'
+ example:
+ {
+ "4": 1,
+ "5": "bar"
+ }
+
+ CountMap:
+ type: object
+ properties:
+ keys:
+ type: array
+ items:
+ $ref: '#/components/schemas/IntegerTypeValue'
+ description: "List of integer column ids for each corresponding
value"
+ values:
+ type: array
+ items:
+ $ref: '#/components/schemas/LongTypeValue'
+ description: "List of Long values, matched to 'keys' by index"
+ example:
+ {
+ "keys": [ 3, 4 ],
+ "values": [ 100,200 ]
+ }
+
+ ValueMap:
+ type: object
+ properties:
+ keys:
+ type: array
+ items:
+ $ref: '#/components/schemas/IntegerTypeValue'
+ description: "List of integer column ids for each corresponding
value"
+ values:
+ type: array
+ items:
+ $ref: '#/components/schemas/BinaryTypeValue'
+ description: "List of Binary values encoded as hexadecimal strings,
matched to 'keys' by index"
+ example:
+ {
+ "keys": [ 3,4 ],
+ "values": [ "05000000","0A000000" ]
+ }
+
+ PrimitiveTypeValue:
+ oneOf:
+ - $ref: '#/components/schemas/BooleanTypeValue'
+ - $ref: '#/components/schemas/IntegerTypeValue'
+ - $ref: '#/components/schemas/LongTypeValue'
+ - $ref: '#/components/schemas/FloatTypeValue'
+ - $ref: '#/components/schemas/DoubleTypeValue'
+ - $ref: '#/components/schemas/DecimalTypeValue'
+ - $ref: '#/components/schemas/StringTypeValue'
+ - $ref: '#/components/schemas/UUIDTypeValue'
+ - $ref: '#/components/schemas/DateTypeValue'
+ - $ref: '#/components/schemas/TimeTypeValue'
+ - $ref: '#/components/schemas/TimestampTypeValue'
+ - $ref: '#/components/schemas/TimestampTzTypeValue'
+ - $ref: '#/components/schemas/TimestampNanoTypeValue'
+ - $ref: '#/components/schemas/TimestampTzNanoTypeValue'
+ - $ref: '#/components/schemas/FixedTypeValue'
+ - $ref: '#/components/schemas/BinaryTypeValue'
+
+ FileContent:
+ type: string
+ enum:
+ - data
+ - position-deletes
+ - equality-deletes
+
+ FileFormat:
+ type: string
+ enum:
+ - avro
+ - orc
+ - parquet
+
+ ContentFile:
+ type: object
+ required:
+ - spec-id
+ - content
+ - file-path
+ - file-format
+ - file-size-in-bytes
+ - record-count
+ properties:
+ content:
+ $ref: '#/components/schemas/FileContent'
+ file-path:
+ type: string
+ file-format:
+ $ref: '#/components/schemas/FileFormat'
+ spec-id:
+ type: integer
+ partition:
+ $ref: '#/components/schemas/PartitionData'
+ file-size-in-bytes:
+ type: integer
+ format: int64
+ description: "Total file size in bytes"
+ record-count:
+ type: integer
+ format: int64
+ description: "Number of records in the file"
+ key-metadata:
+ allOf:
+ - $ref: '#/components/schemas/BinaryTypeValue'
+ description: "Encryption key metadata blob"
+ split-offsets:
+ type: array
+ items:
+ type: integer
+ format: int64
+ description: "List of splittable offsets"
+ sort-order-id:
+ type: integer
+
+ DataFile:
+ allOf:
+ - $ref: '#/components/schemas/ContentFile'
+ type: object
+ properties:
Review Comment:
I would also add a restriction on `content` like we do for `action` in
updates:
```yaml
properties:
content:
type: string
enum: ["data"]
```
--
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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]