diff --git a/model/src/main/java/org/projectnessie/api/ContentApi.java b/model/src/main/java/org/projectnessie/api/ContentApi.java index 4136a527fd4..fa8d04bb043 100644 --- a/model/src/main/java/org/projectnessie/api/ContentApi.java +++ b/model/src/main/java/org/projectnessie/api/ContentApi.java @@ -39,7 +39,8 @@ public interface ContentApi { * *

If the table-metadata is tracked globally (Iceberg), Nessie returns a {@link Content} * object, that contains the most up-to-date part for the globally tracked part (Iceberg: - * table-metadata) plus the per-Nessie-reference/hash specific part (Iceberg: snapshot-ID). + * table-metadata) plus the per-Nessie-reference/hash specific part (Iceberg: snapshot-ID, + * schema-ID, partition-spec-ID, default-sort-order-ID). * * @param key the {@link ContentKey}s to retrieve * @param ref named-reference to retrieve the content for @@ -64,7 +65,8 @@ Content getContent( * *

If the table-metadata is tracked globally (Iceberg), Nessie returns a {@link Content} * object, that contains the most up-to-date part for the globally tracked part (Iceberg: - * table-metadata) plus the per-Nessie-reference/hash specific part (Iceberg: snapshot-ID). + * table-metadata) plus the per-Nessie-reference/hash specific part (Iceberg: snapshot-id, + * schema-id, partition-spec-id, default-sort-order-id). * * @param ref named-reference to retrieve the content for * @param hashOnRef hash on {@code ref} to retrieve the content for, translates to {@code HEAD}, diff --git a/model/src/main/java/org/projectnessie/api/http/HttpContentApi.java b/model/src/main/java/org/projectnessie/api/http/HttpContentApi.java index e18f8c039be..33e6470daa5 100644 --- a/model/src/main/java/org/projectnessie/api/http/HttpContentApi.java +++ b/model/src/main/java/org/projectnessie/api/http/HttpContentApi.java @@ -54,7 +54,8 @@ public interface HttpContentApi extends ContentApi { + "If the table-metadata is tracked globally (Iceberg), " + "Nessie returns a 'Content' object, that contains the most up-to-date part for " + "the globally tracked part (Iceberg: table-metadata) plus the " - + "per-Nessie-reference/hash specific part (Iceberg: snapshot-ID).") + + "per-Nessie-reference/hash specific part (Iceberg: snapshot-id, " + + "schema-id, partition-spec-id, default-sort-order-id).") @APIResponses({ @APIResponse( responseCode = "200", @@ -103,7 +104,8 @@ Content getContent( + "If the table-metadata is tracked globally (Iceberg), " + "Nessie returns a 'Content' object, that contains the most up-to-date part for " + "the globally tracked part (Iceberg: table-metadata) plus the " - + "per-Nessie-reference/hash specific part (Iceberg: snapshot-ID).") + + "per-Nessie-reference/hash specific part (Iceberg: snapshot-ID," + + "schema-ID, partition-spec-ID, default-sort-order-ID).") @APIResponses({ @APIResponse( responseCode = "200", diff --git a/model/src/main/java/org/projectnessie/model/IcebergTable.java b/model/src/main/java/org/projectnessie/model/IcebergTable.java index 74b926fec25..3f06bf4d592 100644 --- a/model/src/main/java/org/projectnessie/model/IcebergTable.java +++ b/model/src/main/java/org/projectnessie/model/IcebergTable.java @@ -28,14 +28,8 @@ * Represents the state of an Iceberg table in Nessie. An Iceberg table is globally identified via * its {@link Content#getId() unique ID}. * - *

The Iceberg-table-state consists of the location to the table-metadata and the state of the ID - * generators using the serialized version of Iceberg's {@code TableIdGenerators} object. - * - *

The table-metadata-location is managed on each Nessie reference, which means that all versions - * of the same table have distinct table-metadata across all named-references (branches and tags). - * - *

The information needed to generate IDs for an Iceberg table that need to be globally unique, - * for example the last-column-ID, is managed globally within Nessie. + *

The Iceberg-table-state consists of the location to the table-metadata and the state of + * relevant IDs using a serialized version of those. * *

When adding a new table (aka content-object identified by a content-id), use a {@link * org.projectnessie.model.Operation.Put} without an expected-value. In all other cases (updating an @@ -69,20 +63,38 @@ public abstract class IcebergTable extends Content { @NotBlank public abstract String getMetadataLocation(); - /** Opaque representation of Iceberg's {@code TableIdGenerators}. */ - public abstract String getIdGenerators(); + public abstract long getSnapshotId(); + + public abstract int getSchemaId(); + + public abstract int getSpecId(); + + public abstract int getSortOrderId(); - public static IcebergTable of(String metadataLocation, String idGenerators) { + public static IcebergTable of( + String metadataLocation, long snapshotId, int schemaId, int specId, int sortOrderId) { return ImmutableIcebergTable.builder() .metadataLocation(metadataLocation) - .idGenerators(idGenerators) + .snapshotId(snapshotId) + .schemaId(schemaId) + .specId(specId) + .sortOrderId(sortOrderId) .build(); } - public static IcebergTable of(String metadataLocation, String idGenerators, String contentId) { + public static IcebergTable of( + String metadataLocation, + long snapshotId, + int schemaId, + int specId, + int sortOrderId, + String contentId) { return ImmutableIcebergTable.builder() .metadataLocation(metadataLocation) - .idGenerators(idGenerators) + .snapshotId(snapshotId) + .schemaId(schemaId) + .specId(specId) + .sortOrderId(sortOrderId) .id(contentId) .build(); } diff --git a/perftest/simulations/src/test/scala/org/projectnessie/perftest/gatling/CommitToBranchSimulation.scala b/perftest/simulations/src/test/scala/org/projectnessie/perftest/gatling/CommitToBranchSimulation.scala index bf20df5004c..8296a798dd3 100644 --- a/perftest/simulations/src/test/scala/org/projectnessie/perftest/gatling/CommitToBranchSimulation.scala +++ b/perftest/simulations/src/test/scala/org/projectnessie/perftest/gatling/CommitToBranchSimulation.scala @@ -55,7 +55,14 @@ class CommitToBranchSimulation extends Simulation { val contentId = tableName val tableMeta = IcebergTable - .of(s"path_on_disk_${tableName}_$commitNum", "x", contentId) + .of( + s"path_on_disk_${tableName}_$commitNum", + 42, + 43, + 44, + 45, + contentId + ) // TODO the expectedContent is wrong!! commitNum is for the session, but we need the actual global state!! val op = @@ -65,7 +72,10 @@ class CommitToBranchSimulation extends Simulation { tableMeta, IcebergTable.of( s"path_on_disk_${tableName}_${commitNum - 1}", - "x", + 42, + 43, + 44, + 45, contentId ) ) diff --git a/python/pynessie/model.py b/python/pynessie/model.py index 7ac6bcea707..21c5644dab0 100644 --- a/python/pynessie/model.py +++ b/python/pynessie/model.py @@ -47,7 +47,10 @@ class IcebergTable(Content): """Dataclass for Nessie Content.""" metadata_location: str = desert.ib(fields.Str(data_key="metadataLocation")) - id_generators: str = desert.ib(fields.Str(data_key="idGenerators")) + snapshot_id: int = desert.ib(fields.Int(data_key="snapshotId")) + schema_id: int = desert.ib(fields.Int(data_key="schemaId")) + spec_id: int = desert.ib(fields.Int(data_key="specId")) + sort_order_id: int = desert.ib(fields.Int(data_key="sortOrderId")) @staticmethod def requires_expected_state() -> bool: @@ -56,7 +59,11 @@ def requires_expected_state() -> bool: def pretty_print(self: "IcebergTable") -> str: """Print out for cli.""" - return "Iceberg table:\n\tmetadata-location:{}\n\tid-generators:{}".format(self.metadata_location, self.id_generators) + return ( + f"Iceberg table:\n\tmetadata-location: {self.metadata_location}\n\tsnapshot-id: {self.snapshot_id}" + f"\n\tschema-id: {self.schema_id}" + f"\n\tpartition-spec-id: {self.spec_id}\n\tdefault-sort-order-id: {self.sort_order_id}" + ) IcebergTableSchema = desert.schema_class(IcebergTable) diff --git a/python/tests/cassettes/test_nessie_cli/test_assign.yaml b/python/tests/cassettes/test_nessie_cli/test_assign.yaml index 18b28440417..524bc31a93e 100644 --- a/python/tests/cassettes/test_nessie_cli/test_assign.yaml +++ b/python/tests/cassettes/test_nessie_cli/test_assign.yaml @@ -48,8 +48,8 @@ interactions: code: 200 message: OK - request: - body: '{"name": "dev", "hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", - "type": "BRANCH"}' + body: '{"hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", + "name": "dev", "type": "BRANCH"}' headers: Accept: - '*/*' @@ -131,11 +131,12 @@ interactions: code: 404 message: Not Found - request: - body: '{"commitMeta": {"commitTime": null, "author": "nessie test", "authorTime": - null, "hash": null, "properties": null, "committer": null, "message": "test - message", "signedOffBy": null}, "operations": [{"expectedContent": null, "key": - {"elements": ["assign", "foo", "bar"]}, "content": {"idGenerators": "xyz", "metadataLocation": - "/a/b/c", "id": "test_assign", "type": "ICEBERG_TABLE"}, "type": "PUT"}]}' + body: '{"commitMeta": {"hash": null, "authorTime": null, "signedOffBy": null, + "message": "test message", "commitTime": null, "properties": null, "committer": + null, "author": "nessie test"}, "operations": [{"expectedContent": null, "key": + {"elements": ["assign", "foo", "bar"]}, "content": {"specId": 44, "id": "test_assign", + "schemaId": 43, "snapshotId": 42, "sortOrderId": 45, "metadataLocation": "/a/b/c", + "type": "ICEBERG_TABLE"}, "type": "PUT"}]}' headers: Accept: - '*/*' @@ -144,7 +145,7 @@ interactions: Connection: - keep-alive Content-Length: - - '399' + - '443' Content-Type: - application/json User-Agent: @@ -153,7 +154,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/branch/dev/commit?expectedHash=2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" : \"9f983acf8888862652e98bb2528fc835afe1a119ad2f193e5158720438679e95\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" : \"291dd61cb415c8a23d3ea17fca9a55eaf2e7b5d259ec77469de82ffdc496c455\"\n}" headers: Content-Type: - application/json @@ -177,7 +178,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree/dev response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" : \"9f983acf8888862652e98bb2528fc835afe1a119ad2f193e5158720438679e95\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" : \"291dd61cb415c8a23d3ea17fca9a55eaf2e7b5d259ec77469de82ffdc496c455\"\n}" headers: Content-Type: - application/json @@ -187,8 +188,8 @@ interactions: code: 200 message: OK - request: - body: '{"name": "main", "hash": "9f983acf8888862652e98bb2528fc835afe1a119ad2f193e5158720438679e95", - "type": "BRANCH"}' + body: '{"hash": "291dd61cb415c8a23d3ea17fca9a55eaf2e7b5d259ec77469de82ffdc496c455", + "name": "main", "type": "BRANCH"}' headers: Accept: - '*/*' @@ -242,8 +243,8 @@ interactions: code: 200 message: OK - request: - body: '{"name": "dev", "hash": "9f983acf8888862652e98bb2528fc835afe1a119ad2f193e5158720438679e95", - "type": "BRANCH"}' + body: '{"hash": "291dd61cb415c8a23d3ea17fca9a55eaf2e7b5d259ec77469de82ffdc496c455", + "name": "dev", "type": "BRANCH"}' headers: Accept: - '*/*' @@ -282,9 +283,9 @@ interactions: response: body: string: "{\n \"token\" : null,\n \"references\" : [ {\n \"type\" : \"BRANCH\",\n - \ \"name\" : \"main\",\n \"hash\" : \"9f983acf8888862652e98bb2528fc835afe1a119ad2f193e5158720438679e95\"\n + \ \"name\" : \"main\",\n \"hash\" : \"291dd61cb415c8a23d3ea17fca9a55eaf2e7b5d259ec77469de82ffdc496c455\"\n \ }, {\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" - : \"9f983acf8888862652e98bb2528fc835afe1a119ad2f193e5158720438679e95\"\n } + : \"291dd61cb415c8a23d3ea17fca9a55eaf2e7b5d259ec77469de82ffdc496c455\"\n } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -309,7 +310,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree/main response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"9f983acf8888862652e98bb2528fc835afe1a119ad2f193e5158720438679e95\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"291dd61cb415c8a23d3ea17fca9a55eaf2e7b5d259ec77469de82ffdc496c455\"\n}" headers: Content-Type: - application/json @@ -319,8 +320,8 @@ interactions: code: 200 message: OK - request: - body: '{"name": "v1.0", "hash": "9f983acf8888862652e98bb2528fc835afe1a119ad2f193e5158720438679e95", - "type": "TAG"}' + body: '{"hash": "291dd61cb415c8a23d3ea17fca9a55eaf2e7b5d259ec77469de82ffdc496c455", + "name": "v1.0", "type": "TAG"}' headers: Accept: - '*/*' @@ -338,7 +339,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree?sourceRefName=main response: body: - string: "{\n \"type\" : \"TAG\",\n \"name\" : \"v1.0\",\n \"hash\" : \"9f983acf8888862652e98bb2528fc835afe1a119ad2f193e5158720438679e95\"\n}" + string: "{\n \"type\" : \"TAG\",\n \"name\" : \"v1.0\",\n \"hash\" : \"291dd61cb415c8a23d3ea17fca9a55eaf2e7b5d259ec77469de82ffdc496c455\"\n}" headers: Content-Type: - application/json @@ -363,10 +364,10 @@ interactions: response: body: string: "{\n \"token\" : null,\n \"references\" : [ {\n \"type\" : \"BRANCH\",\n - \ \"name\" : \"main\",\n \"hash\" : \"9f983acf8888862652e98bb2528fc835afe1a119ad2f193e5158720438679e95\"\n + \ \"name\" : \"main\",\n \"hash\" : \"291dd61cb415c8a23d3ea17fca9a55eaf2e7b5d259ec77469de82ffdc496c455\"\n \ }, {\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" - : \"9f983acf8888862652e98bb2528fc835afe1a119ad2f193e5158720438679e95\"\n }, - {\n \"type\" : \"TAG\",\n \"name\" : \"v1.0\",\n \"hash\" : \"9f983acf8888862652e98bb2528fc835afe1a119ad2f193e5158720438679e95\"\n + : \"291dd61cb415c8a23d3ea17fca9a55eaf2e7b5d259ec77469de82ffdc496c455\"\n }, + {\n \"type\" : \"TAG\",\n \"name\" : \"v1.0\",\n \"hash\" : \"291dd61cb415c8a23d3ea17fca9a55eaf2e7b5d259ec77469de82ffdc496c455\"\n \ } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -391,7 +392,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree/dev response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" : \"9f983acf8888862652e98bb2528fc835afe1a119ad2f193e5158720438679e95\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" : \"291dd61cb415c8a23d3ea17fca9a55eaf2e7b5d259ec77469de82ffdc496c455\"\n}" headers: Content-Type: - application/json @@ -401,8 +402,8 @@ interactions: code: 200 message: OK - request: - body: '{"name": "v1.0", "hash": "9f983acf8888862652e98bb2528fc835afe1a119ad2f193e5158720438679e95", - "type": "TAG"}' + body: '{"hash": "291dd61cb415c8a23d3ea17fca9a55eaf2e7b5d259ec77469de82ffdc496c455", + "name": "v1.0", "type": "TAG"}' headers: Accept: - '*/*' @@ -446,7 +447,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree/v1.0 response: body: - string: "{\n \"type\" : \"TAG\",\n \"name\" : \"v1.0\",\n \"hash\" : \"9f983acf8888862652e98bb2528fc835afe1a119ad2f193e5158720438679e95\"\n}" + string: "{\n \"type\" : \"TAG\",\n \"name\" : \"v1.0\",\n \"hash\" : \"291dd61cb415c8a23d3ea17fca9a55eaf2e7b5d259ec77469de82ffdc496c455\"\n}" headers: Content-Type: - application/json @@ -456,8 +457,8 @@ interactions: code: 200 message: OK - request: - body: '{"name": "dev", "hash": "9f983acf8888862652e98bb2528fc835afe1a119ad2f193e5158720438679e95", - "type": "TAG"}' + body: '{"hash": "291dd61cb415c8a23d3ea17fca9a55eaf2e7b5d259ec77469de82ffdc496c455", + "name": "dev", "type": "TAG"}' headers: Accept: - '*/*' @@ -472,7 +473,7 @@ interactions: User-Agent: - python-requests/2.26.0 method: PUT - uri: http://localhost:19120/api/v1/trees/tag/v1.0?expectedHash=9f983acf8888862652e98bb2528fc835afe1a119ad2f193e5158720438679e95 + uri: http://localhost:19120/api/v1/trees/tag/v1.0?expectedHash=291dd61cb415c8a23d3ea17fca9a55eaf2e7b5d259ec77469de82ffdc496c455 response: body: string: '' @@ -496,10 +497,10 @@ interactions: response: body: string: "{\n \"token\" : null,\n \"references\" : [ {\n \"type\" : \"BRANCH\",\n - \ \"name\" : \"main\",\n \"hash\" : \"9f983acf8888862652e98bb2528fc835afe1a119ad2f193e5158720438679e95\"\n + \ \"name\" : \"main\",\n \"hash\" : \"291dd61cb415c8a23d3ea17fca9a55eaf2e7b5d259ec77469de82ffdc496c455\"\n \ }, {\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" - : \"9f983acf8888862652e98bb2528fc835afe1a119ad2f193e5158720438679e95\"\n }, - {\n \"type\" : \"TAG\",\n \"name\" : \"v1.0\",\n \"hash\" : \"9f983acf8888862652e98bb2528fc835afe1a119ad2f193e5158720438679e95\"\n + : \"291dd61cb415c8a23d3ea17fca9a55eaf2e7b5d259ec77469de82ffdc496c455\"\n }, + {\n \"type\" : \"TAG\",\n \"name\" : \"v1.0\",\n \"hash\" : \"291dd61cb415c8a23d3ea17fca9a55eaf2e7b5d259ec77469de82ffdc496c455\"\n \ } ],\n \"hasMore\" : false\n}" headers: Content-Type: diff --git a/python/tests/cassettes/test_nessie_cli/test_branch.yaml b/python/tests/cassettes/test_nessie_cli/test_branch.yaml index 132630782bf..3b60e8f9a51 100644 --- a/python/tests/cassettes/test_nessie_cli/test_branch.yaml +++ b/python/tests/cassettes/test_nessie_cli/test_branch.yaml @@ -74,8 +74,8 @@ interactions: code: 200 message: OK - request: - body: '{"name": "dev", "hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", - "type": "BRANCH"}' + body: '{"hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", + "name": "dev", "type": "BRANCH"}' headers: Accept: - '*/*' @@ -155,8 +155,8 @@ interactions: code: 200 message: OK - request: - body: '{"name": "etl", "hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", - "type": "BRANCH"}' + body: '{"hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", + "name": "etl", "type": "BRANCH"}' headers: Accept: - '*/*' diff --git a/python/tests/cassettes/test_nessie_cli/test_log.yaml b/python/tests/cassettes/test_nessie_cli/test_log.yaml index 99cb554511d..564d97d3613 100644 --- a/python/tests/cassettes/test_nessie_cli/test_log.yaml +++ b/python/tests/cassettes/test_nessie_cli/test_log.yaml @@ -96,8 +96,8 @@ interactions: code: 200 message: OK - request: - body: '{"name": "dev_test_log", "hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", - "type": "BRANCH"}' + body: '{"hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", + "name": "dev_test_log", "type": "BRANCH"}' headers: Accept: - '*/*' @@ -180,11 +180,12 @@ interactions: code: 404 message: Not Found - request: - body: '{"commitMeta": {"commitTime": null, "author": "nessie_user1", "authorTime": - null, "hash": null, "properties": null, "committer": null, "message": "test - message", "signedOffBy": null}, "operations": [{"expectedContent": null, "key": - {"elements": ["log", "foo", "dev"]}, "content": {"idGenerators": "xyz", "metadataLocation": - "/a/b/c", "id": "test_log_dev", "type": "ICEBERG_TABLE"}, "type": "PUT"}]}' + body: '{"commitMeta": {"hash": null, "authorTime": null, "signedOffBy": null, + "message": "test message", "commitTime": null, "properties": null, "committer": + null, "author": "nessie_user1"}, "operations": [{"expectedContent": null, "key": + {"elements": ["log", "foo", "dev"]}, "content": {"specId": 44, "id": "test_log_dev", + "schemaId": 43, "snapshotId": 42, "sortOrderId": 45, "metadataLocation": "/a/b/c", + "type": "ICEBERG_TABLE"}, "type": "PUT"}]}' headers: Accept: - '*/*' @@ -193,7 +194,7 @@ interactions: Connection: - keep-alive Content-Length: - - '398' + - '442' Content-Type: - application/json User-Agent: @@ -203,7 +204,7 @@ interactions: response: body: string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"dev_test_log\",\n \"hash\" - : \"9a0c04da3ea2962f3d56ed1b4b8cfb15d40d090516a4ef8c1c024ac9a355d2da\"\n}" + : \"72a5b98f44c950bb86cd9d1039a431e79b10d3e6afb56a5e00df03a8c463e463\"\n}" headers: Content-Type: - application/json @@ -230,7 +231,7 @@ interactions: string: "{\n \"token\" : null,\n \"references\" : [ {\n \"type\" : \"BRANCH\",\n \ \"name\" : \"main\",\n \"hash\" : \"2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d\"\n \ }, {\n \"type\" : \"BRANCH\",\n \"name\" : \"dev_test_log\",\n \"hash\" - : \"9a0c04da3ea2962f3d56ed1b4b8cfb15d40d090516a4ef8c1c024ac9a355d2da\"\n } + : \"72a5b98f44c950bb86cd9d1039a431e79b10d3e6afb56a5e00df03a8c463e463\"\n } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -267,11 +268,12 @@ interactions: code: 404 message: Not Found - request: - body: '{"commitMeta": {"commitTime": null, "author": "nessie_user1", "authorTime": - null, "hash": null, "properties": null, "committer": null, "message": "test - message", "signedOffBy": null}, "operations": [{"expectedContent": null, "key": - {"elements": ["log", "foo", "bar"]}, "content": {"idGenerators": "xyz", "metadataLocation": - "/a/b/c", "id": "test_log", "type": "ICEBERG_TABLE"}, "type": "PUT"}]}' + body: '{"commitMeta": {"hash": null, "authorTime": null, "signedOffBy": null, + "message": "test message", "commitTime": null, "properties": null, "committer": + null, "author": "nessie_user1"}, "operations": [{"expectedContent": null, "key": + {"elements": ["log", "foo", "bar"]}, "content": {"specId": 44, "id": "test_log", + "schemaId": 43, "snapshotId": 42, "sortOrderId": 45, "metadataLocation": "/a/b/c", + "type": "ICEBERG_TABLE"}, "type": "PUT"}]}' headers: Accept: - '*/*' @@ -280,7 +282,7 @@ interactions: Connection: - keep-alive Content-Length: - - '394' + - '438' Content-Type: - application/json User-Agent: @@ -289,7 +291,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/branch/main/commit?expectedHash=2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"d7f2439ccdcb233ce58085b4a3c4c81dc88a370d42caa524838b36417e3fed2d\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"807d617005ada6cb8008ce394ea72d1c9ca3d805afaa2ea896b0ff26aa840777\"\n}" headers: Content-Type: - application/json @@ -313,7 +315,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"d7f2439ccdcb233ce58085b4a3c4c81dc88a370d42caa524838b36417e3fed2d\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"807d617005ada6cb8008ce394ea72d1c9ca3d805afaa2ea896b0ff26aa840777\"\n}" headers: Content-Type: - application/json @@ -338,12 +340,13 @@ interactions: response: body: string: "{\n \"type\" : \"ICEBERG_TABLE\",\n \"id\" : \"test_log\",\n \"metadataLocation\" - : \"/a/b/c\",\n \"idGenerators\" : \"xyz\"\n}" + : \"/a/b/c\",\n \"snapshotId\" : 42,\n \"schemaId\" : 43,\n \"specId\" + : 44,\n \"sortOrderId\" : 45\n}" headers: Content-Type: - application/json content-length: - - '110' + - '163' status: code: 200 message: OK @@ -362,7 +365,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"d7f2439ccdcb233ce58085b4a3c4c81dc88a370d42caa524838b36417e3fed2d\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"807d617005ada6cb8008ce394ea72d1c9ca3d805afaa2ea896b0ff26aa840777\"\n}" headers: Content-Type: - application/json @@ -386,10 +389,10 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree/main/log response: body: - string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"d7f2439ccdcb233ce58085b4a3c4c81dc88a370d42caa524838b36417e3fed2d\",\n + string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"807d617005ada6cb8008ce394ea72d1c9ca3d805afaa2ea896b0ff26aa840777\",\n \ \"committer\" : \"\",\n \"author\" : \"nessie_user1\",\n \"signedOffBy\" - : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-08T16:11:46.508832Z\",\n - \ \"authorTime\" : \"2021-11-08T16:11:46.508832Z\",\n \"properties\" + : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-11T14:53:56.524663Z\",\n + \ \"authorTime\" : \"2021-11-11T14:53:56.524663Z\",\n \"properties\" : { }\n } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -414,7 +417,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"d7f2439ccdcb233ce58085b4a3c4c81dc88a370d42caa524838b36417e3fed2d\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"807d617005ada6cb8008ce394ea72d1c9ca3d805afaa2ea896b0ff26aa840777\"\n}" headers: Content-Type: - application/json @@ -435,13 +438,13 @@ interactions: User-Agent: - python-requests/2.26.0 method: GET - uri: http://localhost:19120/api/v1/trees/tree/main/log?endHash=d7f2439ccdcb233ce58085b4a3c4c81dc88a370d42caa524838b36417e3fed2d + uri: http://localhost:19120/api/v1/trees/tree/main/log?endHash=807d617005ada6cb8008ce394ea72d1c9ca3d805afaa2ea896b0ff26aa840777 response: body: - string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"d7f2439ccdcb233ce58085b4a3c4c81dc88a370d42caa524838b36417e3fed2d\",\n + string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"807d617005ada6cb8008ce394ea72d1c9ca3d805afaa2ea896b0ff26aa840777\",\n \ \"committer\" : \"\",\n \"author\" : \"nessie_user1\",\n \"signedOffBy\" - : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-08T16:11:46.508832Z\",\n - \ \"authorTime\" : \"2021-11-08T16:11:46.508832Z\",\n \"properties\" + : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-11T14:53:56.524663Z\",\n + \ \"authorTime\" : \"2021-11-11T14:53:56.524663Z\",\n \"properties\" : { }\n } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -466,7 +469,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"d7f2439ccdcb233ce58085b4a3c4c81dc88a370d42caa524838b36417e3fed2d\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"807d617005ada6cb8008ce394ea72d1c9ca3d805afaa2ea896b0ff26aa840777\"\n}" headers: Content-Type: - application/json @@ -502,10 +505,10 @@ interactions: code: 200 message: OK - request: - body: '{"commitMeta": {"commitTime": null, "author": "nessie_user2", "authorTime": - null, "hash": null, "properties": null, "committer": null, "message": "delete_message", - "signedOffBy": null}, "operations": [{"key": {"elements": ["log", "foo", "bar"]}, - "type": "DELETE"}]}' + body: '{"commitMeta": {"hash": null, "authorTime": null, "signedOffBy": null, + "message": "delete_message", "commitTime": null, "properties": null, "committer": + null, "author": "nessie_user2"}, "operations": [{"key": {"elements": ["log", + "foo", "bar"]}, "type": "DELETE"}]}' headers: Accept: - '*/*' @@ -520,10 +523,10 @@ interactions: User-Agent: - python-requests/2.26.0 method: POST - uri: http://localhost:19120/api/v1/trees/branch/main/commit?expectedHash=d7f2439ccdcb233ce58085b4a3c4c81dc88a370d42caa524838b36417e3fed2d + uri: http://localhost:19120/api/v1/trees/branch/main/commit?expectedHash=807d617005ada6cb8008ce394ea72d1c9ca3d805afaa2ea896b0ff26aa840777 response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"08d4b67cabbc709cbad9e9f5618a3196e5ace53088b1322a8c7181afc56126a1\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"6cddad4ab780c81e09876d88e51cd18833c671cf41e9b7d3e2126bdc20c96d94\"\n}" headers: Content-Type: - application/json @@ -547,7 +550,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"08d4b67cabbc709cbad9e9f5618a3196e5ace53088b1322a8c7181afc56126a1\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"6cddad4ab780c81e09876d88e51cd18833c671cf41e9b7d3e2126bdc20c96d94\"\n}" headers: Content-Type: - application/json @@ -571,11 +574,11 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree/main/log?max=1 response: body: - string: "{\n \"token\" : \"d7f2439ccdcb233ce58085b4a3c4c81dc88a370d42caa524838b36417e3fed2d\",\n - \ \"operations\" : [ {\n \"hash\" : \"08d4b67cabbc709cbad9e9f5618a3196e5ace53088b1322a8c7181afc56126a1\",\n + string: "{\n \"token\" : \"807d617005ada6cb8008ce394ea72d1c9ca3d805afaa2ea896b0ff26aa840777\",\n + \ \"operations\" : [ {\n \"hash\" : \"6cddad4ab780c81e09876d88e51cd18833c671cf41e9b7d3e2126bdc20c96d94\",\n \ \"committer\" : \"\",\n \"author\" : \"nessie_user2\",\n \"signedOffBy\" - : null,\n \"message\" : \"delete_message\",\n \"commitTime\" : \"2021-11-08T16:11:46.685649Z\",\n - \ \"authorTime\" : \"2021-11-08T16:11:46.685649Z\",\n \"properties\" + : null,\n \"message\" : \"delete_message\",\n \"commitTime\" : \"2021-11-11T14:53:56.700638Z\",\n + \ \"authorTime\" : \"2021-11-11T14:53:56.700638Z\",\n \"properties\" : { }\n } ],\n \"hasMore\" : true\n}" headers: Content-Type: @@ -600,10 +603,10 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree/dev_test_log/log response: body: - string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"9a0c04da3ea2962f3d56ed1b4b8cfb15d40d090516a4ef8c1c024ac9a355d2da\",\n + string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"72a5b98f44c950bb86cd9d1039a431e79b10d3e6afb56a5e00df03a8c463e463\",\n \ \"committer\" : \"\",\n \"author\" : \"nessie_user1\",\n \"signedOffBy\" - : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-08T16:11:46.426175Z\",\n - \ \"authorTime\" : \"2021-11-08T16:11:46.426175Z\",\n \"properties\" + : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-11T14:53:56.443550Z\",\n + \ \"authorTime\" : \"2021-11-11T14:53:56.443550Z\",\n \"properties\" : { }\n } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -628,7 +631,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"08d4b67cabbc709cbad9e9f5618a3196e5ace53088b1322a8c7181afc56126a1\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"6cddad4ab780c81e09876d88e51cd18833c671cf41e9b7d3e2126bdc20c96d94\"\n}" headers: Content-Type: - application/json @@ -652,14 +655,14 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree/main/log response: body: - string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"08d4b67cabbc709cbad9e9f5618a3196e5ace53088b1322a8c7181afc56126a1\",\n + string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"6cddad4ab780c81e09876d88e51cd18833c671cf41e9b7d3e2126bdc20c96d94\",\n \ \"committer\" : \"\",\n \"author\" : \"nessie_user2\",\n \"signedOffBy\" - : null,\n \"message\" : \"delete_message\",\n \"commitTime\" : \"2021-11-08T16:11:46.685649Z\",\n - \ \"authorTime\" : \"2021-11-08T16:11:46.685649Z\",\n \"properties\" - : { }\n }, {\n \"hash\" : \"d7f2439ccdcb233ce58085b4a3c4c81dc88a370d42caa524838b36417e3fed2d\",\n + : null,\n \"message\" : \"delete_message\",\n \"commitTime\" : \"2021-11-11T14:53:56.700638Z\",\n + \ \"authorTime\" : \"2021-11-11T14:53:56.700638Z\",\n \"properties\" + : { }\n }, {\n \"hash\" : \"807d617005ada6cb8008ce394ea72d1c9ca3d805afaa2ea896b0ff26aa840777\",\n \ \"committer\" : \"\",\n \"author\" : \"nessie_user1\",\n \"signedOffBy\" - : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-08T16:11:46.508832Z\",\n - \ \"authorTime\" : \"2021-11-08T16:11:46.508832Z\",\n \"properties\" + : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-11T14:53:56.524663Z\",\n + \ \"authorTime\" : \"2021-11-11T14:53:56.524663Z\",\n \"properties\" : { }\n } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -684,7 +687,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"08d4b67cabbc709cbad9e9f5618a3196e5ace53088b1322a8c7181afc56126a1\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"6cddad4ab780c81e09876d88e51cd18833c671cf41e9b7d3e2126bdc20c96d94\"\n}" headers: Content-Type: - application/json @@ -705,13 +708,13 @@ interactions: User-Agent: - python-requests/2.26.0 method: GET - uri: http://localhost:19120/api/v1/trees/tree/main/log?startHash=08d4b67cabbc709cbad9e9f5618a3196e5ace53088b1322a8c7181afc56126a1&endHash=d7f2439ccdcb233ce58085b4a3c4c81dc88a370d42caa524838b36417e3fed2d + uri: http://localhost:19120/api/v1/trees/tree/main/log?startHash=6cddad4ab780c81e09876d88e51cd18833c671cf41e9b7d3e2126bdc20c96d94&endHash=807d617005ada6cb8008ce394ea72d1c9ca3d805afaa2ea896b0ff26aa840777 response: body: - string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"d7f2439ccdcb233ce58085b4a3c4c81dc88a370d42caa524838b36417e3fed2d\",\n + string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"807d617005ada6cb8008ce394ea72d1c9ca3d805afaa2ea896b0ff26aa840777\",\n \ \"committer\" : \"\",\n \"author\" : \"nessie_user1\",\n \"signedOffBy\" - : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-08T16:11:46.508832Z\",\n - \ \"authorTime\" : \"2021-11-08T16:11:46.508832Z\",\n \"properties\" + : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-11T14:53:56.524663Z\",\n + \ \"authorTime\" : \"2021-11-11T14:53:56.524663Z\",\n \"properties\" : { }\n } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -736,7 +739,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"08d4b67cabbc709cbad9e9f5618a3196e5ace53088b1322a8c7181afc56126a1\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"6cddad4ab780c81e09876d88e51cd18833c671cf41e9b7d3e2126bdc20c96d94\"\n}" headers: Content-Type: - application/json @@ -760,14 +763,14 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree/main/log response: body: - string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"08d4b67cabbc709cbad9e9f5618a3196e5ace53088b1322a8c7181afc56126a1\",\n + string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"6cddad4ab780c81e09876d88e51cd18833c671cf41e9b7d3e2126bdc20c96d94\",\n \ \"committer\" : \"\",\n \"author\" : \"nessie_user2\",\n \"signedOffBy\" - : null,\n \"message\" : \"delete_message\",\n \"commitTime\" : \"2021-11-08T16:11:46.685649Z\",\n - \ \"authorTime\" : \"2021-11-08T16:11:46.685649Z\",\n \"properties\" - : { }\n }, {\n \"hash\" : \"d7f2439ccdcb233ce58085b4a3c4c81dc88a370d42caa524838b36417e3fed2d\",\n + : null,\n \"message\" : \"delete_message\",\n \"commitTime\" : \"2021-11-11T14:53:56.700638Z\",\n + \ \"authorTime\" : \"2021-11-11T14:53:56.700638Z\",\n \"properties\" + : { }\n }, {\n \"hash\" : \"807d617005ada6cb8008ce394ea72d1c9ca3d805afaa2ea896b0ff26aa840777\",\n \ \"committer\" : \"\",\n \"author\" : \"nessie_user1\",\n \"signedOffBy\" - : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-08T16:11:46.508832Z\",\n - \ \"authorTime\" : \"2021-11-08T16:11:46.508832Z\",\n \"properties\" + : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-11T14:53:56.524663Z\",\n + \ \"authorTime\" : \"2021-11-11T14:53:56.524663Z\",\n \"properties\" : { }\n } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -792,7 +795,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"08d4b67cabbc709cbad9e9f5618a3196e5ace53088b1322a8c7181afc56126a1\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"6cddad4ab780c81e09876d88e51cd18833c671cf41e9b7d3e2126bdc20c96d94\"\n}" headers: Content-Type: - application/json @@ -816,10 +819,10 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree/main/log?query_expression=commit.author%3D%3D%27nessie_user1%27 response: body: - string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"d7f2439ccdcb233ce58085b4a3c4c81dc88a370d42caa524838b36417e3fed2d\",\n + string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"807d617005ada6cb8008ce394ea72d1c9ca3d805afaa2ea896b0ff26aa840777\",\n \ \"committer\" : \"\",\n \"author\" : \"nessie_user1\",\n \"signedOffBy\" - : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-08T16:11:46.508832Z\",\n - \ \"authorTime\" : \"2021-11-08T16:11:46.508832Z\",\n \"properties\" + : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-11T14:53:56.524663Z\",\n + \ \"authorTime\" : \"2021-11-11T14:53:56.524663Z\",\n \"properties\" : { }\n } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -844,7 +847,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"08d4b67cabbc709cbad9e9f5618a3196e5ace53088b1322a8c7181afc56126a1\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"6cddad4ab780c81e09876d88e51cd18833c671cf41e9b7d3e2126bdc20c96d94\"\n}" headers: Content-Type: - application/json @@ -868,10 +871,10 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree/main/log?query_expression=commit.author%3D%3D%27nessie_user2%27 response: body: - string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"08d4b67cabbc709cbad9e9f5618a3196e5ace53088b1322a8c7181afc56126a1\",\n + string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"6cddad4ab780c81e09876d88e51cd18833c671cf41e9b7d3e2126bdc20c96d94\",\n \ \"committer\" : \"\",\n \"author\" : \"nessie_user2\",\n \"signedOffBy\" - : null,\n \"message\" : \"delete_message\",\n \"commitTime\" : \"2021-11-08T16:11:46.685649Z\",\n - \ \"authorTime\" : \"2021-11-08T16:11:46.685649Z\",\n \"properties\" + : null,\n \"message\" : \"delete_message\",\n \"commitTime\" : \"2021-11-11T14:53:56.700638Z\",\n + \ \"authorTime\" : \"2021-11-11T14:53:56.700638Z\",\n \"properties\" : { }\n } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -896,7 +899,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"08d4b67cabbc709cbad9e9f5618a3196e5ace53088b1322a8c7181afc56126a1\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"6cddad4ab780c81e09876d88e51cd18833c671cf41e9b7d3e2126bdc20c96d94\"\n}" headers: Content-Type: - application/json @@ -920,14 +923,14 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree/main/log?query_expression=%28commit.author%3D%3D%27nessie_user2%27+%7C%7C+commit.author%3D%3D%27nessie_user1%27%29 response: body: - string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"08d4b67cabbc709cbad9e9f5618a3196e5ace53088b1322a8c7181afc56126a1\",\n + string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"6cddad4ab780c81e09876d88e51cd18833c671cf41e9b7d3e2126bdc20c96d94\",\n \ \"committer\" : \"\",\n \"author\" : \"nessie_user2\",\n \"signedOffBy\" - : null,\n \"message\" : \"delete_message\",\n \"commitTime\" : \"2021-11-08T16:11:46.685649Z\",\n - \ \"authorTime\" : \"2021-11-08T16:11:46.685649Z\",\n \"properties\" - : { }\n }, {\n \"hash\" : \"d7f2439ccdcb233ce58085b4a3c4c81dc88a370d42caa524838b36417e3fed2d\",\n + : null,\n \"message\" : \"delete_message\",\n \"commitTime\" : \"2021-11-11T14:53:56.700638Z\",\n + \ \"authorTime\" : \"2021-11-11T14:53:56.700638Z\",\n \"properties\" + : { }\n }, {\n \"hash\" : \"807d617005ada6cb8008ce394ea72d1c9ca3d805afaa2ea896b0ff26aa840777\",\n \ \"committer\" : \"\",\n \"author\" : \"nessie_user1\",\n \"signedOffBy\" - : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-08T16:11:46.508832Z\",\n - \ \"authorTime\" : \"2021-11-08T16:11:46.508832Z\",\n \"properties\" + : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-11T14:53:56.524663Z\",\n + \ \"authorTime\" : \"2021-11-11T14:53:56.524663Z\",\n \"properties\" : { }\n } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -952,7 +955,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"08d4b67cabbc709cbad9e9f5618a3196e5ace53088b1322a8c7181afc56126a1\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"6cddad4ab780c81e09876d88e51cd18833c671cf41e9b7d3e2126bdc20c96d94\"\n}" headers: Content-Type: - application/json @@ -976,14 +979,14 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree/main/log?query_expression=commit.committer%3D%3D%27%27 response: body: - string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"08d4b67cabbc709cbad9e9f5618a3196e5ace53088b1322a8c7181afc56126a1\",\n + string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"6cddad4ab780c81e09876d88e51cd18833c671cf41e9b7d3e2126bdc20c96d94\",\n \ \"committer\" : \"\",\n \"author\" : \"nessie_user2\",\n \"signedOffBy\" - : null,\n \"message\" : \"delete_message\",\n \"commitTime\" : \"2021-11-08T16:11:46.685649Z\",\n - \ \"authorTime\" : \"2021-11-08T16:11:46.685649Z\",\n \"properties\" - : { }\n }, {\n \"hash\" : \"d7f2439ccdcb233ce58085b4a3c4c81dc88a370d42caa524838b36417e3fed2d\",\n + : null,\n \"message\" : \"delete_message\",\n \"commitTime\" : \"2021-11-11T14:53:56.700638Z\",\n + \ \"authorTime\" : \"2021-11-11T14:53:56.700638Z\",\n \"properties\" + : { }\n }, {\n \"hash\" : \"807d617005ada6cb8008ce394ea72d1c9ca3d805afaa2ea896b0ff26aa840777\",\n \ \"committer\" : \"\",\n \"author\" : \"nessie_user1\",\n \"signedOffBy\" - : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-08T16:11:46.508832Z\",\n - \ \"authorTime\" : \"2021-11-08T16:11:46.508832Z\",\n \"properties\" + : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-11T14:53:56.524663Z\",\n + \ \"authorTime\" : \"2021-11-11T14:53:56.524663Z\",\n \"properties\" : { }\n } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -1008,7 +1011,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"08d4b67cabbc709cbad9e9f5618a3196e5ace53088b1322a8c7181afc56126a1\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"6cddad4ab780c81e09876d88e51cd18833c671cf41e9b7d3e2126bdc20c96d94\"\n}" headers: Content-Type: - application/json @@ -1032,10 +1035,10 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree/main/log?query_expression=commit.author+%3D%3D+%27nessie_user2%27+%7C%7C+commit.author+%3D%3D+%27non_existing%27 response: body: - string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"08d4b67cabbc709cbad9e9f5618a3196e5ace53088b1322a8c7181afc56126a1\",\n + string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"6cddad4ab780c81e09876d88e51cd18833c671cf41e9b7d3e2126bdc20c96d94\",\n \ \"committer\" : \"\",\n \"author\" : \"nessie_user2\",\n \"signedOffBy\" - : null,\n \"message\" : \"delete_message\",\n \"commitTime\" : \"2021-11-08T16:11:46.685649Z\",\n - \ \"authorTime\" : \"2021-11-08T16:11:46.685649Z\",\n \"properties\" + : null,\n \"message\" : \"delete_message\",\n \"commitTime\" : \"2021-11-11T14:53:56.700638Z\",\n + \ \"authorTime\" : \"2021-11-11T14:53:56.700638Z\",\n \"properties\" : { }\n } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -1060,7 +1063,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"08d4b67cabbc709cbad9e9f5618a3196e5ace53088b1322a8c7181afc56126a1\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"6cddad4ab780c81e09876d88e51cd18833c671cf41e9b7d3e2126bdc20c96d94\"\n}" headers: Content-Type: - application/json @@ -1084,14 +1087,14 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree/main/log?query_expression=%28timestamp%28commit.commitTime%29+%3E+timestamp%28%272001-01-01T00%3A00%3A00%2B00%3A00%27%29+%26%26+timestamp%28commit.commitTime%29+%3C+timestamp%28%272999-12-30T23%3A00%3A00%2B00%3A00%27%29%29 response: body: - string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"08d4b67cabbc709cbad9e9f5618a3196e5ace53088b1322a8c7181afc56126a1\",\n + string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"6cddad4ab780c81e09876d88e51cd18833c671cf41e9b7d3e2126bdc20c96d94\",\n \ \"committer\" : \"\",\n \"author\" : \"nessie_user2\",\n \"signedOffBy\" - : null,\n \"message\" : \"delete_message\",\n \"commitTime\" : \"2021-11-08T16:11:46.685649Z\",\n - \ \"authorTime\" : \"2021-11-08T16:11:46.685649Z\",\n \"properties\" - : { }\n }, {\n \"hash\" : \"d7f2439ccdcb233ce58085b4a3c4c81dc88a370d42caa524838b36417e3fed2d\",\n + : null,\n \"message\" : \"delete_message\",\n \"commitTime\" : \"2021-11-11T14:53:56.700638Z\",\n + \ \"authorTime\" : \"2021-11-11T14:53:56.700638Z\",\n \"properties\" + : { }\n }, {\n \"hash\" : \"807d617005ada6cb8008ce394ea72d1c9ca3d805afaa2ea896b0ff26aa840777\",\n \ \"committer\" : \"\",\n \"author\" : \"nessie_user1\",\n \"signedOffBy\" - : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-08T16:11:46.508832Z\",\n - \ \"authorTime\" : \"2021-11-08T16:11:46.508832Z\",\n \"properties\" + : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-11T14:53:56.524663Z\",\n + \ \"authorTime\" : \"2021-11-11T14:53:56.524663Z\",\n \"properties\" : { }\n } ],\n \"hasMore\" : false\n}" headers: Content-Type: diff --git a/python/tests/cassettes/test_nessie_cli/test_merge.yaml b/python/tests/cassettes/test_nessie_cli/test_merge.yaml index 93ea8baa3f4..1db43776d64 100644 --- a/python/tests/cassettes/test_nessie_cli/test_merge.yaml +++ b/python/tests/cassettes/test_nessie_cli/test_merge.yaml @@ -48,8 +48,8 @@ interactions: code: 200 message: OK - request: - body: '{"name": "dev", "hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", - "type": "BRANCH"}' + body: '{"hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", + "name": "dev", "type": "BRANCH"}' headers: Accept: - '*/*' @@ -131,11 +131,12 @@ interactions: code: 404 message: Not Found - request: - body: '{"commitMeta": {"commitTime": null, "author": "nessie test", "authorTime": - null, "hash": null, "properties": null, "committer": null, "message": "test - message", "signedOffBy": null}, "operations": [{"expectedContent": null, "key": - {"elements": ["merge", "foo", "bar"]}, "content": {"idGenerators": "xyz", "metadataLocation": - "/a/b/c", "id": "test_merge", "type": "ICEBERG_TABLE"}, "type": "PUT"}]}' + body: '{"commitMeta": {"hash": null, "authorTime": null, "signedOffBy": null, + "message": "test message", "commitTime": null, "properties": null, "committer": + null, "author": "nessie test"}, "operations": [{"expectedContent": null, "key": + {"elements": ["merge", "foo", "bar"]}, "content": {"specId": 44, "id": "test_merge", + "schemaId": 43, "snapshotId": 42, "sortOrderId": 45, "metadataLocation": "/a/b/c", + "type": "ICEBERG_TABLE"}, "type": "PUT"}]}' headers: Accept: - '*/*' @@ -144,7 +145,7 @@ interactions: Connection: - keep-alive Content-Length: - - '397' + - '441' Content-Type: - application/json User-Agent: @@ -153,7 +154,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/branch/dev/commit?expectedHash=2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" : \"120fd20c68e136107564c20a87182b49cf256eddede9d4af336e7d3de06f23f9\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" : \"1d26ea747944ead371eeeabc5229af13bcfe6069611cc894116c06c9c2125512\"\n}" headers: Content-Type: - application/json @@ -180,7 +181,7 @@ interactions: string: "{\n \"token\" : null,\n \"references\" : [ {\n \"type\" : \"BRANCH\",\n \ \"name\" : \"main\",\n \"hash\" : \"2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d\"\n \ }, {\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" - : \"120fd20c68e136107564c20a87182b49cf256eddede9d4af336e7d3de06f23f9\"\n } + : \"1d26ea747944ead371eeeabc5229af13bcfe6069611cc894116c06c9c2125512\"\n } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -229,7 +230,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree/dev response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" : \"120fd20c68e136107564c20a87182b49cf256eddede9d4af336e7d3de06f23f9\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" : \"1d26ea747944ead371eeeabc5229af13bcfe6069611cc894116c06c9c2125512\"\n}" headers: Content-Type: - application/json @@ -239,7 +240,8 @@ interactions: code: 200 message: OK - request: - body: '{"fromRefName": "dev", "fromHash": "120fd20c68e136107564c20a87182b49cf256eddede9d4af336e7d3de06f23f9"}' + body: '{"fromHash": "1d26ea747944ead371eeeabc5229af13bcfe6069611cc894116c06c9c2125512", + "fromRefName": "dev"}' headers: Accept: - '*/*' @@ -278,9 +280,9 @@ interactions: response: body: string: "{\n \"token\" : null,\n \"references\" : [ {\n \"type\" : \"BRANCH\",\n - \ \"name\" : \"main\",\n \"hash\" : \"120fd20c68e136107564c20a87182b49cf256eddede9d4af336e7d3de06f23f9\"\n + \ \"name\" : \"main\",\n \"hash\" : \"1d26ea747944ead371eeeabc5229af13bcfe6069611cc894116c06c9c2125512\"\n \ }, {\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" - : \"120fd20c68e136107564c20a87182b49cf256eddede9d4af336e7d3de06f23f9\"\n } + : \"1d26ea747944ead371eeeabc5229af13bcfe6069611cc894116c06c9c2125512\"\n } ],\n \"hasMore\" : false\n}" headers: Content-Type: diff --git a/python/tests/cassettes/test_nessie_cli/test_tag.yaml b/python/tests/cassettes/test_nessie_cli/test_tag.yaml index 33b3d6e8a45..48293720c98 100644 --- a/python/tests/cassettes/test_nessie_cli/test_tag.yaml +++ b/python/tests/cassettes/test_nessie_cli/test_tag.yaml @@ -50,8 +50,8 @@ interactions: code: 200 message: OK - request: - body: '{"name": "dev-tag", "hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", - "type": "TAG"}' + body: '{"hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", + "name": "dev-tag", "type": "TAG"}' headers: Accept: - '*/*' @@ -131,8 +131,8 @@ interactions: code: 200 message: OK - request: - body: '{"name": "etl-tag", "hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", - "type": "TAG"}' + body: '{"hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", + "name": "etl-tag", "type": "TAG"}' headers: Accept: - '*/*' @@ -413,8 +413,8 @@ interactions: code: 200 message: OK - request: - body: '{"name": "v1.0", "hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", - "type": "TAG"}' + body: '{"hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", + "name": "v1.0", "type": "TAG"}' headers: Accept: - '*/*' diff --git a/python/tests/cassettes/test_nessie_cli/test_transplant.yaml b/python/tests/cassettes/test_nessie_cli/test_transplant.yaml index 247f303e9c8..3025a500da6 100644 --- a/python/tests/cassettes/test_nessie_cli/test_transplant.yaml +++ b/python/tests/cassettes/test_nessie_cli/test_transplant.yaml @@ -48,8 +48,8 @@ interactions: code: 200 message: OK - request: - body: '{"name": "dev", "hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", - "type": "BRANCH"}' + body: '{"hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", + "name": "dev", "type": "BRANCH"}' headers: Accept: - '*/*' @@ -131,12 +131,12 @@ interactions: code: 404 message: Not Found - request: - body: '{"commitMeta": {"commitTime": null, "author": "nessie test", "authorTime": - null, "hash": null, "properties": null, "committer": null, "message": "test - message", "signedOffBy": null}, "operations": [{"expectedContent": null, "key": - {"elements": ["transplant", "foo", "bar"]}, "content": {"idGenerators": "xyz", - "metadataLocation": "/a/b/c", "id": "test_transplant_1", "type": "ICEBERG_TABLE"}, - "type": "PUT"}]}' + body: '{"commitMeta": {"hash": null, "authorTime": null, "signedOffBy": null, + "message": "test message", "commitTime": null, "properties": null, "committer": + null, "author": "nessie test"}, "operations": [{"expectedContent": null, "key": + {"elements": ["transplant", "foo", "bar"]}, "content": {"specId": 44, "id": + "test_transplant_1", "schemaId": 43, "snapshotId": 42, "sortOrderId": 45, "metadataLocation": + "/a/b/c", "type": "ICEBERG_TABLE"}, "type": "PUT"}]}' headers: Accept: - '*/*' @@ -145,7 +145,7 @@ interactions: Connection: - keep-alive Content-Length: - - '409' + - '453' Content-Type: - application/json User-Agent: @@ -154,7 +154,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/branch/dev/commit?expectedHash=2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" : \"361fcc55fa0489aa62c931d1e3a83f85703142eef392b020420bdcb881353a87\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" : \"951f5e148490c1d885fc1bac6f093206349fd5acfb56efeff64a48014e0366de\"\n}" headers: Content-Type: - application/json @@ -181,7 +181,7 @@ interactions: string: "{\n \"token\" : null,\n \"references\" : [ {\n \"type\" : \"BRANCH\",\n \ \"name\" : \"main\",\n \"hash\" : \"2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d\"\n \ }, {\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" - : \"361fcc55fa0489aa62c931d1e3a83f85703142eef392b020420bdcb881353a87\"\n } + : \"951f5e148490c1d885fc1bac6f093206349fd5acfb56efeff64a48014e0366de\"\n } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -218,11 +218,12 @@ interactions: code: 404 message: Not Found - request: - body: '{"commitMeta": {"commitTime": null, "author": "nessie test", "authorTime": - null, "hash": null, "properties": null, "committer": null, "message": "test - message", "signedOffBy": null}, "operations": [{"expectedContent": null, "key": - {"elements": ["bar", "bar"]}, "content": {"idGenerators": "xyz", "metadataLocation": - "/a/b/c", "id": "test_transplant_2", "type": "ICEBERG_TABLE"}, "type": "PUT"}]}' + body: '{"commitMeta": {"hash": null, "authorTime": null, "signedOffBy": null, + "message": "test message", "commitTime": null, "properties": null, "committer": + null, "author": "nessie test"}, "operations": [{"expectedContent": null, "key": + {"elements": ["bar", "bar"]}, "content": {"specId": 44, "id": "test_transplant_2", + "schemaId": 43, "snapshotId": 42, "sortOrderId": 45, "metadataLocation": "/a/b/c", + "type": "ICEBERG_TABLE"}, "type": "PUT"}]}' headers: Accept: - '*/*' @@ -231,16 +232,16 @@ interactions: Connection: - keep-alive Content-Length: - - '395' + - '439' Content-Type: - application/json User-Agent: - python-requests/2.26.0 method: POST - uri: http://localhost:19120/api/v1/trees/branch/dev/commit?expectedHash=361fcc55fa0489aa62c931d1e3a83f85703142eef392b020420bdcb881353a87 + uri: http://localhost:19120/api/v1/trees/branch/dev/commit?expectedHash=951f5e148490c1d885fc1bac6f093206349fd5acfb56efeff64a48014e0366de response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" : \"60689f38c5e1dcfbc03223926a49b5d79f3798cd60a7b4d3701e2ae5257c266d\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" : \"88d3434b922c52584d795f00c26a496b20e9b2674ef4ddb6be68b7d2ab8ec0e7\"\n}" headers: Content-Type: - application/json @@ -267,7 +268,7 @@ interactions: string: "{\n \"token\" : null,\n \"references\" : [ {\n \"type\" : \"BRANCH\",\n \ \"name\" : \"main\",\n \"hash\" : \"2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d\"\n \ }, {\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" - : \"60689f38c5e1dcfbc03223926a49b5d79f3798cd60a7b4d3701e2ae5257c266d\"\n } + : \"88d3434b922c52584d795f00c26a496b20e9b2674ef4ddb6be68b7d2ab8ec0e7\"\n } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -304,11 +305,12 @@ interactions: code: 404 message: Not Found - request: - body: '{"commitMeta": {"commitTime": null, "author": "nessie test", "authorTime": - null, "hash": null, "properties": null, "committer": null, "message": "test - message", "signedOffBy": null}, "operations": [{"expectedContent": null, "key": - {"elements": ["foo", "baz"]}, "content": {"idGenerators": "xyz", "metadataLocation": - "/a/b/c", "id": "test_transplant_3", "type": "ICEBERG_TABLE"}, "type": "PUT"}]}' + body: '{"commitMeta": {"hash": null, "authorTime": null, "signedOffBy": null, + "message": "test message", "commitTime": null, "properties": null, "committer": + null, "author": "nessie test"}, "operations": [{"expectedContent": null, "key": + {"elements": ["foo", "baz"]}, "content": {"specId": 44, "id": "test_transplant_3", + "schemaId": 43, "snapshotId": 42, "sortOrderId": 45, "metadataLocation": "/a/b/c", + "type": "ICEBERG_TABLE"}, "type": "PUT"}]}' headers: Accept: - '*/*' @@ -317,16 +319,16 @@ interactions: Connection: - keep-alive Content-Length: - - '395' + - '439' Content-Type: - application/json User-Agent: - python-requests/2.26.0 method: POST - uri: http://localhost:19120/api/v1/trees/branch/dev/commit?expectedHash=60689f38c5e1dcfbc03223926a49b5d79f3798cd60a7b4d3701e2ae5257c266d + uri: http://localhost:19120/api/v1/trees/branch/dev/commit?expectedHash=88d3434b922c52584d795f00c26a496b20e9b2674ef4ddb6be68b7d2ab8ec0e7 response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" : \"c33ffb75a555d105bcad6b3219825a41e887676d54f4be1a2390c3974df3ed82\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" : \"0bbfa4ad27bb1ef19a8823e74dd648ff632bc7ba8437f4bb5bbf0f4c6a28f2b8\"\n}" headers: Content-Type: - application/json @@ -353,7 +355,7 @@ interactions: string: "{\n \"token\" : null,\n \"references\" : [ {\n \"type\" : \"BRANCH\",\n \ \"name\" : \"main\",\n \"hash\" : \"2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d\"\n \ }, {\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" - : \"c33ffb75a555d105bcad6b3219825a41e887676d54f4be1a2390c3974df3ed82\"\n } + : \"0bbfa4ad27bb1ef19a8823e74dd648ff632bc7ba8437f4bb5bbf0f4c6a28f2b8\"\n } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -378,18 +380,18 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree/dev/log response: body: - string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"c33ffb75a555d105bcad6b3219825a41e887676d54f4be1a2390c3974df3ed82\",\n + string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"0bbfa4ad27bb1ef19a8823e74dd648ff632bc7ba8437f4bb5bbf0f4c6a28f2b8\",\n \ \"committer\" : \"\",\n \"author\" : \"nessie test\",\n \"signedOffBy\" - : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-08T16:11:48.622931Z\",\n - \ \"authorTime\" : \"2021-11-08T16:11:48.622931Z\",\n \"properties\" - : { }\n }, {\n \"hash\" : \"60689f38c5e1dcfbc03223926a49b5d79f3798cd60a7b4d3701e2ae5257c266d\",\n + : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-11T14:53:58.714414Z\",\n + \ \"authorTime\" : \"2021-11-11T14:53:58.714414Z\",\n \"properties\" + : { }\n }, {\n \"hash\" : \"88d3434b922c52584d795f00c26a496b20e9b2674ef4ddb6be68b7d2ab8ec0e7\",\n \ \"committer\" : \"\",\n \"author\" : \"nessie test\",\n \"signedOffBy\" - : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-08T16:11:48.571268Z\",\n - \ \"authorTime\" : \"2021-11-08T16:11:48.571268Z\",\n \"properties\" - : { }\n }, {\n \"hash\" : \"361fcc55fa0489aa62c931d1e3a83f85703142eef392b020420bdcb881353a87\",\n + : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-11T14:53:58.669717Z\",\n + \ \"authorTime\" : \"2021-11-11T14:53:58.669717Z\",\n \"properties\" + : { }\n }, {\n \"hash\" : \"951f5e148490c1d885fc1bac6f093206349fd5acfb56efeff64a48014e0366de\",\n \ \"committer\" : \"\",\n \"author\" : \"nessie test\",\n \"signedOffBy\" - : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-08T16:11:48.533002Z\",\n - \ \"authorTime\" : \"2021-11-08T16:11:48.533002Z\",\n \"properties\" + : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-11T14:53:58.624028Z\",\n + \ \"authorTime\" : \"2021-11-11T14:53:58.624028Z\",\n \"properties\" : { }\n } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -424,9 +426,8 @@ interactions: code: 200 message: OK - request: - body: '{"hashesToTransplant": ["60689f38c5e1dcfbc03223926a49b5d79f3798cd60a7b4d3701e2ae5257c266d", - "c33ffb75a555d105bcad6b3219825a41e887676d54f4be1a2390c3974df3ed82"], "fromRefName": - "dev"}' + body: '{"fromRefName": "dev", "hashesToTransplant": ["88d3434b922c52584d795f00c26a496b20e9b2674ef4ddb6be68b7d2ab8ec0e7", + "0bbfa4ad27bb1ef19a8823e74dd648ff632bc7ba8437f4bb5bbf0f4c6a28f2b8"]}' headers: Accept: - '*/*' @@ -464,7 +465,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"d575bf1f9967fe77bb12dde178a91c7395f273de0892a39f19a43af0a62e656d\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"f642677fb7dd347eb6d3956c7506a6f49aad73c47858c367802223d080221d33\"\n}" headers: Content-Type: - application/json @@ -488,14 +489,14 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree/main/log response: body: - string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"d575bf1f9967fe77bb12dde178a91c7395f273de0892a39f19a43af0a62e656d\",\n + string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"f642677fb7dd347eb6d3956c7506a6f49aad73c47858c367802223d080221d33\",\n \ \"committer\" : \"\",\n \"author\" : \"nessie test\",\n \"signedOffBy\" - : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-08T16:11:48.622931Z\",\n - \ \"authorTime\" : \"2021-11-08T16:11:48.622931Z\",\n \"properties\" - : { }\n }, {\n \"hash\" : \"90034ae2ef5dfb16c129fe0257ca73e35d7ce5021fbf2295f889164beb2a08d8\",\n + : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-11T14:53:58.714414Z\",\n + \ \"authorTime\" : \"2021-11-11T14:53:58.714414Z\",\n \"properties\" + : { }\n }, {\n \"hash\" : \"ff162b9aa1d98f5acc9db590f94da568c06ef258f24c02827c6560a8e056ad5e\",\n \ \"committer\" : \"\",\n \"author\" : \"nessie test\",\n \"signedOffBy\" - : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-08T16:11:48.571268Z\",\n - \ \"authorTime\" : \"2021-11-08T16:11:48.571268Z\",\n \"properties\" + : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-11T14:53:58.669717Z\",\n + \ \"authorTime\" : \"2021-11-11T14:53:58.669717Z\",\n \"properties\" : { }\n } ],\n \"hasMore\" : false\n}" headers: Content-Type: diff --git a/python/tests/cassettes/test_nessie_cli_auth/test_bearer_auth.yaml b/python/tests/cassettes/test_nessie_cli_auth/test_bearer_auth.yaml index 80cf335a633..210cf9b3fee 100644 --- a/python/tests/cassettes/test_nessie_cli_auth/test_bearer_auth.yaml +++ b/python/tests/cassettes/test_nessie_cli_auth/test_bearer_auth.yaml @@ -15,9 +15,9 @@ interactions: response: body: string: "{\n \"token\" : null,\n \"references\" : [ {\n \"type\" : \"BRANCH\",\n - \ \"name\" : \"main\",\n \"hash\" : \"d575bf1f9967fe77bb12dde178a91c7395f273de0892a39f19a43af0a62e656d\"\n + \ \"name\" : \"main\",\n \"hash\" : \"f642677fb7dd347eb6d3956c7506a6f49aad73c47858c367802223d080221d33\"\n \ }, {\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" - : \"c33ffb75a555d105bcad6b3219825a41e887676d54f4be1a2390c3974df3ed82\"\n } + : \"0bbfa4ad27bb1ef19a8823e74dd648ff632bc7ba8437f4bb5bbf0f4c6a28f2b8\"\n } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -42,7 +42,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree/main response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"d575bf1f9967fe77bb12dde178a91c7395f273de0892a39f19a43af0a62e656d\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"main\",\n \"hash\" : \"f642677fb7dd347eb6d3956c7506a6f49aad73c47858c367802223d080221d33\"\n}" headers: Content-Type: - application/json @@ -65,7 +65,7 @@ interactions: User-Agent: - python-requests/2.26.0 method: DELETE - uri: http://localhost:19120/api/v1/trees/branch/main?expectedHash=d575bf1f9967fe77bb12dde178a91c7395f273de0892a39f19a43af0a62e656d + uri: http://localhost:19120/api/v1/trees/branch/main?expectedHash=f642677fb7dd347eb6d3956c7506a6f49aad73c47858c367802223d080221d33 response: body: string: '' @@ -88,7 +88,7 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree/dev response: body: - string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" : \"c33ffb75a555d105bcad6b3219825a41e887676d54f4be1a2390c3974df3ed82\"\n}" + string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"dev\",\n \"hash\" : \"0bbfa4ad27bb1ef19a8823e74dd648ff632bc7ba8437f4bb5bbf0f4c6a28f2b8\"\n}" headers: Content-Type: - application/json @@ -111,7 +111,7 @@ interactions: User-Agent: - python-requests/2.26.0 method: DELETE - uri: http://localhost:19120/api/v1/trees/branch/dev?expectedHash=c33ffb75a555d105bcad6b3219825a41e887676d54f4be1a2390c3974df3ed82 + uri: http://localhost:19120/api/v1/trees/branch/dev?expectedHash=0bbfa4ad27bb1ef19a8823e74dd648ff632bc7ba8437f4bb5bbf0f4c6a28f2b8 response: body: string: '' @@ -144,8 +144,8 @@ interactions: code: 200 message: OK - request: - body: '{"name": "main", "hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", - "type": "BRANCH"}' + body: '{"hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", + "name": "main", "type": "BRANCH"}' headers: Accept: - '*/*' diff --git a/python/tests/cassettes/test_nessie_cli_content/test_content_commit_delete.yaml b/python/tests/cassettes/test_nessie_cli_content/test_content_commit_delete.yaml index 42337ac9ad0..eb3d68d03af 100644 --- a/python/tests/cassettes/test_nessie_cli_content/test_content_commit_delete.yaml +++ b/python/tests/cassettes/test_nessie_cli_content/test_content_commit_delete.yaml @@ -48,8 +48,8 @@ interactions: code: 200 message: OK - request: - body: '{"name": "contents_commit_delete_dev", "hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", - "type": "BRANCH"}' + body: '{"hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", + "name": "contents_commit_delete_dev", "type": "BRANCH"}' headers: Accept: - '*/*' @@ -132,12 +132,12 @@ interactions: code: 404 message: Not Found - request: - body: '{"commitMeta": {"commitTime": null, "author": "nessie test", "authorTime": - null, "hash": null, "properties": null, "committer": null, "message": "test - message", "signedOffBy": null}, "operations": [{"expectedContent": null, "key": - {"elements": ["this", "is", "iceberg", "foo"]}, "content": {"idGenerators": - "xyz", "metadataLocation": "/a/b/c", "id": "test_contents_delete", "type": "ICEBERG_TABLE"}, - "type": "PUT"}]}' + body: '{"commitMeta": {"hash": null, "authorTime": null, "signedOffBy": null, + "message": "test message", "commitTime": null, "properties": null, "committer": + null, "author": "nessie test"}, "operations": [{"expectedContent": null, "key": + {"elements": ["this", "is", "iceberg", "foo"]}, "content": {"specId": 42, "id": + "test_contents_delete", "schemaId": 42, "snapshotId": 42, "sortOrderId": 42, + "metadataLocation": "/a/b/c", "type": "ICEBERG_TABLE"}, "type": "PUT"}]}' headers: Accept: - '*/*' @@ -146,7 +146,7 @@ interactions: Connection: - keep-alive Content-Length: - - '416' + - '460' Content-Type: - application/json User-Agent: @@ -156,7 +156,7 @@ interactions: response: body: string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"contents_commit_delete_dev\",\n - \ \"hash\" : \"4be9dfed84e1d6d39125e16f7501130e376cdfce6ea4a1b594657aae74cf0ce6\"\n}" + \ \"hash\" : \"44eef1796a019b990caba6d5cadb9aa933ca4b883b9eac15971edd5069d862bc\"\n}" headers: Content-Type: - application/json @@ -209,7 +209,7 @@ interactions: string: "{\n \"token\" : null,\n \"references\" : [ {\n \"type\" : \"BRANCH\",\n \ \"name\" : \"main\",\n \"hash\" : \"2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d\"\n \ }, {\n \"type\" : \"BRANCH\",\n \"name\" : \"contents_commit_delete_dev\",\n - \ \"hash\" : \"4be9dfed84e1d6d39125e16f7501130e376cdfce6ea4a1b594657aae74cf0ce6\"\n + \ \"hash\" : \"44eef1796a019b990caba6d5cadb9aa933ca4b883b9eac15971edd5069d862bc\"\n \ } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -220,10 +220,10 @@ interactions: code: 200 message: OK - request: - body: '{"commitMeta": {"commitTime": null, "author": null, "authorTime": null, - "hash": null, "properties": null, "committer": null, "message": "delete test - table", "signedOffBy": null}, "operations": [{"key": {"elements": ["this", "is", - "iceberg", "foo"]}, "type": "DELETE"}]}' + body: '{"commitMeta": {"hash": null, "authorTime": null, "signedOffBy": null, + "message": "delete test table", "commitTime": null, "properties": null, "committer": + null, "author": null}, "operations": [{"key": {"elements": ["this", "is", "iceberg", + "foo"]}, "type": "DELETE"}]}' headers: Accept: - '*/*' @@ -238,11 +238,11 @@ interactions: User-Agent: - python-requests/2.26.0 method: POST - uri: http://localhost:19120/api/v1/trees/branch/contents_commit_delete_dev/commit?expectedHash=4be9dfed84e1d6d39125e16f7501130e376cdfce6ea4a1b594657aae74cf0ce6 + uri: http://localhost:19120/api/v1/trees/branch/contents_commit_delete_dev/commit?expectedHash=44eef1796a019b990caba6d5cadb9aa933ca4b883b9eac15971edd5069d862bc response: body: string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"contents_commit_delete_dev\",\n - \ \"hash\" : \"3e6f18cc20f7feb8994cabbcb88969d4357f4fa2399a962b4176b378775a5476\"\n}" + \ \"hash\" : \"731fa342fce6079ab3155b7a932f2a75c250dabc4fd43480564ac2bd1d655112\"\n}" headers: Content-Type: - application/json diff --git a/python/tests/cassettes/test_nessie_cli_content/test_content_commit_no_expected_state.yaml b/python/tests/cassettes/test_nessie_cli_content/test_content_commit_no_expected_state.yaml index fb2b0419b8d..9bd262a1769 100644 --- a/python/tests/cassettes/test_nessie_cli_content/test_content_commit_no_expected_state.yaml +++ b/python/tests/cassettes/test_nessie_cli_content/test_content_commit_no_expected_state.yaml @@ -48,8 +48,8 @@ interactions: code: 200 message: OK - request: - body: '{"name": "contents_commit_with_no__expected_state", "hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", - "type": "BRANCH"}' + body: '{"hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", + "name": "contents_commit_with_no__expected_state", "type": "BRANCH"}' headers: Accept: - '*/*' @@ -133,12 +133,12 @@ interactions: code: 404 message: Not Found - request: - body: '{"commitMeta": {"commitTime": null, "author": "nessie test", "authorTime": - null, "hash": null, "properties": null, "committer": null, "message": "commit - 1", "signedOffBy": null}, "operations": [{"expectedContent": null, "key": {"elements": - ["commit", "expected", "contents"]}, "content": {"lastCheckpoint": "x", "metadataLocationHistory": - ["asd111"], "checkpointLocationHistory": ["def"], "id": "test_commit_no_expected_state", - "type": "DELTA_LAKE_TABLE"}, "type": "PUT"}]}' + body: '{"commitMeta": {"hash": null, "authorTime": null, "signedOffBy": null, + "message": "commit 1", "commitTime": null, "properties": null, "committer": + null, "author": "nessie test"}, "operations": [{"expectedContent": null, "key": + {"elements": ["commit", "expected", "contents"]}, "content": {"checkpointLocationHistory": + ["def"], "metadataLocationHistory": ["asd111"], "lastCheckpoint": "x", "id": + "test_commit_no_expected_state", "type": "DELTA_LAKE_TABLE"}, "type": "PUT"}]}' headers: Accept: - '*/*' @@ -157,7 +157,7 @@ interactions: response: body: string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"contents_commit_with_no__expected_state\",\n - \ \"hash\" : \"48eca33b72dacdef25fb482b6c27974230ff5a85b71e2c73e99bc4320b4fe272\"\n}" + \ \"hash\" : \"dcdc812a8756a0da0f1ccc2829bc357f2a4309872ae46fad8621010535d2e2c2\"\n}" headers: Content-Type: - application/json @@ -184,7 +184,7 @@ interactions: string: "{\n \"token\" : null,\n \"references\" : [ {\n \"type\" : \"BRANCH\",\n \ \"name\" : \"main\",\n \"hash\" : \"2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d\"\n \ }, {\n \"type\" : \"BRANCH\",\n \"name\" : \"contents_commit_with_no__expected_state\",\n - \ \"hash\" : \"48eca33b72dacdef25fb482b6c27974230ff5a85b71e2c73e99bc4320b4fe272\"\n + \ \"hash\" : \"dcdc812a8756a0da0f1ccc2829bc357f2a4309872ae46fad8621010535d2e2c2\"\n \ } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -221,12 +221,12 @@ interactions: code: 200 message: OK - request: - body: '{"commitMeta": {"commitTime": null, "author": "nessie test", "authorTime": - null, "hash": null, "properties": null, "committer": null, "message": "commit - 2", "signedOffBy": null}, "operations": [{"expectedContent": null, "key": {"elements": - ["commit", "expected", "contents"]}, "content": {"lastCheckpoint": "x", "metadataLocationHistory": - ["asd222"], "checkpointLocationHistory": ["def"], "id": "test_commit_no_expected_state", - "type": "DELTA_LAKE_TABLE"}, "type": "PUT"}]}' + body: '{"commitMeta": {"hash": null, "authorTime": null, "signedOffBy": null, + "message": "commit 2", "commitTime": null, "properties": null, "committer": + null, "author": "nessie test"}, "operations": [{"expectedContent": null, "key": + {"elements": ["commit", "expected", "contents"]}, "content": {"checkpointLocationHistory": + ["def"], "metadataLocationHistory": ["asd222"], "lastCheckpoint": "x", "id": + "test_commit_no_expected_state", "type": "DELTA_LAKE_TABLE"}, "type": "PUT"}]}' headers: Accept: - '*/*' @@ -241,11 +241,11 @@ interactions: User-Agent: - python-requests/2.26.0 method: POST - uri: http://localhost:19120/api/v1/trees/branch/contents_commit_with_no__expected_state/commit?expectedHash=48eca33b72dacdef25fb482b6c27974230ff5a85b71e2c73e99bc4320b4fe272 + uri: http://localhost:19120/api/v1/trees/branch/contents_commit_with_no__expected_state/commit?expectedHash=dcdc812a8756a0da0f1ccc2829bc357f2a4309872ae46fad8621010535d2e2c2 response: body: string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"contents_commit_with_no__expected_state\",\n - \ \"hash\" : \"812e03c026c66b7d4fc79a716b519a526ddb7b28d5da02ceda23345fc27ef530\"\n}" + \ \"hash\" : \"f2818b2ffb7c3e865eb7dcbbc7c1e43dbc97cba8bd1ad7671b9e9f5c4f7c2f0b\"\n}" headers: Content-Type: - application/json diff --git a/python/tests/cassettes/test_nessie_cli_content/test_content_commit_with_edited_data.yaml b/python/tests/cassettes/test_nessie_cli_content/test_content_commit_with_edited_data.yaml index 264a8bd7f46..a196bc89279 100644 --- a/python/tests/cassettes/test_nessie_cli_content/test_content_commit_with_edited_data.yaml +++ b/python/tests/cassettes/test_nessie_cli_content/test_content_commit_with_edited_data.yaml @@ -48,8 +48,8 @@ interactions: code: 200 message: OK - request: - body: '{"name": "content_commit_with_edited_data_dev", "hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", - "type": "BRANCH"}' + body: '{"hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", + "name": "content_commit_with_edited_data_dev", "type": "BRANCH"}' headers: Accept: - '*/*' @@ -132,12 +132,12 @@ interactions: code: 404 message: Not Found - request: - body: '{"commitMeta": {"commitTime": null, "author": "nessie test", "authorTime": - null, "hash": null, "properties": null, "committer": null, "message": "test - message", "signedOffBy": null}, "operations": [{"expectedContent": null, "key": - {"elements": ["this", "is", "iceberg", "foo"]}, "content": {"idGenerators": - "xyz", "metadataLocation": "/a/b/c", "id": "test_content_commit_with_edited_data", - "type": "ICEBERG_TABLE"}, "type": "PUT"}]}' + body: '{"commitMeta": {"hash": null, "authorTime": null, "signedOffBy": null, + "message": "test message", "commitTime": null, "properties": null, "committer": + null, "author": "nessie test"}, "operations": [{"expectedContent": null, "key": + {"elements": ["this", "is", "iceberg", "foo"]}, "content": {"specId": 42, "id": + "test_content_commit_with_edited_data", "schemaId": 42, "snapshotId": 42, "sortOrderId": + 42, "metadataLocation": "/a/b/c", "type": "ICEBERG_TABLE"}, "type": "PUT"}]}' headers: Accept: - '*/*' @@ -146,7 +146,7 @@ interactions: Connection: - keep-alive Content-Length: - - '432' + - '476' Content-Type: - application/json User-Agent: @@ -156,7 +156,7 @@ interactions: response: body: string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"content_commit_with_edited_data_dev\",\n - \ \"hash\" : \"d38c0ad992019cacf156c38f5e4a4c3bf482c774a5a69c61436d1ffe78fb08fe\"\n}" + \ \"hash\" : \"d3d536ff8d0aa48697216120d8a641b47b588b5d0b94edf9c65eb0e11e1eb5d1\"\n}" headers: Content-Type: - application/json @@ -209,7 +209,7 @@ interactions: string: "{\n \"token\" : null,\n \"references\" : [ {\n \"type\" : \"BRANCH\",\n \ \"name\" : \"main\",\n \"hash\" : \"2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d\"\n \ }, {\n \"type\" : \"BRANCH\",\n \"name\" : \"content_commit_with_edited_data_dev\",\n - \ \"hash\" : \"d38c0ad992019cacf156c38f5e4a4c3bf482c774a5a69c61436d1ffe78fb08fe\"\n + \ \"hash\" : \"d3d536ff8d0aa48697216120d8a641b47b588b5d0b94edf9c65eb0e11e1eb5d1\"\n \ } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -235,12 +235,13 @@ interactions: response: body: string: "{\n \"type\" : \"ICEBERG_TABLE\",\n \"id\" : \"test_content_commit_with_edited_data\",\n - \ \"metadataLocation\" : \"/a/b/c\",\n \"idGenerators\" : \"xyz\"\n}" + \ \"metadataLocation\" : \"/a/b/c\",\n \"snapshotId\" : 42,\n \"schemaId\" + : 42,\n \"specId\" : 42,\n \"sortOrderId\" : 42\n}" headers: Content-Type: - application/json content-length: - - '138' + - '191' status: code: 200 message: OK @@ -259,10 +260,10 @@ interactions: uri: http://localhost:19120/api/v1/trees/tree/content_commit_with_edited_data_dev/log response: body: - string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"d38c0ad992019cacf156c38f5e4a4c3bf482c774a5a69c61436d1ffe78fb08fe\",\n + string: "{\n \"token\" : null,\n \"operations\" : [ {\n \"hash\" : \"d3d536ff8d0aa48697216120d8a641b47b588b5d0b94edf9c65eb0e11e1eb5d1\",\n \ \"committer\" : \"\",\n \"author\" : \"nessie test\",\n \"signedOffBy\" - : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-08T16:11:50.323345Z\",\n - \ \"authorTime\" : \"2021-11-08T16:11:50.323345Z\",\n \"properties\" + : null,\n \"message\" : \"test message\",\n \"commitTime\" : \"2021-11-11T14:54:00.346928Z\",\n + \ \"authorTime\" : \"2021-11-11T14:54:00.346928Z\",\n \"properties\" : { }\n } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -290,7 +291,7 @@ interactions: string: "{\n \"token\" : null,\n \"references\" : [ {\n \"type\" : \"BRANCH\",\n \ \"name\" : \"main\",\n \"hash\" : \"2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d\"\n \ }, {\n \"type\" : \"BRANCH\",\n \"name\" : \"content_commit_with_edited_data_dev\",\n - \ \"hash\" : \"d38c0ad992019cacf156c38f5e4a4c3bf482c774a5a69c61436d1ffe78fb08fe\"\n + \ \"hash\" : \"d3d536ff8d0aa48697216120d8a641b47b588b5d0b94edf9c65eb0e11e1eb5d1\"\n \ } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -316,23 +317,26 @@ interactions: response: body: string: "{\n \"type\" : \"ICEBERG_TABLE\",\n \"id\" : \"test_content_commit_with_edited_data\",\n - \ \"metadataLocation\" : \"/a/b/c\",\n \"idGenerators\" : \"xyz\"\n}" + \ \"metadataLocation\" : \"/a/b/c\",\n \"snapshotId\" : 42,\n \"schemaId\" + : 42,\n \"specId\" : 42,\n \"sortOrderId\" : 42\n}" headers: Content-Type: - application/json content-length: - - '138' + - '191' status: code: 200 message: OK - request: - body: '{"commitMeta": {"commitTime": null, "author": "nessie test", "authorTime": - null, "hash": null, "properties": null, "committer": null, "message": "test - message", "signedOffBy": null}, "operations": [{"expectedContent": {"idGenerators": - "xyz", "metadataLocation": "/a/b/c", "id": "test_content_commit_with_edited_data", - "type": "ICEBERG_TABLE"}, "key": {"elements": ["this", "is", "iceberg", "foo"]}, - "content": {"idGenerators": "xyz", "metadataLocation": "/d/e/f", "id": "test_content_commit_with_edited_data", - "type": "ICEBERG_TABLE"}, "type": "PUT"}]}' + body: '{"commitMeta": {"hash": null, "authorTime": null, "signedOffBy": null, + "message": "test message", "commitTime": null, "properties": null, "committer": + null, "author": "nessie test"}, "operations": [{"expectedContent": {"specId": + 42, "id": "test_content_commit_with_edited_data", "schemaId": 42, "snapshotId": + 42, "sortOrderId": 42, "metadataLocation": "/a/b/c", "type": "ICEBERG_TABLE"}, + "key": {"elements": ["this", "is", "iceberg", "foo"]}, "content": {"specId": + 42, "id": "test_content_commit_with_edited_data", "schemaId": 42, "snapshotId": + 42, "sortOrderId": 42, "metadataLocation": "/d/e/f", "type": "ICEBERG_TABLE"}, + "type": "PUT"}]}' headers: Accept: - '*/*' @@ -341,17 +345,17 @@ interactions: Connection: - keep-alive Content-Length: - - '552' + - '640' Content-Type: - application/json User-Agent: - python-requests/2.26.0 method: POST - uri: http://localhost:19120/api/v1/trees/branch/content_commit_with_edited_data_dev/commit?expectedHash=d38c0ad992019cacf156c38f5e4a4c3bf482c774a5a69c61436d1ffe78fb08fe + uri: http://localhost:19120/api/v1/trees/branch/content_commit_with_edited_data_dev/commit?expectedHash=d3d536ff8d0aa48697216120d8a641b47b588b5d0b94edf9c65eb0e11e1eb5d1 response: body: string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"content_commit_with_edited_data_dev\",\n - \ \"hash\" : \"10a13c8acf3777d7cf35353507b004da7313ff0616f5825368375dfbe3e0ab6a\"\n}" + \ \"hash\" : \"ff6835d1693a896f4d772eda76f692decb04d84d48d46586dbf5ec2d1bb80437\"\n}" headers: Content-Type: - application/json @@ -402,12 +406,13 @@ interactions: response: body: string: "{\n \"type\" : \"ICEBERG_TABLE\",\n \"id\" : \"test_content_commit_with_edited_data\",\n - \ \"metadataLocation\" : \"/d/e/f\",\n \"idGenerators\" : \"xyz\"\n}" + \ \"metadataLocation\" : \"/d/e/f\",\n \"snapshotId\" : 42,\n \"schemaId\" + : 42,\n \"specId\" : 42,\n \"sortOrderId\" : 42\n}" headers: Content-Type: - application/json content-length: - - '138' + - '191' status: code: 200 message: OK diff --git a/python/tests/cassettes/test_nessie_cli_content/test_content_commit_with_empty_content_delete.yaml b/python/tests/cassettes/test_nessie_cli_content/test_content_commit_with_empty_content_delete.yaml index 06f7cee0f6b..be7d04033b4 100644 --- a/python/tests/cassettes/test_nessie_cli_content/test_content_commit_with_empty_content_delete.yaml +++ b/python/tests/cassettes/test_nessie_cli_content/test_content_commit_with_empty_content_delete.yaml @@ -48,8 +48,8 @@ interactions: code: 200 message: OK - request: - body: '{"name": "contents_commit_with_empty_content_delete_dev", "hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", - "type": "BRANCH"}' + body: '{"hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", + "name": "contents_commit_with_empty_content_delete_dev", "type": "BRANCH"}' headers: Accept: - '*/*' @@ -132,12 +132,13 @@ interactions: code: 404 message: Not Found - request: - body: '{"commitMeta": {"commitTime": null, "author": "nessie test", "authorTime": - null, "hash": null, "properties": null, "committer": null, "message": "test - message", "signedOffBy": null}, "operations": [{"expectedContent": null, "key": - {"elements": ["this", "is", "iceberg", "foo"]}, "content": {"idGenerators": - "xyz", "metadataLocation": "/a/b/c", "id": "test_contents_with_empty_content_delete", - "type": "ICEBERG_TABLE"}, "type": "PUT"}]}' + body: '{"commitMeta": {"hash": null, "authorTime": null, "signedOffBy": null, + "message": "test message", "commitTime": null, "properties": null, "committer": + null, "author": "nessie test"}, "operations": [{"expectedContent": null, "key": + {"elements": ["this", "is", "iceberg", "foo"]}, "content": {"specId": 42, "id": + "test_contents_with_empty_content_delete", "schemaId": 42, "snapshotId": 42, + "sortOrderId": 42, "metadataLocation": "/a/b/c", "type": "ICEBERG_TABLE"}, "type": + "PUT"}]}' headers: Accept: - '*/*' @@ -146,7 +147,7 @@ interactions: Connection: - keep-alive Content-Length: - - '435' + - '479' Content-Type: - application/json User-Agent: @@ -156,7 +157,7 @@ interactions: response: body: string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"contents_commit_with_empty_content_delete_dev\",\n - \ \"hash\" : \"dedb1c862008e6a486e64e86da2163f386b6f2a43692c4ca06ef4a6ebd1d0fab\"\n}" + \ \"hash\" : \"e761fff6b3ddcdc272a9c8b1cb9d86ca485643a7e3cc3bab05f146ebcc4ac37c\"\n}" headers: Content-Type: - application/json @@ -209,7 +210,7 @@ interactions: string: "{\n \"token\" : null,\n \"references\" : [ {\n \"type\" : \"BRANCH\",\n \ \"name\" : \"main\",\n \"hash\" : \"2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d\"\n \ }, {\n \"type\" : \"BRANCH\",\n \"name\" : \"contents_commit_with_empty_content_delete_dev\",\n - \ \"hash\" : \"dedb1c862008e6a486e64e86da2163f386b6f2a43692c4ca06ef4a6ebd1d0fab\"\n + \ \"hash\" : \"e761fff6b3ddcdc272a9c8b1cb9d86ca485643a7e3cc3bab05f146ebcc4ac37c\"\n \ } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -235,19 +236,20 @@ interactions: response: body: string: "{\n \"type\" : \"ICEBERG_TABLE\",\n \"id\" : \"test_contents_with_empty_content_delete\",\n - \ \"metadataLocation\" : \"/a/b/c\",\n \"idGenerators\" : \"xyz\"\n}" + \ \"metadataLocation\" : \"/a/b/c\",\n \"snapshotId\" : 42,\n \"schemaId\" + : 42,\n \"specId\" : 42,\n \"sortOrderId\" : 42\n}" headers: Content-Type: - application/json content-length: - - '141' + - '194' status: code: 200 message: OK - request: - body: '{"commitMeta": {"commitTime": null, "author": null, "authorTime": null, - "hash": null, "properties": null, "committer": null, "message": "delete table", - "signedOffBy": null}, "operations": [{"key": {"elements": ["this", "is", "iceberg", + body: '{"commitMeta": {"hash": null, "authorTime": null, "signedOffBy": null, + "message": "delete table", "commitTime": null, "properties": null, "committer": + null, "author": null}, "operations": [{"key": {"elements": ["this", "is", "iceberg", "foo"]}, "type": "DELETE"}]}' headers: Accept: @@ -263,11 +265,11 @@ interactions: User-Agent: - python-requests/2.26.0 method: POST - uri: http://localhost:19120/api/v1/trees/branch/contents_commit_with_empty_content_delete_dev/commit?expectedHash=dedb1c862008e6a486e64e86da2163f386b6f2a43692c4ca06ef4a6ebd1d0fab + uri: http://localhost:19120/api/v1/trees/branch/contents_commit_with_empty_content_delete_dev/commit?expectedHash=e761fff6b3ddcdc272a9c8b1cb9d86ca485643a7e3cc3bab05f146ebcc4ac37c response: body: string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"contents_commit_with_empty_content_delete_dev\",\n - \ \"hash\" : \"5e113967dad18e5d905c85e3f9e90f31c5a3bea37308bded237cc68a2cfbef72\"\n}" + \ \"hash\" : \"b7bbb351e52a9ac30f9d252573c4b7be364e63bd6958c0986c45e2613640ec4a\"\n}" headers: Content-Type: - application/json diff --git a/python/tests/cassettes/test_nessie_cli_content/test_content_commit_with_expected_state.yaml b/python/tests/cassettes/test_nessie_cli_content/test_content_commit_with_expected_state.yaml index 8ba7de78882..231db2d34cb 100644 --- a/python/tests/cassettes/test_nessie_cli_content/test_content_commit_with_expected_state.yaml +++ b/python/tests/cassettes/test_nessie_cli_content/test_content_commit_with_expected_state.yaml @@ -48,8 +48,8 @@ interactions: code: 200 message: OK - request: - body: '{"name": "contents_commit_with_expected_state", "hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", - "type": "BRANCH"}' + body: '{"hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", + "name": "contents_commit_with_expected_state", "type": "BRANCH"}' headers: Accept: - '*/*' @@ -133,12 +133,12 @@ interactions: code: 404 message: Not Found - request: - body: '{"commitMeta": {"commitTime": null, "author": "nessie test", "authorTime": - null, "hash": null, "properties": null, "committer": null, "message": "commit - 1", "signedOffBy": null}, "operations": [{"expectedContent": null, "key": {"elements": - ["commit", "expected", "contents"]}, "content": {"idGenerators": "xyz", "metadataLocation": - "/a/b/c", "id": "test_expected_contents", "type": "ICEBERG_TABLE"}, "type": - "PUT"}]}' + body: '{"commitMeta": {"hash": null, "authorTime": null, "signedOffBy": null, + "message": "commit 1", "commitTime": null, "properties": null, "committer": + null, "author": "nessie test"}, "operations": [{"expectedContent": null, "key": + {"elements": ["commit", "expected", "contents"]}, "content": {"specId": 42, + "id": "test_expected_contents", "schemaId": 42, "snapshotId": 42, "sortOrderId": + 42, "metadataLocation": "/a/b/c", "type": "ICEBERG_TABLE"}, "type": "PUT"}]}' headers: Accept: - '*/*' @@ -147,7 +147,7 @@ interactions: Connection: - keep-alive Content-Length: - - '416' + - '460' Content-Type: - application/json User-Agent: @@ -157,7 +157,7 @@ interactions: response: body: string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"contents_commit_with_expected_state\",\n - \ \"hash\" : \"d878236e630948097c6db2c2f303a0d40558d3397bb66a83b1164d082aadcd1f\"\n}" + \ \"hash\" : \"ee02e3b3495818c9b151e2684242cbc8ffd84d116d1731db8a87e3d817e78795\"\n}" headers: Content-Type: - application/json @@ -184,7 +184,7 @@ interactions: string: "{\n \"token\" : null,\n \"references\" : [ {\n \"type\" : \"BRANCH\",\n \ \"name\" : \"main\",\n \"hash\" : \"2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d\"\n \ }, {\n \"type\" : \"BRANCH\",\n \"name\" : \"contents_commit_with_expected_state\",\n - \ \"hash\" : \"d878236e630948097c6db2c2f303a0d40558d3397bb66a83b1164d082aadcd1f\"\n + \ \"hash\" : \"ee02e3b3495818c9b151e2684242cbc8ffd84d116d1731db8a87e3d817e78795\"\n \ } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -210,12 +210,13 @@ interactions: response: body: string: "{\n \"type\" : \"ICEBERG_TABLE\",\n \"id\" : \"test_expected_contents\",\n - \ \"metadataLocation\" : \"/a/b/c\",\n \"idGenerators\" : \"xyz\"\n}" + \ \"metadataLocation\" : \"/a/b/c\",\n \"snapshotId\" : 42,\n \"schemaId\" + : 42,\n \"specId\" : 42,\n \"sortOrderId\" : 42\n}" headers: Content-Type: - application/json content-length: - - '124' + - '177' status: code: 200 message: OK diff --git a/python/tests/cassettes/test_nessie_cli_content/test_content_list.yaml b/python/tests/cassettes/test_nessie_cli_content/test_content_list.yaml index 16e1a6d9e41..b1201e5fd9a 100644 --- a/python/tests/cassettes/test_nessie_cli_content/test_content_list.yaml +++ b/python/tests/cassettes/test_nessie_cli_content/test_content_list.yaml @@ -48,8 +48,8 @@ interactions: code: 200 message: OK - request: - body: '{"name": "contents_list_dev", "hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", - "type": "BRANCH"}' + body: '{"hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", + "name": "contents_list_dev", "type": "BRANCH"}' headers: Accept: - '*/*' @@ -132,12 +132,12 @@ interactions: code: 404 message: Not Found - request: - body: '{"commitMeta": {"commitTime": null, "author": "nessie test", "authorTime": - null, "hash": null, "properties": null, "committer": null, "message": "test - message", "signedOffBy": null}, "operations": [{"expectedContent": null, "key": - {"elements": ["this", "is", "iceberg", "foo"]}, "content": {"idGenerators": - "xyz", "metadataLocation": "/a/b/c", "id": "test_contents_list", "type": "ICEBERG_TABLE"}, - "type": "PUT"}]}' + body: '{"commitMeta": {"hash": null, "authorTime": null, "signedOffBy": null, + "message": "test message", "commitTime": null, "properties": null, "committer": + null, "author": "nessie test"}, "operations": [{"expectedContent": null, "key": + {"elements": ["this", "is", "iceberg", "foo"]}, "content": {"specId": 42, "id": + "test_contents_list", "schemaId": 42, "snapshotId": 42, "sortOrderId": 42, "metadataLocation": + "/a/b/c", "type": "ICEBERG_TABLE"}, "type": "PUT"}]}' headers: Accept: - '*/*' @@ -146,7 +146,7 @@ interactions: Connection: - keep-alive Content-Length: - - '414' + - '458' Content-Type: - application/json User-Agent: @@ -156,7 +156,7 @@ interactions: response: body: string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"contents_list_dev\",\n - \ \"hash\" : \"637b0b26d08125bcacbca1ef7f9bdbe0c0bb5879c0204f4ff1e5edcc798c032e\"\n}" + \ \"hash\" : \"61860b04f3a0a3819fa7c23c39bfa4e6ecb2a3c94ef876bb560fdc0f92cec1ad\"\n}" headers: Content-Type: - application/json @@ -183,7 +183,7 @@ interactions: string: "{\n \"token\" : null,\n \"references\" : [ {\n \"type\" : \"BRANCH\",\n \ \"name\" : \"main\",\n \"hash\" : \"2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d\"\n \ }, {\n \"type\" : \"BRANCH\",\n \"name\" : \"contents_list_dev\",\n - \ \"hash\" : \"637b0b26d08125bcacbca1ef7f9bdbe0c0bb5879c0204f4ff1e5edcc798c032e\"\n + \ \"hash\" : \"61860b04f3a0a3819fa7c23c39bfa4e6ecb2a3c94ef876bb560fdc0f92cec1ad\"\n \ } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -220,12 +220,12 @@ interactions: code: 404 message: Not Found - request: - body: '{"commitMeta": {"commitTime": null, "author": "nessie test", "authorTime": - null, "hash": null, "properties": null, "committer": null, "message": "test - message", "signedOffBy": null}, "operations": [{"expectedContent": null, "key": - {"elements": ["this", "is", "delta", "bar"]}, "content": {"lastCheckpoint": - "x", "metadataLocationHistory": ["asd"], "checkpointLocationHistory": ["def"], - "id": "uuid2", "type": "DELTA_LAKE_TABLE"}, "type": "PUT"}]}' + body: '{"commitMeta": {"hash": null, "authorTime": null, "signedOffBy": null, + "message": "test message", "commitTime": null, "properties": null, "committer": + null, "author": "nessie test"}, "operations": [{"expectedContent": null, "key": + {"elements": ["this", "is", "delta", "bar"]}, "content": {"checkpointLocationHistory": + ["def"], "metadataLocationHistory": ["asd"], "lastCheckpoint": "x", "id": "uuid2", + "type": "DELTA_LAKE_TABLE"}, "type": "PUT"}]}' headers: Accept: - '*/*' @@ -240,11 +240,11 @@ interactions: User-Agent: - python-requests/2.26.0 method: POST - uri: http://localhost:19120/api/v1/trees/branch/contents_list_dev/commit?expectedHash=637b0b26d08125bcacbca1ef7f9bdbe0c0bb5879c0204f4ff1e5edcc798c032e + uri: http://localhost:19120/api/v1/trees/branch/contents_list_dev/commit?expectedHash=61860b04f3a0a3819fa7c23c39bfa4e6ecb2a3c94ef876bb560fdc0f92cec1ad response: body: string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"contents_list_dev\",\n - \ \"hash\" : \"79b7d1477fe125600e32750eea90aedff7d412ab75428590e3d4bbe927673480\"\n}" + \ \"hash\" : \"244dd123b6e1490a6bbcf9cb73d23cedaf4823c5958003c0e90926eaf74a30af\"\n}" headers: Content-Type: - application/json @@ -271,7 +271,7 @@ interactions: string: "{\n \"token\" : null,\n \"references\" : [ {\n \"type\" : \"BRANCH\",\n \ \"name\" : \"main\",\n \"hash\" : \"2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d\"\n \ }, {\n \"type\" : \"BRANCH\",\n \"name\" : \"contents_list_dev\",\n - \ \"hash\" : \"79b7d1477fe125600e32750eea90aedff7d412ab75428590e3d4bbe927673480\"\n + \ \"hash\" : \"244dd123b6e1490a6bbcf9cb73d23cedaf4823c5958003c0e90926eaf74a30af\"\n \ } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -308,9 +308,9 @@ interactions: code: 404 message: Not Found - request: - body: '{"commitMeta": {"commitTime": null, "author": "nessie test", "authorTime": - null, "hash": null, "properties": null, "committer": null, "message": "test - message", "signedOffBy": null}, "operations": [{"expectedContent": null, "key": + body: '{"commitMeta": {"hash": null, "authorTime": null, "signedOffBy": null, + "message": "test message", "commitTime": null, "properties": null, "committer": + null, "author": "nessie test"}, "operations": [{"expectedContent": null, "key": {"elements": ["this", "is", "sql", "baz"]}, "content": {"dialect": "SPARK", "sqlText": "SELECT * FROM foo", "id": "uuid3", "type": "VIEW"}, "type": "PUT"}]}' headers: @@ -327,11 +327,11 @@ interactions: User-Agent: - python-requests/2.26.0 method: POST - uri: http://localhost:19120/api/v1/trees/branch/contents_list_dev/commit?expectedHash=79b7d1477fe125600e32750eea90aedff7d412ab75428590e3d4bbe927673480 + uri: http://localhost:19120/api/v1/trees/branch/contents_list_dev/commit?expectedHash=244dd123b6e1490a6bbcf9cb73d23cedaf4823c5958003c0e90926eaf74a30af response: body: string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"contents_list_dev\",\n - \ \"hash\" : \"7d4e3a686a38aa14b804e56a00d13b6858e3c9ba805fe5cd8e1849772628ff82\"\n}" + \ \"hash\" : \"389469c5c3ae0c57f320c22921545e7172fecf56fc438a02c7118427e958be69\"\n}" headers: Content-Type: - application/json diff --git a/python/tests/cassettes/test_nessie_cli_content/test_content_view.yaml b/python/tests/cassettes/test_nessie_cli_content/test_content_view.yaml index 4d799e6259e..6660f1c6a33 100644 --- a/python/tests/cassettes/test_nessie_cli_content/test_content_view.yaml +++ b/python/tests/cassettes/test_nessie_cli_content/test_content_view.yaml @@ -48,8 +48,8 @@ interactions: code: 200 message: OK - request: - body: '{"name": "contents_view_dev", "hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", - "type": "BRANCH"}' + body: '{"hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", + "name": "contents_view_dev", "type": "BRANCH"}' headers: Accept: - '*/*' @@ -132,12 +132,12 @@ interactions: code: 404 message: Not Found - request: - body: '{"commitMeta": {"author": "nessie test", "signedOffBy": null, "properties": - null, "message": "test message", "committer": null, "hash": null, "commitTime": - null, "authorTime": null}, "operations": [{"key": {"elements": ["this", "is", - "iceberg", "foo"]}, "expectedContent": null, "content": {"idGenerators": "xyz", - "metadataLocation": "/a/b/c", "id": "test_contents_view", "type": "ICEBERG_TABLE"}, - "type": "PUT"}]}' + body: '{"commitMeta": {"hash": null, "authorTime": null, "signedOffBy": null, + "message": "test message", "commitTime": null, "properties": null, "committer": + null, "author": "nessie test"}, "operations": [{"expectedContent": null, "key": + {"elements": ["this", "is", "iceberg", "foo"]}, "content": {"specId": 42, "id": + "test_contents_view", "schemaId": 42, "snapshotId": 42, "sortOrderId": 42, "metadataLocation": + "/a/b/c", "type": "ICEBERG_TABLE"}, "type": "PUT"}]}' headers: Accept: - '*/*' @@ -146,7 +146,7 @@ interactions: Connection: - keep-alive Content-Length: - - '414' + - '458' Content-Type: - application/json User-Agent: @@ -156,7 +156,7 @@ interactions: response: body: string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"contents_view_dev\",\n - \ \"hash\" : \"68f5ecfaf5bdc76d417b60cb8531613ebef2c07cbd8e9499f7a21655f57b89ce\"\n}" + \ \"hash\" : \"de1e5eb78d57239f4b348b6c648ea63dfedd8e30f303862af0b61275ba5e1b49\"\n}" headers: Content-Type: - application/json @@ -183,7 +183,7 @@ interactions: string: "{\n \"token\" : null,\n \"references\" : [ {\n \"type\" : \"BRANCH\",\n \ \"name\" : \"main\",\n \"hash\" : \"2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d\"\n \ }, {\n \"type\" : \"BRANCH\",\n \"name\" : \"contents_view_dev\",\n - \ \"hash\" : \"68f5ecfaf5bdc76d417b60cb8531613ebef2c07cbd8e9499f7a21655f57b89ce\"\n + \ \"hash\" : \"de1e5eb78d57239f4b348b6c648ea63dfedd8e30f303862af0b61275ba5e1b49\"\n \ } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -220,12 +220,12 @@ interactions: code: 404 message: Not Found - request: - body: '{"commitMeta": {"author": "nessie test", "signedOffBy": null, "properties": - null, "message": "test message", "committer": null, "hash": null, "commitTime": - null, "authorTime": null}, "operations": [{"key": {"elements": ["this", "is", - "delta", "bar"]}, "expectedContent": null, "content": {"metadataLocationHistory": - ["asd"], "checkpointLocationHistory": ["def"], "lastCheckpoint": "x", "id": - "uuid2", "type": "DELTA_LAKE_TABLE"}, "type": "PUT"}]}' + body: '{"commitMeta": {"hash": null, "authorTime": null, "signedOffBy": null, + "message": "test message", "commitTime": null, "properties": null, "committer": + null, "author": "nessie test"}, "operations": [{"expectedContent": null, "key": + {"elements": ["this", "is", "delta", "bar"]}, "content": {"checkpointLocationHistory": + ["def"], "metadataLocationHistory": ["asd"], "lastCheckpoint": "x", "id": "uuid2", + "type": "DELTA_LAKE_TABLE"}, "type": "PUT"}]}' headers: Accept: - '*/*' @@ -240,11 +240,11 @@ interactions: User-Agent: - python-requests/2.26.0 method: POST - uri: http://localhost:19120/api/v1/trees/branch/contents_view_dev/commit?expectedHash=68f5ecfaf5bdc76d417b60cb8531613ebef2c07cbd8e9499f7a21655f57b89ce + uri: http://localhost:19120/api/v1/trees/branch/contents_view_dev/commit?expectedHash=de1e5eb78d57239f4b348b6c648ea63dfedd8e30f303862af0b61275ba5e1b49 response: body: string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"contents_view_dev\",\n - \ \"hash\" : \"f0d992864be441e83687256b39bc1f996cfbf81ea6b42c1e107f8c68f2310555\"\n}" + \ \"hash\" : \"47a9003ec38a8de1907b6a9c518867ad478ccaba36244f24acb9fbe35d01d989\"\n}" headers: Content-Type: - application/json @@ -271,7 +271,7 @@ interactions: string: "{\n \"token\" : null,\n \"references\" : [ {\n \"type\" : \"BRANCH\",\n \ \"name\" : \"main\",\n \"hash\" : \"2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d\"\n \ }, {\n \"type\" : \"BRANCH\",\n \"name\" : \"contents_view_dev\",\n - \ \"hash\" : \"f0d992864be441e83687256b39bc1f996cfbf81ea6b42c1e107f8c68f2310555\"\n + \ \"hash\" : \"47a9003ec38a8de1907b6a9c518867ad478ccaba36244f24acb9fbe35d01d989\"\n \ } ],\n \"hasMore\" : false\n}" headers: Content-Type: @@ -308,11 +308,11 @@ interactions: code: 404 message: Not Found - request: - body: '{"commitMeta": {"author": "nessie test", "signedOffBy": null, "properties": - null, "message": "test message", "committer": null, "hash": null, "commitTime": - null, "authorTime": null}, "operations": [{"key": {"elements": ["this", "is", - "sql.baz"]}, "expectedContent": null, "content": {"sqlText": "SELECT * FROM - foo", "dialect": "SPARK", "id": "uuid3", "type": "VIEW"}, "type": "PUT"}]}' + body: '{"commitMeta": {"hash": null, "authorTime": null, "signedOffBy": null, + "message": "test message", "commitTime": null, "properties": null, "committer": + null, "author": "nessie test"}, "operations": [{"expectedContent": null, "key": + {"elements": ["this", "is", "sql.baz"]}, "content": {"dialect": "SPARK", "sqlText": + "SELECT * FROM foo", "id": "uuid3", "type": "VIEW"}, "type": "PUT"}]}' headers: Accept: - '*/*' @@ -327,11 +327,11 @@ interactions: User-Agent: - python-requests/2.26.0 method: POST - uri: http://localhost:19120/api/v1/trees/branch/contents_view_dev/commit?expectedHash=f0d992864be441e83687256b39bc1f996cfbf81ea6b42c1e107f8c68f2310555 + uri: http://localhost:19120/api/v1/trees/branch/contents_view_dev/commit?expectedHash=47a9003ec38a8de1907b6a9c518867ad478ccaba36244f24acb9fbe35d01d989 response: body: string: "{\n \"type\" : \"BRANCH\",\n \"name\" : \"contents_view_dev\",\n - \ \"hash\" : \"18af029596bcaf748ca002cae0fae5ec312bdf85ebe1a3f14089a35ab8707024\"\n}" + \ \"hash\" : \"87da44ba71b55a9aa2ce3666df8387e2abd99909238035aaebf646e38a39e4d9\"\n}" headers: Content-Type: - application/json @@ -356,12 +356,13 @@ interactions: response: body: string: "{\n \"type\" : \"ICEBERG_TABLE\",\n \"id\" : \"test_contents_view\",\n - \ \"metadataLocation\" : \"/a/b/c\",\n \"idGenerators\" : \"xyz\"\n}" + \ \"metadataLocation\" : \"/a/b/c\",\n \"snapshotId\" : 42,\n \"schemaId\" + : 42,\n \"specId\" : 42,\n \"sortOrderId\" : 42\n}" headers: Content-Type: - application/json content-length: - - '120' + - '173' status: code: 200 message: OK diff --git a/python/tests/cassettes/test_nessie_client/test_client_interface_e2e.yaml b/python/tests/cassettes/test_nessie_client/test_client_interface_e2e.yaml index 92a83438ede..03e354b29ad 100644 --- a/python/tests/cassettes/test_nessie_client/test_client_interface_e2e.yaml +++ b/python/tests/cassettes/test_nessie_client/test_client_interface_e2e.yaml @@ -26,7 +26,7 @@ interactions: code: 200 message: OK - request: - body: '{"name": "main", "hash": null, "type": "BRANCH"}' + body: '{"hash": null, "name": "main", "type": "BRANCH"}' headers: Accept: - '*/*' @@ -56,8 +56,8 @@ interactions: code: 409 message: Conflict - request: - body: '{"name": "test", "hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", - "type": "BRANCH"}' + body: '{"hash": "2e1cfa82b035c26cbbbdae632cea070514eb8b773f616aaeaf668e2f0be8f10d", + "name": "test", "type": "BRANCH"}' headers: Accept: - '*/*' diff --git a/python/tests/test_nessie_cli.py b/python/tests/test_nessie_cli.py index 07e522a86c3..4477fbca0a5 100644 --- a/python/tests/test_nessie_cli.py +++ b/python/tests/test_nessie_cli.py @@ -77,7 +77,7 @@ def test_remote() -> None: def _new_table(table_id: str) -> IcebergTable: - return IcebergTable(table_id, "/a/b/c", "xyz") + return IcebergTable(table_id, "/a/b/c", 42, 43, 44, 45) @pytest.mark.vcr diff --git a/python/tests/test_nessie_cli_content.py b/python/tests/test_nessie_cli_content.py index 2509fe74eba..7f2c97cfd18 100644 --- a/python/tests/test_nessie_cli_content.py +++ b/python/tests/test_nessie_cli_content.py @@ -231,8 +231,10 @@ def test_content_commit_no_expected_state() -> None: make_commit("commit.expected.contents", table2, branch, message="commit 2") -def _create_iceberg_table(table_id: str, metadata_location: str = "/a/b/c", id_generators: str = "xyz") -> IcebergTable: - return IcebergTable(table_id, metadata_location, id_generators) +def _create_iceberg_table( + table_id: str, metadata_location: str = "/a/b/c", snapshot_id: int = 42, schema_id: int = 42, spec_id: int = 42, sort_order_id: int = 42 +) -> IcebergTable: + return IcebergTable(table_id, metadata_location, snapshot_id, schema_id, spec_id, sort_order_id) def _create_delta_lake_table( diff --git a/servers/jax-rs-tests/src/main/java/org/projectnessie/jaxrs/AbstractResteasyTest.java b/servers/jax-rs-tests/src/main/java/org/projectnessie/jaxrs/AbstractResteasyTest.java index 34c83beec5a..361946bcc75 100644 --- a/servers/jax-rs-tests/src/main/java/org/projectnessie/jaxrs/AbstractResteasyTest.java +++ b/servers/jax-rs-tests/src/main/java/org/projectnessie/jaxrs/AbstractResteasyTest.java @@ -85,7 +85,7 @@ public void testBasic() { newReference, rest().get("trees/tree/test").then().statusCode(200).extract().as(Branch.class)); - IcebergTable table = IcebergTable.of("/the/directory/over/there", "x"); + IcebergTable table = IcebergTable.of("/the/directory/over/there", 42, 42, 42, 42); Branch commitResponse = rest() @@ -111,13 +111,13 @@ public void testBasic() { updates[i] = ImmutablePut.builder() .key(ContentKey.of("item", Integer.toString(i))) - .content(IcebergTable.of("/the/directory/over/there/" + i, "x")) + .content(IcebergTable.of("/the/directory/over/there/" + i, 42, 42, 42, 42)) .build(); } updates[10] = ImmutablePut.builder() .key(ContentKey.of("xxx", "test")) - .content(IcebergTable.of("/the/directory/over/there/has/been/moved", "x")) + .content(IcebergTable.of("/the/directory/over/there/has/been/moved", 42, 42, 42, 42)) .build(); Reference branch = rest().get("trees/tree/test").as(Reference.class); @@ -143,7 +143,9 @@ public void testBasic() { Assertions.assertEquals(updates[10].getContent(), res.body().as(Content.class)); IcebergTable currentTable = table; - table = IcebergTable.of("/the/directory/over/there/has/been/moved/again", "x", table.getId()); + table = + IcebergTable.of( + "/the/directory/over/there/has/been/moved/again", 42, 42, 42, 42, table.getId()); Branch b2 = rest().get("trees/tree/test").as(Branch.class); rest() @@ -246,10 +248,11 @@ private Branch commit( (expectedMetadataUrl != null) ? Put.of( ContentKey.of(contentKey), - IcebergTable.of(metadataUrl, "x", contentId), - IcebergTable.of(expectedMetadataUrl, "x", contentId)) + IcebergTable.of(metadataUrl, 42, 42, 42, 42, contentId), + IcebergTable.of(expectedMetadataUrl, 42, 42, 42, 42, contentId)) : Put.of( - ContentKey.of(contentKey), IcebergTable.of(metadataUrl, "x", contentId))) + ContentKey.of(contentKey), + IcebergTable.of(metadataUrl, 42, 42, 42, 42, contentId))) .commitMeta(CommitMeta.builder().author(author).message("").build()) .build(); return rest() @@ -399,7 +402,7 @@ public void testLogFiltering() { @Test public void testGetContent() { Branch branch = makeBranch("content-test"); - IcebergTable table = IcebergTable.of("content-table1", "x"); + IcebergTable table = IcebergTable.of("content-table1", 42, 42, 42, 42); commit(table.getId(), branch, "key1", table.getMetadataLocation()); diff --git a/servers/jax-rs-tests/src/main/java/org/projectnessie/jaxrs/AbstractTestRest.java b/servers/jax-rs-tests/src/main/java/org/projectnessie/jaxrs/AbstractTestRest.java index 7e10ce990ea..2507b55a058 100644 --- a/servers/jax-rs-tests/src/main/java/org/projectnessie/jaxrs/AbstractTestRest.java +++ b/servers/jax-rs-tests/src/main/java/org/projectnessie/jaxrs/AbstractTestRest.java @@ -242,7 +242,7 @@ public void referenceNames(String refNamePart) throws BaseNessieClientServerExce String root = "ref_name_" + refNamePart.replaceAll("[^a-z]", ""); Branch main = createBranch(root); - IcebergTable meta = IcebergTable.of("meep", "x"); + IcebergTable meta = IcebergTable.of("meep", 42, 42, 42, 42); main = api.commitMultipleOperations() .branchName(main.getName()) @@ -319,7 +319,7 @@ public void referenceNames(String refNamePart) throws BaseNessieClientServerExce // Need to have at least one op, otherwise all following operations (assignTag/Branch, merge, // delete) will fail - meta = IcebergTable.of("foo", "x"); + meta = IcebergTable.of("foo", 42, 42, 42, 42); api.commitMultipleOperations() .branchName(branchName) .hash(branchHash) @@ -574,7 +574,7 @@ protected void createCommits( for (int j = 0; j < numAuthors; j++) { String author = "author-" + j; for (int i = 0; i < commitsPerAuthor; i++) { - IcebergTable meta = IcebergTable.of("some-file-" + i, "x"); + IcebergTable meta = IcebergTable.of("some-file-" + i, 42, 42, 42, 42); String nextHash = api.commitMultipleOperations() .branchName(branch.getName()) @@ -638,7 +638,7 @@ public void commitLogPaging() throws BaseNessieClientServerException { for (int i = 0; i < commits; i++) { String msg = "message-for-" + i; allMessages.add(msg); - IcebergTable tableMeta = IcebergTable.of("some-file-" + i, "x"); + IcebergTable tableMeta = IcebergTable.of("some-file-" + i, 42, 42, 42, 42); String nextHash = api.commitMultipleOperations() .branchName(branch.getName()) @@ -675,8 +675,8 @@ public void transplant() throws BaseNessieClientServerException { Branch base = createBranch("transplant-base"); Branch branch = createBranch("transplant-branch"); - IcebergTable table1 = IcebergTable.of("transplant-table1", "x"); - IcebergTable table2 = IcebergTable.of("transplant-table2", "y"); + IcebergTable table1 = IcebergTable.of("transplant-table1", 42, 42, 42, 42); + IcebergTable table2 = IcebergTable.of("transplant-table2", 43, 43, 43, 43); Branch committed1 = api.commitMultipleOperations() @@ -725,8 +725,8 @@ public void merge() throws BaseNessieClientServerException { Branch base = createBranch("merge-base"); Branch branch = createBranch("merge-branch"); - IcebergTable table1 = IcebergTable.of("merge-table1", "x"); - IcebergTable table2 = IcebergTable.of("merge-table2", "y"); + IcebergTable table1 = IcebergTable.of("merge-table1", 42, 42, 42, 42); + IcebergTable table2 = IcebergTable.of("merge-table2", 43, 43, 43, 43); Branch committed1 = api.commitMultipleOperations() @@ -812,8 +812,8 @@ public void multiget() throws BaseNessieClientServerException { Branch branch = createBranch("foo"); ContentKey a = ContentKey.of("a"); ContentKey b = ContentKey.of("b"); - IcebergTable ta = IcebergTable.of("path1", "x"); - IcebergTable tb = IcebergTable.of("path2", "x"); + IcebergTable ta = IcebergTable.of("path1", 42, 42, 42, 42); + IcebergTable tb = IcebergTable.of("path2", 42, 42, 42, 42); api.commitMultipleOperations() .branch(branch) .operation(Put.of(a, ta)) @@ -873,7 +873,7 @@ public static Stream contentAndOperationTypes() { return Stream.of( new ContentAndOperationType( Type.ICEBERG_TABLE, - Put.of(ContentKey.of("iceberg"), IcebergTable.of("/iceberg/table", "x"))), + Put.of(ContentKey.of("iceberg"), IcebergTable.of("/iceberg/table", 42, 42, 42, 42))), new ContentAndOperationType( Type.VIEW, Put.of( @@ -981,7 +981,7 @@ public void filterEntriesByType() throws BaseNessieClientServerException { Branch branch = createBranch("filterTypes"); ContentKey a = ContentKey.of("a"); ContentKey b = ContentKey.of("b"); - IcebergTable tam = IcebergTable.of("path1", "x"); + IcebergTable tam = IcebergTable.of("path1", 42, 42, 42, 42); SqlView tb = ImmutableSqlView.builder().sqlText("select * from table").dialect(Dialect.DREMIO).build(); api.commitMultipleOperations() @@ -1040,22 +1040,22 @@ public void filterEntriesByNamespace() throws BaseNessieClientServerException { ContentKey fourth = ContentKey.of("a", "fourthTable"); api.commitMultipleOperations() .branch(branch) - .operation(Put.of(first, IcebergTable.of("path1", "x"))) + .operation(Put.of(first, IcebergTable.of("path1", 42, 42, 42, 42))) .commitMeta(CommitMeta.fromMessage("commit 1")) .commit(); api.commitMultipleOperations() .branch(branch) - .operation(Put.of(second, IcebergTable.of("path2", "x"))) + .operation(Put.of(second, IcebergTable.of("path2", 42, 42, 42, 42))) .commitMeta(CommitMeta.fromMessage("commit 2")) .commit(); api.commitMultipleOperations() .branch(branch) - .operation(Put.of(third, IcebergTable.of("path3", "x"))) + .operation(Put.of(third, IcebergTable.of("path3", 42, 42, 42, 42))) .commitMeta(CommitMeta.fromMessage("commit 3")) .commit(); api.commitMultipleOperations() .branch(branch) - .operation(Put.of(fourth, IcebergTable.of("path4", "x"))) + .operation(Put.of(fourth, IcebergTable.of("path4", 42, 42, 42, 42))) .commitMeta(CommitMeta.fromMessage("commit 4")) .commit(); @@ -1117,7 +1117,7 @@ public void filterEntriesByNamespaceAndPrefixDepth() throws BaseNessieClientServ for (int i = 0; i < 5; i++) { api.commitMultipleOperations() .branch(branch) - .operation(Put.of(keys.get(i), IcebergTable.of("path" + i, "x"))) + .operation(Put.of(keys.get(i), IcebergTable.of("path" + i, 42, 42, 42, 42))) .commitMeta(CommitMeta.fromMessage("commit " + i)) .commit(); } @@ -1230,7 +1230,7 @@ public void checkSpecialCharacterRoundTrip() throws BaseNessieClientServerExcept Branch branch = createBranch("specialchar"); // ContentKey k = ContentKey.of("/%国","国.国"); ContentKey k = ContentKey.of("a.b", "c.txt"); - IcebergTable ta = IcebergTable.of("path1", "x"); + IcebergTable ta = IcebergTable.of("path1", 42, 42, 42, 42); api.commitMultipleOperations() .branch(branch) .operation(Put.of(k, ta)) diff --git a/servers/quarkus-server/src/test/java/org/projectnessie/server/AbstractTestBasicOperations.java b/servers/quarkus-server/src/test/java/org/projectnessie/server/AbstractTestBasicOperations.java index c010abd69fb..53309fe1c5d 100644 --- a/servers/quarkus-server/src/test/java/org/projectnessie/server/AbstractTestBasicOperations.java +++ b/servers/quarkus-server/src/test/java/org/projectnessie/server/AbstractTestBasicOperations.java @@ -74,7 +74,7 @@ void testAdmin() throws BaseNessieClientServerException { () -> api.commitMultipleOperations() .branch(branch) - .operation(Put.of(key, IcebergTable.of("foo", "x", "cid-foo"))) + .operation(Put.of(key, IcebergTable.of("foo", 42, 42, 42, 42, "cid-foo"))) .commitMeta(CommitMeta.fromMessage("empty message")) .commit()); @@ -109,7 +109,7 @@ void testAdmin() throws BaseNessieClientServerException { // have conflicts. api.commitMultipleOperations() .branch(b) - .operation(Put.of(key, IcebergTable.of("bar", "x", "cid-bar"))) + .operation(Put.of(key, IcebergTable.of("bar", 42, 42, 42, 42, "cid-bar"))) .commitMeta(CommitMeta.fromMessage("")) .commit(); }); diff --git a/servers/quarkus-server/src/test/java/org/projectnessie/server/TestAuthorizationRules.java b/servers/quarkus-server/src/test/java/org/projectnessie/server/TestAuthorizationRules.java index c60e664fdf3..c7ecc2ce0f9 100644 --- a/servers/quarkus-server/src/test/java/org/projectnessie/server/TestAuthorizationRules.java +++ b/servers/quarkus-server/src/test/java/org/projectnessie/server/TestAuthorizationRules.java @@ -76,7 +76,7 @@ private void testAllOps(String branchName, String role, boolean shouldFail) listAllReferences(branchName, shouldFail); String cid = "cid-foo-" + UUID.randomUUID(); - addContent(branch, Put.of(key, IcebergTable.of("foo", "x", cid)), role, shouldFail); + addContent(branch, Put.of(key, IcebergTable.of("foo", 42, 42, 42, 42, cid)), role, shouldFail); if (!shouldFail) { // These requests cannot succeed, because "disallowedBranchForTestUser" could not be created @@ -112,7 +112,7 @@ void testCanCommitButNotUpdateOrDeleteEntity() throws BaseNessieClientServerExce .commitMultipleOperations() .branch(branch) .commitMeta(CommitMeta.fromMessage("add stuff")) - .operation(Put.of(key, IcebergTable.of("foo", "x", "cid-foo"))) + .operation(Put.of(key, IcebergTable.of("foo", 42, 42, 42, 42, "cid-foo"))) .commit()) .isInstanceOf(NessieForbiddenException.class) .hasMessageContaining( diff --git a/servers/quarkus-server/src/test/java/org/projectnessie/server/error/ITNativeNessieError.java b/servers/quarkus-server/src/test/java/org/projectnessie/server/error/ITNativeNessieError.java index 9f6cf9b75fd..1a3287858ca 100644 --- a/servers/quarkus-server/src/test/java/org/projectnessie/server/error/ITNativeNessieError.java +++ b/servers/quarkus-server/src/test/java/org/projectnessie/server/error/ITNativeNessieError.java @@ -50,7 +50,7 @@ void init() { @Test void testNullParamViolation() { ContentKey k = ContentKey.of("a"); - IcebergTable t = IcebergTable.of("path1", "x"); + IcebergTable t = IcebergTable.of("path1", 42, 42, 42, 42); assertEquals( "Bad Request (HTTP/400): commitMultipleOperations.hash: must not be null", assertThrows( diff --git a/servers/store/src/main/java/org/projectnessie/server/store/TableCommitMetaStoreWorker.java b/servers/store/src/main/java/org/projectnessie/server/store/TableCommitMetaStoreWorker.java index e0fd2aeb3d6..a4b62cd0315 100644 --- a/servers/store/src/main/java/org/projectnessie/server/store/TableCommitMetaStoreWorker.java +++ b/servers/store/src/main/java/org/projectnessie/server/store/TableCommitMetaStoreWorker.java @@ -29,6 +29,7 @@ import org.projectnessie.model.ImmutableCommitMeta; import org.projectnessie.model.ImmutableDeltaLakeTable; import org.projectnessie.model.ImmutableDeltaLakeTable.Builder; +import org.projectnessie.model.ImmutableIcebergTable; import org.projectnessie.model.ImmutableSqlView; import org.projectnessie.model.SqlView; import org.projectnessie.model.SqlView.Dialect; @@ -46,10 +47,13 @@ public ByteString toStoreOnReferenceState(Content content) { ObjectTypes.Content.Builder builder = ObjectTypes.Content.newBuilder().setId(content.getId()); if (content instanceof IcebergTable) { IcebergTable state = (IcebergTable) content; - ObjectTypes.IcebergMetadataPointer.Builder stateBuilder = - ObjectTypes.IcebergMetadataPointer.newBuilder() - .setMetadataLocation(state.getMetadataLocation()); - builder.setIcebergMetadataPointer(stateBuilder); + ObjectTypes.IcebergRefState.Builder stateBuilder = + ObjectTypes.IcebergRefState.newBuilder() + .setSnapshotId(state.getSnapshotId()) + .setSchemaId(state.getSchemaId()) + .setSpecId(state.getSpecId()) + .setSortOrderId(state.getSortOrderId()); + builder.setIcebergRefState(stateBuilder); } else if (content instanceof DeltaLakeTable) { ObjectTypes.DeltaLakeTable.Builder table = @@ -82,9 +86,10 @@ public ByteString toStoreGlobalState(Content content) { ObjectTypes.Content.Builder builder = ObjectTypes.Content.newBuilder().setId(content.getId()); if (content instanceof IcebergTable) { IcebergTable state = (IcebergTable) content; - ObjectTypes.IcebergGlobal.Builder stateBuilder = - ObjectTypes.IcebergGlobal.newBuilder().setIdGenerators(state.getIdGenerators()); - builder.setIcebergGlobal(stateBuilder); + ObjectTypes.IcebergMetadataPointer.Builder stateBuilder = + ObjectTypes.IcebergMetadataPointer.newBuilder() + .setMetadataLocation(state.getMetadataLocation()); + builder.setIcebergMetadataPointer(stateBuilder); } else { throw new IllegalArgumentException("Unknown type " + content); } @@ -111,16 +116,20 @@ public Content valueFromStore(ByteString onReferenceValue, Optional } return builder.build(); - case ICEBERG_METADATA_POINTER: + case ICEBERG_REF_STATE: ObjectTypes.Content global = - globalContent.orElseThrow(TableCommitMetaStoreWorker::noIcebergGlobal); - if (!global.hasIcebergGlobal()) { - throw noIcebergGlobal(); + globalContent.orElseThrow(TableCommitMetaStoreWorker::noIcebergMetadataPointer); + if (!global.hasIcebergMetadataPointer()) { + throw noIcebergMetadataPointer(); } - return IcebergTable.of( - content.getIcebergMetadataPointer().getMetadataLocation(), - global.getIcebergGlobal().getIdGenerators(), - content.getId()); + return ImmutableIcebergTable.builder() + .metadataLocation(global.getIcebergMetadataPointer().getMetadataLocation()) + .snapshotId(content.getIcebergRefState().getSnapshotId()) + .schemaId(content.getIcebergRefState().getSchemaId()) + .specId(content.getIcebergRefState().getSpecId()) + .sortOrderId(content.getIcebergRefState().getSortOrderId()) + .id(content.getId()) + .build(); case SQL_VIEW: ObjectTypes.SqlView view = content.getSqlView(); @@ -136,7 +145,7 @@ public Content valueFromStore(ByteString onReferenceValue, Optional } } - private static IllegalArgumentException noIcebergGlobal() { + private static IllegalArgumentException noIcebergMetadataPointer() { return new IllegalArgumentException( "Iceberg content from reference must have global state, but has none"); } diff --git a/servers/store/src/main/proto/table.proto b/servers/store/src/main/proto/table.proto index 525ea7dd042..7640ccd4eab 100644 --- a/servers/store/src/main/proto/table.proto +++ b/servers/store/src/main/proto/table.proto @@ -23,7 +23,7 @@ option java_generate_equals_and_hash = true; message Content { oneof object_type { IcebergMetadataPointer iceberg_metadata_pointer = 1; - IcebergGlobal iceberg_global = 2; + IcebergRefState iceberg_ref_state = 2; SqlView sql_view = 3; DeltaLakeTable delta_lake_table = 4; } @@ -34,8 +34,11 @@ message IcebergMetadataPointer { string metadata_location = 1; } -message IcebergGlobal { - string id_generators = 1; +message IcebergRefState { + int64 snapshot_id = 1; + int32 schema_id = 2; + int32 spec_id = 3; + int32 sort_order_id = 4; } message SqlView { diff --git a/servers/store/src/test/java/org/projectnessie/server/store/TestStoreWorker.java b/servers/store/src/test/java/org/projectnessie/server/store/TestStoreWorker.java index 4e1c63e2383..cc3cfab2188 100644 --- a/servers/store/src/test/java/org/projectnessie/server/store/TestStoreWorker.java +++ b/servers/store/src/test/java/org/projectnessie/server/store/TestStoreWorker.java @@ -35,8 +35,8 @@ import org.projectnessie.model.ImmutableSqlView; import org.projectnessie.model.SqlView; import org.projectnessie.store.ObjectTypes; -import org.projectnessie.store.ObjectTypes.IcebergGlobal; import org.projectnessie.store.ObjectTypes.IcebergMetadataPointer; +import org.projectnessie.store.ObjectTypes.IcebergRefState; class TestStoreWorker { private static final ObjectMapper MAPPER = new ObjectMapper(); @@ -69,18 +69,23 @@ void testSerde(Map.Entry entry) { @Test void testSerdeIceberg() { String path = "foo/bar"; - IcebergTable table = IcebergTable.of(path, "xyz", ID); + IcebergTable table = IcebergTable.of(path, 42, 43, 44, 45, ID); ObjectTypes.Content protoTableGlobal = ObjectTypes.Content.newBuilder() .setId(ID) - .setIcebergGlobal(IcebergGlobal.newBuilder().setIdGenerators("xyz")) + .setIcebergMetadataPointer( + IcebergMetadataPointer.newBuilder().setMetadataLocation(path)) .build(); ObjectTypes.Content protoOnRef = ObjectTypes.Content.newBuilder() .setId(ID) - .setIcebergMetadataPointer( - IcebergMetadataPointer.newBuilder().setMetadataLocation(path)) + .setIcebergRefState( + IcebergRefState.newBuilder() + .setSnapshotId(42) + .setSchemaId(43) + .setSpecId(44) + .setSortOrderId(45)) .build(); ByteString tableGlobalBytes = worker.toStoreGlobalState(table); diff --git a/tools/content-generator/src/main/java/org/projectnessie/tools/contentgenerator/cli/GenerateContent.java b/tools/content-generator/src/main/java/org/projectnessie/tools/contentgenerator/cli/GenerateContent.java index 848d9801585..253b050a090 100644 --- a/tools/content-generator/src/main/java/org/projectnessie/tools/contentgenerator/cli/GenerateContent.java +++ b/tools/content-generator/src/main/java/org/projectnessie/tools/contentgenerator/cli/GenerateContent.java @@ -233,7 +233,10 @@ private Content createContents(Content currentContents, ThreadLocalRandom random case ICEBERG_TABLE: ImmutableIcebergTable.Builder icebergBuilder = ImmutableIcebergTable.builder() - .idGenerators("ids " + random.nextLong()) + .snapshotId(random.nextLong()) + .schemaId(random.nextInt()) + .specId(random.nextInt()) + .sortOrderId(random.nextInt()) .metadataLocation("metadata " + random.nextLong()); if (currentContents != null) { icebergBuilder.id(currentContents.getId()); diff --git a/versioned/persist/adapter/src/main/java/org/projectnessie/versioned/persist/adapter/ContentAndState.java b/versioned/persist/adapter/src/main/java/org/projectnessie/versioned/persist/adapter/ContentAndState.java index 4578d33461b..4ac8fccf8f3 100644 --- a/versioned/persist/adapter/src/main/java/org/projectnessie/versioned/persist/adapter/ContentAndState.java +++ b/versioned/persist/adapter/src/main/java/org/projectnessie/versioned/persist/adapter/ContentAndState.java @@ -23,7 +23,10 @@ @Immutable public interface ContentAndState { - /** Per-named-reference state for a content key. For example, Iceberg's snapshot-ID. */ + /** + * Per-named-reference state for a content key. For example, Iceberg's snapshot-ID, schema-ID, + * partition-spec-ID, default-sort-order-ID. + */ @Nonnull CONTENT getRefState();