Discovery starting. Discovery completed in 3 seconds, 118 milliseconds. Run starting. Expected test count is: 38 IcebergCRUDSpec: A dataset we CRUD - should create the appropriate Iceberg files + Given data Datum(0,label_0,0,2025-05-13,2025-05-13 16:37:59.688) Datum(1,label_1,1,2025-05-12,2025-05-13 16:37:59.888) Datum(2,label_2,2,2025-05-11,2025-05-13 16:38:00.088) ... + When writing to table 'polaris.my_namespace.IcebergCRUDSpec' + Then reading the table back yields the same data + And there is no mention of the table in the metastore + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - should support updates with 'update polaris.my_namespace.IcebergCRUDSpec set label='ipse locum'' + Given SQL update polaris.my_namespace.IcebergCRUDSpec set label = 'ipse locum' + When we execute it + Then all rows are updated + And look like: Datum(15,ipse locum,0,2025-04-28,2025-05-13 16:38:02.688) Datum(16,ipse locum,1,2025-04-27,2025-05-13 16:38:02.888) Datum(17,ipse locum,2,2025-04-26,2025-05-13 16:38:03.088) ... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - should be able to have its schema updated + Given SQL ALTER TABLE polaris.my_namespace.IcebergCRUDSpec ADD COLUMNS (new_string string comment 'new_string docs') + When we execute it + Then all rows are updated + And look like: [15,ipse locum,0,2025-04-28,2025-05-13 16:38:02.688,null] [16,ipse locum,1,2025-04-27,2025-05-13 16:38:02.888,null] [17,ipse locum,2,2025-04-26,2025-05-13 16:38:03.088,null] ... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - should be able to have rows removed + Given SQL DELETE FROM polaris.my_namespace.IcebergCRUDSpec where id < 10 + And the parquet files: /tmp/polaris/my_namespace/IcebergCRUDSpec/data/00003-3-6ef46ce4-4d2a-49a7-8dbb-b5630adf3649-0-00001.parquet /tmp/polaris/my_namespace/IcebergCRUDSpec/data/00001-1-6ef46ce4-4d2a-49a7-8dbb-b5630adf3649-0-00001.parquet /tmp/polaris/my_namespace/IcebergCRUDSpec/data/.00000-0-6ef46ce4-4d2a-49a7-8dbb-b5630adf3649-0-00001.parquet.crc /tmp/polaris/my_namespace/IcebergCRUDSpec/data/00000-0-6ef46ce4-4d2a-49a7-8dbb-b5630adf3649-0-00001.parquet /tmp/polaris/my_namespace/IcebergCRUDSpec/data/.00003-3-6ef46ce4-4d2a-49a7-8dbb-b5630adf3649-0-00001.parquet.crc /tmp/polaris/my_namespace/IcebergCRUDSpec/data/.00000-6-74157093-eb9b-4026-a47e-721b9059d086-0-00001.parquet.crc /tmp/polaris/my_namespace/IcebergCRUDSpec/data/00002-2-6ef46ce4-4d2a-49a7-8dbb-b5630adf3649-0-00001.parquet /tmp/polaris/my_namespace/IcebergCRUDSpec/data/00000-6-74157093-eb9b-4026-a47e-721b9059d086-0-00001.parquet /tmp/polaris/my_namespace/IcebergCRUDSpec/data/.00001-1-6ef46ce4-4d2a-49a7-8dbb-b5630adf3649-0-00001.parquet.crc /tmp/polaris/my_namespace/IcebergCRUDSpec/data/.00002-2-6ef46ce4-4d2a-49a7-8dbb-b5630adf3649-0-00001.parquet.crc + When we execute it + Then there are no longer an rows with ID < 10 + And no files are deleted but there are the following new parquet files: /tmp/polaris/my_namespace/IcebergCRUDSpec/data/.00000-12-abbe2704-f185-4f23-b4ce-94d8a9f385ae-0-00001.parquet.crc /tmp/polaris/my_namespace/IcebergCRUDSpec/data/00000-12-abbe2704-f185-4f23-b4ce-94d8a9f385ae-0-00001.parquet + And those new files contain just the data with id >= 10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - should can have its history queried + Given a table that has seen changes + When we execute: select * from polaris.my_namespace.IcebergCRUDSpec.history + Then we see entries in the history table thus: +-----------------------+-------------------+-------------------+-------------------+ |made_current_at |snapshot_id |parent_id |is_current_ancestor| +-----------------------+-------------------+-------------------+-------------------+ |2025-05-13 16:38:01.232|5692167117364342782|NULL |true | |2025-05-13 16:38:02.429|3729094367276815455|5692167117364342782|true | |2025-05-13 16:38:03.433|821239826060547473 |3729094367276815455|true | +-----------------------+-------------------+-------------------+-------------------+ + And we can view a snapshot image with SQL: select * from polaris.my_namespace.IcebergCRUDSpec VERSION AS OF 5692167117364342782 +---+--------+------------+----------+-----------------------+ id |label |partitionKey|date |timestamp | +---+--------+------------+----------+-----------------------+ 0 |label_0 |0 |2025-05-13|2025-05-13 16:37:59.688| 1 |label_1 |1 |2025-05-12|2025-05-13 16:37:59.888| 2 |label_2 |2 |2025-05-11|2025-05-13 16:38:00.088| 3 |label_3 |3 |2025-05-10|2025-05-13 16:38:00.288| 4 |label_4 |4 |2025-05-09|2025-05-13 16:38:00.488| 5 |label_5 |0 |2025-05-08|2025-05-13 16:38:00.688| 6 |label_6 |1 |2025-05-07|2025-05-13 16:38:00.888| 7 |label_7 |2 |2025-05-06|2025-05-13 16:38:01.088| 8 |label_8 |3 |2025-05-05|2025-05-13 16:38:01.288| 9 |label_9 |4 |2025-05-04|2025-05-13 16:38:01.488| 10 |label_10|0 |2025-05-03|2025-05-13 16:38:01.688| 11 |label_11|1 |2025-05-02|2025-05-13 16:38:01.888| 12 |label_12|2 |2025-05-01|2025-05-13 16:38:02.088| 13 |label_13|3 |2025-04-30|2025-05-13 16:38:02.288| 14 |label_14|4 |2025-04-29|2025-05-13 16:38:02.488| 15 |label_15|0 |2025-04-28|2025-05-13 16:38:02.688| 16 |label_16|1 |2025-04-27|2025-05-13 16:38:02.888| 17 |label_17|2 |2025-04-26|2025-05-13 16:38:03.088| 18 |label_18|3 |2025-04-25|2025-05-13 16:38:03.288| 19 |label_19|4 |2025-04-24|2025-05-13 16:38:03.488| +---+--------+------------+----------+-----------------------+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - should when vacuumed, have old files removed + Given the 12 files are: /tmp/polaris/my_namespace/IcebergCRUDSpec/data/00003-3-6ef46ce4-4d2a-49a7-8dbb-b5630adf3649-0-00001.parquet /tmp/polaris/my_namespace/IcebergCRUDSpec/data/00000-0-6ef46ce4-4d2a-49a7-8dbb-b5630adf3649-0-00001.parquet /tmp/polaris/my_namespace/IcebergCRUDSpec/data/.00003-3-6ef46ce4-4d2a-49a7-8dbb-b5630adf3649-0-00001.parquet.crc /tmp/polaris/my_namespace/IcebergCRUDSpec/data/.00002-2-6ef46ce4-4d2a-49a7-8dbb-b5630adf3649-0-00001.parquet.crc /tmp/polaris/my_namespace/IcebergCRUDSpec/data/.00000-12-abbe2704-f185-4f23-b4ce-94d8a9f385ae-0-00001.parquet.crc /tmp/polaris/my_namespace/IcebergCRUDSpec/data/.00000-6-74157093-eb9b-4026-a47e-721b9059d086-0-00001.parquet.crc /tmp/polaris/my_namespace/IcebergCRUDSpec/data/00001-1-6ef46ce4-4d2a-49a7-8dbb-b5630adf3649-0-00001.parquet /tmp/polaris/my_namespace/IcebergCRUDSpec/data/00002-2-6ef46ce4-4d2a-49a7-8dbb-b5630adf3649-0-00001.parquet /tmp/polaris/my_namespace/IcebergCRUDSpec/data/00000-12-abbe2704-f185-4f23-b4ce-94d8a9f385ae-0-00001.parquet /tmp/polaris/my_namespace/IcebergCRUDSpec/data/.00000-0-6ef46ce4-4d2a-49a7-8dbb-b5630adf3649-0-00001.parquet.crc /tmp/polaris/my_namespace/IcebergCRUDSpec/data/00000-6-74157093-eb9b-4026-a47e-721b9059d086-0-00001.parquet /tmp/polaris/my_namespace/IcebergCRUDSpec/data/.00001-1-6ef46ce4-4d2a-49a7-8dbb-b5630adf3649-0-00001.parquet.crc + When we call expireSnapshot + Then the original 12 files now look like: /tmp/polaris/my_namespace/IcebergCRUDSpec/data/.00000-12-abbe2704-f185-4f23-b4ce-94d8a9f385ae-0-00001.parquet.crc /tmp/polaris/my_namespace/IcebergCRUDSpec/data/.00000-6-74157093-eb9b-4026-a47e-721b9059d086-0-00001.parquet.crc /tmp/polaris/my_namespace/IcebergCRUDSpec/data/00000-6-74157093-eb9b-4026-a47e-721b9059d086-0-00001.parquet /tmp/polaris/my_namespace/IcebergCRUDSpec/data/00000-12-abbe2704-f185-4f23-b4ce-94d8a9f385ae-0-00001.parquet + And there are 8 new files + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - should should delete all files when dropped + Given polaris.my_namespace.IcebergCRUDSpec has 2 + When we execute: DROP TABLE polaris.my_namespace.IcebergCRUDSpec PURGE + Then there are no files + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +