This commit is contained in:
Austin 2023-10-10 08:23:13 -04:00 committed by GitHub
parent 7e64568518
commit e02a4d74cc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -36,64 +36,68 @@ token_names AS (
function_signature,
read_output,
utils.udf_hex_to_string(
SUBSTR(read_output,(64*2+3),LEN(read_output))) AS token_name
FROM
base_metadata
WHERE
function_signature = '0x06fdde03'
AND token_name IS NOT NULL
),
token_symbols AS (
SELECT
contract_address,
block_number,
function_signature,
read_output,
utils.udf_hex_to_string(
SUBSTR(read_output,(64*2+3),LEN(read_output))) AS token_symbol
FROM
base_metadata
WHERE
function_signature = '0x95d89b41'
AND token_symbol IS NOT NULL
),
token_decimals AS (
SELECT
contract_address,
utils.udf_hex_to_int(
read_output :: STRING
) AS token_decimals,
LENGTH(token_decimals) AS dec_length
FROM
base_metadata
WHERE
function_signature = '0x313ce567'
AND read_output IS NOT NULL
AND read_output <> '0x'
),
contracts AS (
SELECT
contract_address,
MAX(_inserted_timestamp) AS _inserted_timestamp
FROM
base_metadata
GROUP BY
1
)
SELECT
c1.contract_address :: STRING AS contract_address,
token_name,
TRY_TO_NUMBER(token_decimals) AS token_decimals,
token_symbol,
_inserted_timestamp
FROM
contracts c1
LEFT JOIN token_names
ON c1.contract_address = token_names.contract_address
LEFT JOIN token_symbols
ON c1.contract_address = token_symbols.contract_address
LEFT JOIN token_decimals
ON c1.contract_address = token_decimals.contract_address
AND dec_length < 3 qualify(ROW_NUMBER() over(PARTITION BY c1.contract_address
ORDER BY
_inserted_timestamp DESC)) = 1
SUBSTR(read_output,(64 * 2 + 3), len(read_output))) AS token_name
FROM
base_metadata
WHERE
function_signature = '0x06fdde03'
AND token_name IS NOT NULL
),
token_symbols AS (
SELECT
contract_address,
block_number,
function_signature,
read_output,
utils.udf_hex_to_string(
SUBSTR(read_output,(64 * 2 + 3), len(read_output))) AS token_symbol
FROM
base_metadata
WHERE
function_signature = '0x95d89b41'
AND token_symbol IS NOT NULL
),
token_decimals AS (
SELECT
contract_address,
CASE
WHEN LENGTH(
read_output :: STRING
) <= 4300
AND read_output IS NOT NULL THEN utils.udf_hex_to_int(LEFT(read_output :: STRING, 66))
ELSE NULL
END AS token_decimals,
LENGTH(token_decimals) AS dec_length
FROM
base_metadata
WHERE
function_signature = '0x313ce567'
AND read_output IS NOT NULL
AND read_output <> '0x'
),
contracts AS (
SELECT
contract_address,
MAX(_inserted_timestamp) AS _inserted_timestamp
FROM
base_metadata
GROUP BY
1
)
SELECT
c1.contract_address :: STRING AS contract_address,
token_name,
TRY_TO_NUMBER(token_decimals) AS token_decimals,
token_symbol,
_inserted_timestamp
FROM
contracts c1
LEFT JOIN token_names
ON c1.contract_address = token_names.contract_address
LEFT JOIN token_symbols
ON c1.contract_address = token_symbols.contract_address
LEFT JOIN token_decimals
ON c1.contract_address = token_decimals.contract_address
AND dec_length < 3 qualify(ROW_NUMBER() over(PARTITION BY c1.contract_address
ORDER BY
_inserted_timestamp DESC)) = 1