Skip to content

Commit 728669d

Browse files
vustefgbrgr
andauthored
Switch Julia bindings to the new async API based on RustyObjectStore (#3)
Adds support for the async interface provided by iceberg_rust_ffi in RelationalAI/iceberg_rust_ffi#3 --------- Co-authored-by: Gerald Berger <gberger.work@gmail.com>
1 parent d6c77f9 commit 728669d

File tree

49 files changed

+967
-519
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+967
-519
lines changed

.github/workflows/CI.yml

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,51 @@ jobs:
1414
JULIA_NUM_THREADS: 2
1515
# TODO iceberg_rust_ffi requires this and panics otherwise, we should fix that (test
1616
# bucket is publicly accessible).
17-
AWS_ACCESS_KEY_ID: "<AWS_ACCESS_KEY_ID>"
17+
AWS_ACCESS_KEY_ID: root
18+
AWS_SECRET_ACCESS_KEY: password
19+
AWS_ENDPOINT_URL: http://localhost:9000
20+
AWS_REGION: us-east-1
1821
runs-on: ${{ matrix.os }}
1922
strategy:
2023
fail-fast: false
2124
matrix:
22-
version:
23-
- '1.10'
24-
- '1.11'
25-
os:
26-
- ubuntu-latest
27-
- macOS-latest
28-
arch:
29-
- x64
25+
include:
26+
# Ubuntu on x64
27+
- version: '1.10'
28+
os: ubuntu-latest
29+
arch: x64
30+
- version: '1.11'
31+
os: ubuntu-latest
32+
arch: x64
3033
steps:
3134
- uses: actions/checkout@v3.5.0
35+
- name: Initialize containers
36+
uses: gacts/run-and-post-run@v1
37+
with:
38+
run: |
39+
docker network create iceberg_net
40+
docker run -d --name minio \
41+
--network=iceberg_net -p 9000:9000 \
42+
-e MINIO_ROOT_USER=root \
43+
-e MINIO_ROOT_PASSWORD=password \
44+
-e MINIO_DOMAIN=minio \
45+
-v ${{ github.workspace }}/assets/tpch:/input minio/minio:latest server /data/
46+
until (docker exec minio mc alias set minio http://localhost:9000 root password) do echo '... waiting ...' && sleep 1; done;
47+
docker exec minio mc mb minio/warehouse
48+
docker exec minio mc cp -r /input/tpch.sf01/ minio/warehouse/tpch.sf01/
49+
docker run -d --name rest \
50+
--network=iceberg_net \
51+
-p 8181:8181 \
52+
-v ${{ github.workspace }}/assets/rest:/tmp \
53+
-e AWS_ACCESS_KEY_ID=root \
54+
-e AWS_SECRET_ACCESS_KEY=password \
55+
-e AWS_ENDPOINT_URL=http://minio:9000 \
56+
-e AWS_REGION=us-east-1 \
57+
-e CATALOG_S3_ENDPOINT=http://minio:9000 \
58+
-e CATALOG_WAREHOUSE=s3://warehouse \
59+
-e CATALOG_IO__IMPL=org.apache.iceberg.aws.s3.S3FileIO apache/iceberg-rest-fixture
60+
post:
61+
docker stop rest minio && docker rm rest minio && docker network rm iceberg_net
3262
- uses: julia-actions/setup-julia@v1
3363
with:
3464
version: ${{ matrix.version }}

Manifest.toml

Lines changed: 81 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
julia_version = "1.10.2"
44
manifest_format = "2.0"
5-
project_hash = "99f2d569c75339b191aacd71e0f3e72c8ea9f4a5"
5+
project_hash = "4ebb16a8b4e4dee68434289ad64fac66757cf7e1"
66

77
[[deps.ArgTools]]
88
uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f"
@@ -26,6 +26,12 @@ uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33"
2626
[[deps.Base64]]
2727
uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
2828

29+
[[deps.BenchmarkTools]]
30+
deps = ["Compat", "JSON", "Logging", "Printf", "Profile", "Statistics", "UUIDs"]
31+
git-tree-sha1 = "e38fbc49a620f5d0b660d7f543db1009fe0f8336"
32+
uuid = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf"
33+
version = "1.6.0"
34+
2935
[[deps.BitIntegers]]
3036
deps = ["Random"]
3137
git-tree-sha1 = "f98cfeaba814d9746617822032d50a31c9926604"
@@ -46,16 +52,18 @@ version = "0.8.6"
4652

4753
[[deps.Compat]]
4854
deps = ["TOML", "UUIDs"]
49-
git-tree-sha1 = "0037835448781bb46feb39866934e243886d756a"
55+
git-tree-sha1 = "9d8a54ce4b17aa5bdce0ea5c34bc5e7c340d16ad"
5056
uuid = "34da2185-b29b-5c13-b0c7-acf172513d20"
51-
version = "4.18.0"
57+
version = "4.18.1"
58+
weakdeps = ["Dates", "LinearAlgebra"]
5259

5360
[deps.Compat.extensions]
5461
CompatLinearAlgebraExt = "LinearAlgebra"
5562

56-
[deps.Compat.weakdeps]
57-
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"
58-
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
63+
[[deps.CompilerSupportLibraries_jll]]
64+
deps = ["Artifacts", "Libdl"]
65+
uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae"
66+
version = "1.1.0+0"
5967

6068
[[deps.ConcurrentUtilities]]
6169
deps = ["Serialization", "Sockets"]
@@ -100,18 +108,15 @@ deps = ["Random"]
100108
uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820"
101109

102110
[[deps.InlineStrings]]
103-
git-tree-sha1 = "8594fac023c5ce1ef78260f24d1ad18b4327b420"
111+
git-tree-sha1 = "8f3d257792a522b4601c24a577954b0a8cd7334d"
104112
uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48"
105-
version = "1.4.4"
113+
version = "1.4.5"
114+
weakdeps = ["ArrowTypes", "Parsers"]
106115

107116
[deps.InlineStrings.extensions]
108117
ArrowTypesExt = "ArrowTypes"
109118
ParsersExt = "Parsers"
110119

111-
[deps.InlineStrings.weakdeps]
112-
ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd"
113-
Parsers = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0"
114-
115120
[[deps.InteractiveUtils]]
116121
deps = ["Markdown"]
117122
uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
@@ -127,6 +132,12 @@ git-tree-sha1 = "0533e564aae234aff59ab625543145446d8b6ec2"
127132
uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210"
128133
version = "1.7.1"
129134

135+
[[deps.JSON]]
136+
deps = ["Dates", "Mmap", "Parsers", "Unicode"]
137+
git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a"
138+
uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
139+
version = "0.21.4"
140+
130141
[[deps.LibCURL]]
131142
deps = ["LibCURL_jll", "MozillaCACerts_jll"]
132143
uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21"
@@ -145,6 +156,10 @@ version = "1.11.0+1"
145156
[[deps.Libdl]]
146157
uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
147158

159+
[[deps.LinearAlgebra]]
160+
deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"]
161+
uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
162+
148163
[[deps.Logging]]
149164
uuid = "56ddb016-857b-54e1-b83d-db4d58db5568"
150165

@@ -180,17 +195,40 @@ version = "2023.1.10"
180195
uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908"
181196
version = "1.2.0"
182197

198+
[[deps.OpenBLAS_jll]]
199+
deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"]
200+
uuid = "4536629a-c528-5b80-bd46-f80d51c5b363"
201+
version = "0.3.23+4"
202+
203+
[[deps.OpenSSL_jll]]
204+
deps = ["Artifacts", "JLLWrappers", "Libdl"]
205+
git-tree-sha1 = "f19301ae653233bc88b1810ae908194f07f8db9d"
206+
uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95"
207+
version = "3.5.4+0"
208+
183209
[[deps.OrderedCollections]]
184210
git-tree-sha1 = "05868e21324cede2207c6f0f466b4bfef6d5e7ee"
185211
uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d"
186212
version = "1.8.1"
187213

214+
[[deps.Parsers]]
215+
deps = ["Dates", "PrecompileTools", "UUIDs"]
216+
git-tree-sha1 = "7d2f8f21da5db6a806faf7b9b292296da42b2810"
217+
uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0"
218+
version = "2.8.3"
219+
188220
[[deps.PooledArrays]]
189221
deps = ["DataAPI", "Future"]
190222
git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3"
191223
uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720"
192224
version = "1.4.3"
193225

226+
[[deps.PrecompileTools]]
227+
deps = ["Preferences"]
228+
git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f"
229+
uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a"
230+
version = "1.2.1"
231+
194232
[[deps.Preferences]]
195233
deps = ["TOML"]
196234
git-tree-sha1 = "0f27480397253da18fe2c12a4ba4eb9eb208bf3d"
@@ -201,6 +239,10 @@ version = "1.5.0"
201239
deps = ["Unicode"]
202240
uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7"
203241

242+
[[deps.Profile]]
243+
deps = ["Printf"]
244+
uuid = "9abbd945-dff8-562f-b5e8-e1ebf5ef1b79"
245+
204246
[[deps.Random]]
205247
deps = ["SHA"]
206248
uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
@@ -227,10 +269,25 @@ uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b"
227269
[[deps.Sockets]]
228270
uuid = "6462fe0b-24de-5631-8697-dd941f90decc"
229271

272+
[[deps.SparseArrays]]
273+
deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"]
274+
uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
275+
version = "1.10.0"
276+
277+
[[deps.Statistics]]
278+
deps = ["LinearAlgebra", "SparseArrays"]
279+
uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
280+
version = "1.10.0"
281+
230282
[[deps.StringViews]]
231-
git-tree-sha1 = "ec4bf39f7d25db401bcab2f11d2929798c0578e5"
283+
git-tree-sha1 = "d3c7a06c80622b8404b1105886c732abcb25cc2b"
232284
uuid = "354b36f9-a18e-4713-926e-db85100087ba"
233-
version = "1.3.4"
285+
version = "1.3.5"
286+
287+
[[deps.SuiteSparse_jll]]
288+
deps = ["Artifacts", "Libdl", "libblastrampoline_jll"]
289+
uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c"
290+
version = "7.2.1+1"
234291

235292
[[deps.TOML]]
236293
deps = ["Dates"]
@@ -261,9 +318,9 @@ uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
261318

262319
[[deps.TimeZones]]
263320
deps = ["Artifacts", "Dates", "Downloads", "InlineStrings", "Mocking", "Printf", "Scratch", "TZJData", "Unicode", "p7zip_jll"]
264-
git-tree-sha1 = "1f9a3f379a2ce2a213a0f606895567a08a1a2d08"
321+
git-tree-sha1 = "06f4f1f3e8ff09e42e59b043a747332e88e01aba"
265322
uuid = "f269a46b-ccf7-5d73-abea-4c690281aa53"
266-
version = "1.22.0"
323+
version = "1.22.1"
267324

268325
[deps.TimeZones.extensions]
269326
TimeZonesRecipesBaseExt = "RecipesBase"
@@ -295,10 +352,15 @@ uuid = "3161d3a3-bdf6-5164-811a-617609db77b4"
295352
version = "1.5.7+1"
296353

297354
[[deps.iceberg_rust_ffi_jll]]
298-
deps = ["Artifacts", "JLLWrappers", "Libdl"]
299-
git-tree-sha1 = "f92cda6a47dc404e19e1df5e2f01915baeb0591a"
355+
deps = ["Artifacts", "JLLWrappers", "Libdl", "OpenSSL_jll"]
356+
git-tree-sha1 = "c0054a4811aa38d441839c919469d1262bbbd417"
300357
uuid = "6bd5c94f-693c-53e3-983d-a09fad412f22"
301-
version = "0.1.0+0"
358+
version = "0.2.0+0"
359+
360+
[[deps.libblastrampoline_jll]]
361+
deps = ["Artifacts", "Libdl"]
362+
uuid = "8e850b90-86db-534c-a0d3-1478176c7d93"
363+
version = "5.8.0+1"
302364

303365
[[deps.nghttp2_jll]]
304366
deps = ["Artifacts", "Libdl"]

Project.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
name = "RustyIceberg"
22
uuid = "390bdf5b-b624-43dc-a846-0ef7a3405804"
33
authors = ["Vukasin Stefanovic <vukasin.stefanovic92@gmail.com>"]
4-
version = "0.1.0"
4+
version = "0.2.0"
55

66
[deps]
77
Arrow = "69666777-d1a9-59fb-9406-91d4454c9d45"
8+
BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf"
89
Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
910
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
1011
iceberg_rust_ffi_jll = "6bd5c94f-693c-53e3-983d-a09fad412f22"

assets/.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
**/.minio*
2+
rest/*.so
3+
rest/*.so.lck
4+
rest/hsperfdata*

assets/rest/iceberg_catalog.db

20 KB
Binary file not shown.
2.5 MB
Binary file not shown.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"format-version":2,"table-uuid":"51667c9a-d3d1-4389-8461-d18626ab0e60","location":"s3://warehouse/tpch.sf01/customer","last-sequence-number":0,"last-updated-ms":1757415286085,"last-column-id":8,"current-schema-id":0,"schemas":[{"type":"struct","schema-id":0,"identifier-field-ids":[1],"fields":[{"id":1,"name":"c_custkey","required":true,"type":"long"},{"id":2,"name":"c_name","required":false,"type":"string"},{"id":3,"name":"c_address","required":false,"type":"string"},{"id":4,"name":"c_nationkey","required":false,"type":"int"},{"id":5,"name":"c_phone","required":false,"type":"string"},{"id":6,"name":"c_acctbal","required":false,"type":"decimal(15, 2)"},{"id":7,"name":"c_mktsegment","required":false,"type":"string"},{"id":8,"name":"c_comment","required":false,"type":"string"}]}],"default-spec-id":0,"partition-specs":[{"spec-id":0,"fields":[]}],"last-partition-id":999,"default-sort-order-id":0,"sort-orders":[{"order-id":0,"fields":[]}],"properties":{"write.format.default":"parquet","write.metadata.compression-codec":"none","write.parquet.compression-codec":"zstd"},"current-snapshot-id":-1,"refs":{},"snapshots":[],"statistics":[],"partition-statistics":[],"snapshot-log":[],"metadata-log":[]}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"format-version":2,"table-uuid":"51667c9a-d3d1-4389-8461-d18626ab0e60","location":"s3://warehouse/tpch.sf01/customer","last-sequence-number":1,"last-updated-ms":1757415286199,"last-column-id":8,"current-schema-id":0,"schemas":[{"type":"struct","schema-id":0,"identifier-field-ids":[1],"fields":[{"id":1,"name":"c_custkey","required":true,"type":"long"},{"id":2,"name":"c_name","required":false,"type":"string"},{"id":3,"name":"c_address","required":false,"type":"string"},{"id":4,"name":"c_nationkey","required":false,"type":"int"},{"id":5,"name":"c_phone","required":false,"type":"string"},{"id":6,"name":"c_acctbal","required":false,"type":"decimal(15, 2)"},{"id":7,"name":"c_mktsegment","required":false,"type":"string"},{"id":8,"name":"c_comment","required":false,"type":"string"}]}],"default-spec-id":0,"partition-specs":[{"spec-id":0,"fields":[]}],"last-partition-id":999,"default-sort-order-id":0,"sort-orders":[{"order-id":0,"fields":[]}],"properties":{"write.format.default":"parquet","write.metadata.compression-codec":"none","write.parquet.compression-codec":"zstd"},"current-snapshot-id":3441867730092225551,"refs":{"main":{"snapshot-id":3441867730092225551,"type":"branch"}},"snapshots":[{"sequence-number":1,"snapshot-id":3441867730092225551,"timestamp-ms":1757415286199,"summary":{"operation":"append","total-files-size":"0","total-position-deletes":"0","total-data-files":"0","total-delete-files":"0","total-records":"0","total-equality-deletes":"0"},"manifest-list":"s3://warehouse/tpch.sf01/customer/metadata/snap-3441867730092225551-0-01992e1d-25b3-7111-9dfc-38f55f99f91b.avro","schema-id":0}],"statistics":[],"partition-statistics":[],"snapshot-log":[{"timestamp-ms":1757415286199,"snapshot-id":3441867730092225551}],"metadata-log":[{"timestamp-ms":1757415286085,"metadata-file":"s3://warehouse/tpch.sf01/customer/metadata/00000-462e1567-8801-45a5-978c-b3beb53e7a2e.metadata.json"}]}
Binary file not shown.

0 commit comments

Comments
 (0)