Skip to content

Commit 2d74273

Browse files
committed
update TVM transfers
1 parent 43d6f5f commit 2d74273

File tree

1 file changed

+18
-70
lines changed

1 file changed

+18
-70
lines changed

src/sql/transfers/tvm.sql

Lines changed: 18 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -9,107 +9,55 @@ arrayFilter(x -> x != '', {contract:Array(String)}) AS contracts,
99
(length(from_addresses) > 0) AS has_from,
1010
(length(to_addresses) > 0) AS has_to,
1111
(length(contracts) > 0) AS has_contract,
12-
has_contract AND NOT has_from AND NOT has_to AS is_contract_only,
13-
has_from AND NOT has_to AND NOT has_contract AS is_from_only,
14-
has_to AND NOT has_from AND NOT has_contract AS is_to_only,
15-
has_contract AND has_to AND NOT has_from AS is_contract_to,
16-
has_contract AND has_from AND NOT has_to AS is_contract_from,
17-
has_contract AND has_from AND has_to AS is_contract_from_to,
18-
{start_time:UInt64} = 1420070400 AS no_start_time,
19-
{end_time:UInt64} = 2524608000 AS no_end_time,
20-
{start_block:UInt64} = 0 AS no_start_block,
21-
{end_block:UInt64} = 9999999999 AS no_end_block,
2212

2313
tx_hash_timestamps AS (
2414
SELECT (minute, timestamp)
2515
FROM trc20_transfer
2616
WHERE has_tx_hash AND tx_hash IN {transaction_id:Array(String)}
2717
GROUP BY minute, timestamp
2818
),
29-
/* single filters */
19+
/* minute filters */
3020
from_minutes AS (
3121
SELECT minute
3222
FROM trc20_transfer
33-
WHERE
34-
is_from_only
35-
AND (no_start_time OR minute >= toRelativeMinuteNum(toDateTime({start_time:UInt64})))
36-
AND `from` IN {from_address:Array(String)}
23+
WHERE has_from AND `from` IN {from_address:Array(String)}
3724
GROUP BY minute
3825
),
3926
to_minutes AS (
4027
SELECT minute
4128
FROM trc20_transfer
42-
WHERE
43-
is_to_only
44-
AND (no_start_time OR minute >= toRelativeMinuteNum(toDateTime({start_time:UInt64})))
45-
AND `to` IN {to_address:Array(String)}
46-
GROUP BY minute
47-
),
48-
contract_hours AS (
49-
SELECT toStartOfHour(toDateTime(minute * 60)) AS minute_hour
50-
FROM trc20_transfer
51-
WHERE
52-
is_contract_only
53-
AND (no_start_time OR minute >= toRelativeMinuteNum(toDateTime({start_time:UInt64})))
54-
AND log_address IN {contract:Array(String)}
55-
GROUP BY minute_hour
56-
),
57-
/* 2 filters */
58-
contract_from_minutes AS (
59-
SELECT minute
60-
FROM trc20_transfer
61-
WHERE
62-
is_contract_from
63-
AND log_address IN {contract:Array(String)}
64-
AND `from` IN {from_address:Array(String)}
29+
WHERE has_to AND `to` IN {to_address:Array(String)}
6530
GROUP BY minute
6631
),
67-
contract_to_minutes AS (
32+
contract_minutes AS (
6833
SELECT minute
6934
FROM trc20_transfer
70-
WHERE
71-
is_contract_to
72-
AND log_address IN {contract:Array(String)}
73-
AND `to` IN {to_address:Array(String)}
74-
GROUP BY minute
75-
),
76-
/* 3 filters */
77-
contract_from_to_minutes AS (
78-
SELECT minute
79-
FROM trc20_transfer
80-
WHERE
81-
is_contract_from_to
82-
AND log_address IN {contract:Array(String)}
83-
AND `from` IN {from_address:Array(String)}
84-
AND `to` IN {to_address:Array(String)}
35+
WHERE has_contract AND log_address IN {contract:Array(String)}
36+
AND ({start_time:UInt64} = 1420070400 OR timestamp >= toRelativeMinuteNum(toDateTime({start_time:UInt64})))
37+
AND ({end_time:UInt64} = 2524608000 OR timestamp <= toRelativeMinuteNum(toDateTime({end_time:UInt64})))
8538
GROUP BY minute
39+
ORDER BY minute DESC
40+
LIMIT 100000
8641
),
8742
transfers AS (
88-
SELECT *, toStartOfHour(toDateTime(minute * 60)) AS minute_hour
43+
SELECT *
8944
FROM trc20_transfer
9045
WHERE
9146
/* filter by timestamp and block_num early to reduce data scanned */
92-
(no_start_time OR timestamp >= toDateTime({start_time:UInt64}))
93-
AND (no_end_time OR timestamp <= toDateTime({end_time:UInt64}))
94-
AND (no_start_block OR block_num >= {start_block:UInt64})
95-
AND (no_end_block OR block_num <= {end_block:UInt64})
47+
({start_time:UInt64} = 1420070400 OR timestamp >= toDateTime({start_time:UInt64}))
48+
AND ({end_time:UInt64} = 2524608000 OR timestamp <= toDateTime({end_time:UInt64}))
49+
AND ({start_block:UInt64} = 0 OR block_num >= {start_block:UInt64})
50+
AND ({end_block:UInt64} = 9999999999 OR block_num <= {end_block:UInt64})
9651

9752
/* minute-based filters bound to single/double/triple mode */
9853

9954
/* transaction ID filter */
10055
AND ( NOT has_tx_hash OR (minute, timestamp) IN tx_hash_timestamps AND tx_hash IN {transaction_id:Array(String)} )
10156

102-
/* 3-filters: from + to + contract */
103-
AND ( NOT is_contract_from_to OR minute IN contract_from_to_minutes )
104-
105-
/* 2-filters: (from + contract) and (to + contract) */
106-
AND ( NOT is_contract_from OR minute IN contract_from_minutes )
107-
AND ( NOT is_contract_to OR minute IN contract_to_minutes )
108-
109-
/* 1-filter: from OR to OR contract alone */
110-
AND ( NOT is_from_only OR minute IN from_minutes )
111-
AND ( NOT is_to_only OR minute IN to_minutes )
112-
AND ( NOT is_contract_only OR minute_hour IN contract_hours )
57+
/* minute filters */
58+
AND ( NOT has_from OR minute IN from_minutes )
59+
AND ( NOT has_to OR minute IN to_minutes )
60+
AND ( NOT has_contract OR minute IN contract_minutes )
11361

11462
/* direct filters */
11563
AND ( NOT has_from OR `from` IN {from_address:Array(String)} )

0 commit comments

Comments
 (0)