Skip to content

Commit 685c9fe

Browse files
authored
ci: Test DuckDB (#12)
DuckDB may not return results sorted by `id`. So we need to sort returned results manually for stable result.
1 parent 0920aa6 commit 685c9fe

File tree

2 files changed

+50
-14
lines changed

2 files changed

+50
-14
lines changed

.github/workflows/test.yaml

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,25 +58,51 @@ jobs:
5858
- name: Install dependencies
5959
run: |
6060
MAKEFLAGS="-j$(nproc)" bundle install --jobs=$(nproc)
61-
- name: Prepare test environment
61+
- name: "Prepare test environment: SQLite3"
6262
run: |
6363
sudo apt install -y -V \
64-
libadbc-driver-postgresql-dev \
65-
libadbc-driver-sqlite-dev \
66-
postgresql
67-
sudo systemctl restart postgresql
68-
sudo -u postgres -H psql -c "CREATE ROLE ${USER} SUPERUSER LOGIN;"
64+
libadbc-driver-sqlite-dev
65+
latest_version=
6966
- name: "Test: SQLite3"
7067
# We can remove this once ADBC 20 is released.
7168
continue-on-error: true
7269
run: |
7370
bundle exec rake
71+
- name: "Prepare test environment: PostgreSQL"
72+
run: |
73+
sudo apt install -y -V \
74+
libadbc-driver-postgresql-dev \
75+
postgresql
76+
sudo systemctl restart postgresql
77+
sudo -u postgres -H psql -c "CREATE ROLE ${USER} SUPERUSER LOGIN;"
7478
- name: "Test: PostgreSQL"
7579
env:
7680
ACTIVERECORD_ADBC_ADAPTER_BACKEND: postgresql
7781
PGHOST: /var/run/postgresql
7882
run: |
7983
bundle exec rake
84+
- name: "Prepare test environment: DuckDB"
85+
env:
86+
GH_TOKEN: ${{ github.token }}
87+
run: |
88+
latest_tag=$(gh release list \
89+
--exclude-drafts \
90+
--exclude-pre-releases \
91+
--jq '.[].tagName' \
92+
--json tagName \
93+
--limit 1 \
94+
--repo duckdb/duckdb)
95+
wget \
96+
--output-document libduckdb.zip \
97+
--no-verbose \
98+
https://github.com/duckdb/duckdb/releases/download/${latest_tag}/libduckdb-linux-amd64.zip
99+
unzip libduckdb.zip
100+
sudo mv libduckdb.so /usr/lib/
101+
- name: "Test: DuckDB"
102+
env:
103+
ACTIVERECORD_ADBC_ADAPTER_BACKEND: duckdb
104+
run: |
105+
bundle exec rake
80106
- name: Install benchmark dependencies
81107
run: |
82108
# We can use this with ubuntu-26.04.

test/test_model.rb

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def test_all
2020
User.new(id: 2),
2121
User.new(id: 3),
2222
],
23-
User.select(:id).all)
23+
User.select(:id).all.order(:id))
2424
end
2525

2626
def test_count
@@ -36,47 +36,57 @@ def test_record_batch
3636
record_batch = Arrow::RecordBatch.new(id: id_array)
3737
User.ingest(record_batch)
3838
assert_equal((1..6).collect {|id| User.new(id: id)},
39-
User.select(:id).all)
39+
User.select(:id).all.order(:id))
4040
end
4141

4242
def test_table
4343
table = Arrow::Table.new(id: id_array)
4444
User.ingest(table)
4545
assert_equal((1..6).collect {|id| User.new(id: id)},
46-
User.select(:id).all)
46+
User.select(:id).all.order(:id))
4747
end
4848

4949
def test_record_batch_reader
5050
record_batch = Arrow::RecordBatch.new(id: id_array)
5151
User.ingest(Arrow::RecordBatchReader.new([record_batch]))
5252
assert_equal((1..6).collect {|id| User.new(id: id)},
53-
User.select(:id).all)
53+
User.select(:id).all.order(:id))
5454
end
5555
end
5656

5757
sub_test_case("#to_arrow") do
58+
def sort_table(table)
59+
table.take(table.sort_indices(:id))
60+
end
61+
5862
def test_model
5963
assert_equal(Arrow::Table.new(id: Arrow::Int64Array.new([1, 2, 3])),
60-
User.to_arrow)
64+
sort_table(User.to_arrow))
6165
end
6266

6367
def test_relation
6468
assert_equal(Arrow::Table.new(id: Arrow::Int64Array.new([1, 2, 3])),
65-
User.all.to_arrow)
69+
User.all.order(:id).to_arrow)
6670
end
6771
end
6872

6973
sub_test_case("#each_record_batch") do
74+
def sort_record_batches(record_batches)
75+
record_batches.collect do |record_batch|
76+
record_batch.take(record_batch.sort_indices(:id))
77+
end
78+
end
79+
7080
def test_model
7181
record_batch = Arrow::RecordBatch.new(id: Arrow::Int64Array.new([1, 2, 3]))
7282
assert_equal([record_batch],
73-
User.each_record_batch.to_a)
83+
sort_record_batches(User.each_record_batch))
7484
end
7585

7686
def test_relation
7787
record_batch = Arrow::RecordBatch.new(id: Arrow::Int64Array.new([1, 2, 3]))
7888
assert_equal([record_batch],
79-
User.all.each_record_batch.to_a)
89+
User.all.order(:id).each_record_batch.to_a)
8090
end
8191
end
8292
end

0 commit comments

Comments
 (0)