Skip to content

Commit b9828af

Browse files
committed
fix projections, use _part_offset projections
1 parent 136a346 commit b9828af

8 files changed

+90
-64
lines changed

internal/tools/clickhouse/0000_clickhouse_create_blocks_table.sql

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,22 @@ CREATE TABLE IF NOT EXISTS blocks (
2727

2828
INDEX idx_block_timestamp block_timestamp TYPE minmax GRANULARITY 1,
2929
INDEX idx_hash hash TYPE bloom_filter GRANULARITY 2,
30+
31+
PROJECTION chain_state_projection
32+
(
33+
SELECT
34+
chain_id,
35+
count() AS count,
36+
uniqExact(block_number) AS unique_block_count,
37+
min(block_number) AS min_block_number,
38+
min(block_timestamp) AS min_block_timestamp,
39+
max(block_number) AS max_block_number,
40+
max(block_timestamp) AS max_block_timestamp
41+
GROUP BY
42+
chain_id
43+
)
44+
45+
3046
) ENGINE = ReplacingMergeTree(insert_timestamp, is_deleted)
3147
ORDER BY (chain_id, block_number)
3248
PARTITION BY (chain_id, toStartOfQuarter(block_timestamp))

internal/tools/clickhouse/0001_clickhouse_create_transactions_table.sql

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ CREATE TABLE IF NOT EXISTS transactions (
4545
PROJECTION from_address_projection
4646
(
4747
SELECT
48-
*
48+
_part_offset
4949
ORDER BY
5050
chain_id,
5151
from_address,
@@ -55,7 +55,7 @@ CREATE TABLE IF NOT EXISTS transactions (
5555
PROJECTION to_address_projection
5656
(
5757
SELECT
58-
*
58+
_part_offset
5959
ORDER BY
6060
chain_id,
6161
to_address,
@@ -67,11 +67,12 @@ CREATE TABLE IF NOT EXISTS transactions (
6767
SELECT
6868
chain_id,
6969
from_address,
70-
countState() AS tx_count_state,
71-
minState(block_number) AS min_block_number_state,
72-
minState(block_timestamp) AS min_block_timestamp_state,
73-
maxState(block_number) AS max_block_number_state,
74-
maxState(block_timestamp) AS max_block_timestamp_state
70+
count() AS tx_count,
71+
uniqExact(hash) AS unique_tx_count,
72+
min(block_number) AS min_block_number,
73+
min(block_timestamp) AS min_block_timestamp,
74+
max(block_number) AS max_block_number,
75+
max(block_timestamp) AS max_block_timestamp
7576
GROUP BY
7677
chain_id,
7778
from_address
@@ -81,16 +82,17 @@ CREATE TABLE IF NOT EXISTS transactions (
8182
SELECT
8283
chain_id,
8384
to_address,
84-
countState() AS tx_count_state,
85-
minState(block_number) AS min_block_number_state,
86-
minState(block_timestamp) AS min_block_timestamp_state,
87-
maxState(block_number) AS max_block_number_state,
88-
maxState(block_timestamp) AS max_block_timestamp_state
85+
count() AS tx_count,
86+
uniqExact(hash) AS unique_tx_count,
87+
min(block_number) AS min_block_number,
88+
min(block_timestamp) AS min_block_timestamp,
89+
max(block_number) AS max_block_number,
90+
max(block_timestamp) AS max_block_timestamp
8991
GROUP BY
9092
chain_id,
9193
to_address
9294
)
9395
) ENGINE = ReplacingMergeTree(insert_timestamp, is_deleted)
9496
ORDER BY (chain_id, block_number, hash)
9597
PARTITION BY (chain_id, toStartOfQuarter(block_timestamp))
96-
SETTINGS deduplicate_merge_projection_mode = 'rebuild', lightweight_mutation_projection_mode = 'rebuild';
98+
SETTINGS deduplicate_merge_projection_mode = 'rebuild', lightweight_mutation_projection_mode = 'rebuild', allow_part_offset_column_in_projections=1;

internal/tools/clickhouse/0002_clickhouse_create_logs_table.sql

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ CREATE TABLE IF NOT EXISTS logs (
2828
PROJECTION chain_address_topic0_projection
2929
(
3030
SELECT
31-
*
31+
_part_offset
3232
ORDER BY
3333
chain_id,
3434
address,
@@ -40,7 +40,7 @@ CREATE TABLE IF NOT EXISTS logs (
4040
PROJECTION chain_topic0_projection
4141
(
4242
SELECT
43-
*
43+
_part_offset
4444
ORDER BY
4545
chain_id,
4646
topic_0,
@@ -55,11 +55,11 @@ CREATE TABLE IF NOT EXISTS logs (
5555
chain_id,
5656
address,
5757
topic_0,
58-
countState() AS log_count_state,
59-
minState(block_number) AS min_block_number_state,
60-
minState(block_timestamp) AS min_block_timestamp_state,
61-
maxState(block_number) AS max_block_number_state,
62-
maxState(block_timestamp) AS max_block_timestamp_state
58+
count() AS log_count,
59+
min(block_number) AS min_block_number,
60+
min(block_timestamp) AS min_block_timestamp,
61+
max(block_number) AS max_block_number,
62+
max(block_timestamp) AS max_block_timestamp
6363
GROUP BY
6464
chain_id,
6565
address,
@@ -68,4 +68,4 @@ CREATE TABLE IF NOT EXISTS logs (
6868
) ENGINE = ReplacingMergeTree(insert_timestamp, is_deleted)
6969
ORDER BY (chain_id, block_number, transaction_hash, log_index)
7070
PARTITION BY (chain_id, toStartOfQuarter(block_timestamp))
71-
SETTINGS deduplicate_merge_projection_mode = 'rebuild', lightweight_mutation_projection_mode = 'rebuild';
71+
SETTINGS deduplicate_merge_projection_mode = 'rebuild', lightweight_mutation_projection_mode = 'rebuild', allow_part_offset_column_in_projections=1;

internal/tools/clickhouse/0003_clickhouse_create_traces_table.sql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ CREATE TABLE IF NOT EXISTS traces (
3232
PROJECTION from_address_projection
3333
(
3434
SELECT
35-
*
35+
_part_offset
3636
ORDER BY
3737
chain_id,
3838
from_address,
@@ -43,7 +43,7 @@ CREATE TABLE IF NOT EXISTS traces (
4343
PROJECTION to_address_projection
4444
(
4545
SELECT
46-
*
46+
_part_offset
4747
ORDER BY
4848
chain_id,
4949
to_address,
@@ -55,4 +55,4 @@ CREATE TABLE IF NOT EXISTS traces (
5555
) ENGINE = ReplacingMergeTree(insert_timestamp, is_deleted)
5656
ORDER BY (chain_id, transaction_hash, trace_address)
5757
PARTITION BY (chain_id, toStartOfQuarter(block_timestamp))
58-
SETTINGS deduplicate_merge_projection_mode = 'rebuild', lightweight_mutation_projection_mode = 'rebuild';
58+
SETTINGS deduplicate_merge_projection_mode = 'rebuild', lightweight_mutation_projection_mode = 'rebuild', allow_part_offset_column_in_projections=1;

internal/tools/clickhouse/0006_clickhouse_create_token_transfers.sql

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ CREATE TABLE IF NOT EXISTS token_transfers
2424

2525
PROJECTION from_address_projection (
2626
SELECT
27-
*
27+
_part_offset
2828
ORDER BY
2929
chain_id,
3030
from_address,
@@ -34,7 +34,7 @@ CREATE TABLE IF NOT EXISTS token_transfers
3434
),
3535
PROJECTION to_address_projection (
3636
SELECT
37-
*
37+
_part_offset
3838
ORDER BY
3939
chain_id,
4040
to_address,
@@ -44,7 +44,7 @@ CREATE TABLE IF NOT EXISTS token_transfers
4444
),
4545
PROJECTION token_id_projection (
4646
SELECT
47-
*
47+
_part_offset
4848
ORDER BY
4949
chain_id,
5050
token_address,
@@ -59,12 +59,12 @@ CREATE TABLE IF NOT EXISTS token_transfers
5959
from_address,
6060
token_address,
6161
token_type,
62-
countState() AS transfer_count_state,
63-
sumState(toInt256(amount)) AS total_amount_state,
64-
minState(block_number) AS min_block_number_state,
65-
minState(block_timestamp) AS min_block_timestamp_state,
66-
maxState(block_number) AS max_block_number_state,
67-
maxState(block_timestamp) AS max_block_timestamp_state
62+
count() AS transfer_count,
63+
sum(toInt256(amount)) AS total_amount,
64+
min(block_number) AS min_block_number,
65+
min(block_timestamp) AS min_block_timestamp,
66+
max(block_number) AS max_block_number,
67+
max(block_timestamp) AS max_block_timestamp
6868
GROUP BY
6969
chain_id,
7070
from_address,
@@ -77,12 +77,12 @@ CREATE TABLE IF NOT EXISTS token_transfers
7777
to_address,
7878
token_address,
7979
token_type,
80-
countState() AS transfer_count_state,
81-
sumState(toInt256(amount)) AS total_amount_state,
82-
minState(block_number) AS min_block_number_state,
83-
minState(block_timestamp) AS min_block_timestamp_state,
84-
maxState(block_number) AS max_block_number_state,
85-
maxState(block_timestamp) AS max_block_timestamp_state
80+
count() AS transfer_count,
81+
sum(toInt256(amount)) AS total_amount,
82+
min(block_number) AS min_block_number,
83+
min(block_timestamp) AS min_block_timestamp,
84+
max(block_number) AS max_block_number,
85+
max(block_timestamp) AS max_block_timestamp
8686
GROUP BY
8787
chain_id,
8888
to_address,
@@ -95,12 +95,12 @@ CREATE TABLE IF NOT EXISTS token_transfers
9595
token_address,
9696
token_id,
9797
token_type,
98-
countState() AS transfer_count_state,
99-
sumState(toInt256(amount)) AS total_volume_state,
100-
minState(block_number) AS min_block_number_state,
101-
minState(block_timestamp) AS min_block_timestamp_state,
102-
maxState(block_number) AS max_block_number_state,
103-
maxState(block_timestamp) AS max_block_timestamp_state
98+
count() AS transfer_count,
99+
sum(toInt256(amount)) AS total_volume,
100+
min(block_number) AS min_block_number,
101+
min(block_timestamp) AS min_block_timestamp,
102+
max(block_number) AS max_block_number,
103+
max(block_timestamp) AS max_block_timestamp
104104
GROUP BY
105105
chain_id,
106106
token_address,
@@ -111,4 +111,4 @@ CREATE TABLE IF NOT EXISTS token_transfers
111111
ENGINE = ReplacingMergeTree(insert_timestamp, is_deleted)
112112
PARTITION BY (chain_id, toStartOfQuarter(block_timestamp))
113113
ORDER BY (chain_id, token_address, block_number, transaction_index, log_index)
114-
SETTINGS index_granularity = 8192, lightweight_mutation_projection_mode = 'rebuild', deduplicate_merge_projection_mode = 'rebuild';
114+
SETTINGS index_granularity = 8192, lightweight_mutation_projection_mode = 'rebuild', deduplicate_merge_projection_mode = 'rebuild', allow_part_offset_column_in_projections=1;

internal/tools/clickhouse/0008_clickhouse_create_token_balances.sql

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,16 @@ CREATE TABLE IF NOT EXISTS token_balances
5252
maxState(block_number) AS max_block_number_state,
5353
maxState(block_timestamp) AS max_block_timestamp_state
5454
GROUP BY chain_id, token_address, token_id, owner_address
55+
),
56+
57+
PROJECTION token_projection
58+
(
59+
SELECT
60+
_part_offset
61+
ORDER BY chain_id, token_address, token_id, owner_address
5562
)
5663
)
5764
ENGINE = ReplacingMergeTree(insert_timestamp, is_deleted)
5865
PARTITION BY chain_id
5966
ORDER BY (chain_id, owner_address, token_address, token_id, block_number, transaction_index, log_index, direction)
60-
SETTINGS index_granularity = 8192, lightweight_mutation_projection_mode = 'rebuild', deduplicate_merge_projection_mode = 'rebuild';
67+
SETTINGS index_granularity = 8192, lightweight_mutation_projection_mode = 'rebuild', deduplicate_merge_projection_mode = 'rebuild', allow_part_offset_column_in_projections=1;

internal/tools/clickhouse/0010_clickhouse_create_address_transactions.sql

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,12 @@ CREATE TABLE IF NOT EXISTS address_transactions (
4747
SELECT
4848
chain_id,
4949
address,
50-
countState() AS tx_count_state,
51-
minState(block_number) AS min_block_number_state,
52-
minState(block_timestamp) AS min_block_timestamp_state,
53-
maxState(block_number) AS max_block_number_state,
54-
maxState(block_timestamp) AS max_block_timestamp_state
50+
count() AS tx_count,
51+
uniqExact(hash) AS unique_tx_count,
52+
min(block_number) AS min_block_number,
53+
min(block_timestamp) AS min_block_timestamp,
54+
max(block_number) AS max_block_number,
55+
max(block_timestamp) AS max_block_timestamp
5556
GROUP BY
5657
chain_id,
5758
address

internal/tools/clickhouse/0012_clickhouse_create_address_transfers.sql

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,12 @@ CREATE TABLE IF NOT EXISTS address_transfers (
3030
address_type,
3131
token_address,
3232
token_type,
33-
countState() AS transfer_count_state,
34-
sumState(toInt256(amount)) AS total_amount_state,
35-
minState(block_number) AS min_block_number_state,
36-
minState(block_timestamp) AS min_block_timestamp_state,
37-
maxState(block_number) AS max_block_number_state,
38-
maxState(block_timestamp) AS max_block_timestamp_state
33+
count() AS transfer_count,
34+
sum(toInt256(amount)) AS total_amount,
35+
min(block_number) AS min_block_number,
36+
min(block_timestamp) AS min_block_timestamp,
37+
max(block_number) AS max_block_number,
38+
max(block_timestamp) AS max_block_timestamp
3939
GROUP BY
4040
chain_id,
4141
address,
@@ -49,12 +49,12 @@ CREATE TABLE IF NOT EXISTS address_transfers (
4949
address,
5050
token_address,
5151
token_type,
52-
countState() AS transfer_count_state,
53-
sumState(toInt256(amount)) AS total_amount_state,
54-
minState(block_number) AS min_block_number_state,
55-
minState(block_timestamp) AS min_block_timestamp_state,
56-
maxState(block_number) AS max_block_number_state,
57-
maxState(block_timestamp) AS max_block_timestamp_state
52+
count() AS transfer_count,
53+
sum(toInt256(amount)) AS total_amount,
54+
min(block_number) AS min_block_number,
55+
min(block_timestamp) AS min_block_timestamp,
56+
max(block_number) AS max_block_number,
57+
max(block_timestamp) AS max_block_timestamp
5858
GROUP BY
5959
chain_id,
6060
address,

0 commit comments

Comments
 (0)