Created
November 15, 2024 14:30
-
-
Save thepaul/aaa80416948f98e9d599146872bee21a to your computer and use it in GitHub Desktop.
query to calculate an xor over the sha1 digests of all fields in all rows of a spanner table
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
WITH as_bytes AS ( | |
SELECT | |
stream_id, | |
CAST(CAST(position AS STRING) AS BYTES) AS position, | |
CAST(format_timestamp('%E4Y-%m-%d %H:%M:%E6S', created_at, 'UTC') AS BYTES) AS created_at, | |
CAST(COALESCE(format_timestamp('%E4Y-%m-%d %H:%M:%E6S', repaired_at, 'UTC'), '(null)') AS BYTES) AS repaired_at, | |
CAST(COALESCE(format_timestamp('%E4Y-%m-%d %H:%M:%E6S', expires_at, 'UTC'), '(null)') AS BYTES) AS expires_at, | |
root_piece_id, | |
encrypted_key_nonce, | |
encrypted_key, | |
CAST(CAST(encrypted_size AS STRING) AS BYTES) AS encrypted_size, | |
COALESCE(encrypted_etag, b'(null)') AS encrypted_etag, | |
CAST(CAST(plain_offset AS STRING) AS BYTES) AS plain_offset, | |
CAST(CAST(plain_size AS STRING) AS BYTES) AS plain_size, | |
CAST(CAST(redundancy AS STRING) AS BYTES) AS redundancy, | |
COALESCE(inline_data, b'') AS inline_data, | |
COALESCE(remote_alias_pieces, b'(null)') AS remote_alias_pieces, | |
CAST(CAST(placement AS STRING) AS BYTES) AS placement, | |
FROM segments | |
), sha_bytes AS ( | |
SELECT | |
to_code_points(sha1(stream_id)) AS sha_stream_id, | |
to_code_points(sha1(position)) AS sha_position, | |
to_code_points(sha1(created_at)) AS sha_created_at, | |
to_code_points(sha1(repaired_at)) AS sha_repaired_at, | |
to_code_points(sha1(expires_at)) AS sha_expires_at, | |
to_code_points(sha1(root_piece_id)) AS sha_root_piece_id, | |
to_code_points(sha1(encrypted_key_nonce)) AS sha_encrypted_key_nonce, | |
to_code_points(sha1(encrypted_key)) AS sha_encrypted_key, | |
to_code_points(sha1(encrypted_size)) AS sha_encrypted_size, | |
to_code_points(sha1(encrypted_etag)) AS sha_encrypted_etag, | |
to_code_points(sha1(plain_offset)) AS sha_plain_offset, | |
to_code_points(sha1(plain_size)) AS sha_plain_size, | |
to_code_points(sha1(redundancy)) AS sha_redundancy, | |
to_code_points(sha1(inline_data)) AS sha_inline_data, | |
to_code_points(sha1(remote_alias_pieces)) AS sha_remote_alias_pieces, | |
to_code_points(sha1(placement)) AS sha_placement, | |
FROM as_bytes | |
), as_words AS ( | |
SELECT | |
(sha_stream_id[OFFSET(0)]<<56)|(sha_stream_id[OFFSET(1)]<<48)|(sha_stream_id[OFFSET(2)]<<40)|(sha_stream_id[OFFSET(3)]<<32)|(sha_stream_id[OFFSET(4)]<<24)|(sha_stream_id[OFFSET(5)]<<16)|(sha_stream_id[OFFSET(6)]<<8)|(sha_stream_id[OFFSET(7)]) AS sha_stream_id_word1, | |
(sha_stream_id[OFFSET(8)]<<56)|(sha_stream_id[OFFSET(9)]<<48)|(sha_stream_id[OFFSET(10)]<<40)|(sha_stream_id[OFFSET(11)]<<32)|(sha_stream_id[OFFSET(12)]<<24)|(sha_stream_id[OFFSET(13)]<<16)|(sha_stream_id[OFFSET(14)]<<8)|(sha_stream_id[OFFSET(15)]) AS sha_stream_id_word2, | |
(sha_stream_id[OFFSET(16)]<<56)|(sha_stream_id[OFFSET(17)]<<48)|(sha_stream_id[OFFSET(18)]<<40)|(sha_stream_id[OFFSET(19)]<<32) AS sha_stream_id_word3, | |
(sha_position[OFFSET(0)]<<56)|(sha_position[OFFSET(1)]<<48)|(sha_position[OFFSET(2)]<<40)|(sha_position[OFFSET(3)]<<32)|(sha_position[OFFSET(4)]<<24)|(sha_position[OFFSET(5)]<<16)|(sha_position[OFFSET(6)]<<8)|(sha_position[OFFSET(7)]) AS sha_position_word1, | |
(sha_position[OFFSET(8)]<<56)|(sha_position[OFFSET(9)]<<48)|(sha_position[OFFSET(10)]<<40)|(sha_position[OFFSET(11)]<<32)|(sha_position[OFFSET(12)]<<24)|(sha_position[OFFSET(13)]<<16)|(sha_position[OFFSET(14)]<<8)|(sha_position[OFFSET(15)]) AS sha_position_word2, | |
(sha_position[OFFSET(16)]<<56)|(sha_position[OFFSET(17)]<<48)|(sha_position[OFFSET(18)]<<40)|(sha_position[OFFSET(19)]<<32) AS sha_position_word3, | |
(sha_created_at[OFFSET(0)]<<56)|(sha_created_at[OFFSET(1)]<<48)|(sha_created_at[OFFSET(2)]<<40)|(sha_created_at[OFFSET(3)]<<32)|(sha_created_at[OFFSET(4)]<<24)|(sha_created_at[OFFSET(5)]<<16)|(sha_created_at[OFFSET(6)]<<8)|(sha_created_at[OFFSET(7)]) AS sha_created_at_word1, | |
(sha_created_at[OFFSET(8)]<<56)|(sha_created_at[OFFSET(9)]<<48)|(sha_created_at[OFFSET(10)]<<40)|(sha_created_at[OFFSET(11)]<<32)|(sha_created_at[OFFSET(12)]<<24)|(sha_created_at[OFFSET(13)]<<16)|(sha_created_at[OFFSET(14)]<<8)|(sha_created_at[OFFSET(15)]) AS sha_created_at_word2, | |
(sha_created_at[OFFSET(16)]<<56)|(sha_created_at[OFFSET(17)]<<48)|(sha_created_at[OFFSET(18)]<<40)|(sha_created_at[OFFSET(19)]<<32) AS sha_created_at_word3, | |
(sha_repaired_at[OFFSET(0)]<<56)|(sha_repaired_at[OFFSET(1)]<<48)|(sha_repaired_at[OFFSET(2)]<<40)|(sha_repaired_at[OFFSET(3)]<<32)|(sha_repaired_at[OFFSET(4)]<<24)|(sha_repaired_at[OFFSET(5)]<<16)|(sha_repaired_at[OFFSET(6)]<<8)|(sha_repaired_at[OFFSET(7)]) AS sha_repaired_at_word1, | |
(sha_repaired_at[OFFSET(8)]<<56)|(sha_repaired_at[OFFSET(9)]<<48)|(sha_repaired_at[OFFSET(10)]<<40)|(sha_repaired_at[OFFSET(11)]<<32)|(sha_repaired_at[OFFSET(12)]<<24)|(sha_repaired_at[OFFSET(13)]<<16)|(sha_repaired_at[OFFSET(14)]<<8)|(sha_repaired_at[OFFSET(15)]) AS sha_repaired_at_word2, | |
(sha_repaired_at[OFFSET(16)]<<56)|(sha_repaired_at[OFFSET(17)]<<48)|(sha_repaired_at[OFFSET(18)]<<40)|(sha_repaired_at[OFFSET(19)]<<32) AS sha_repaired_at_word3, | |
(sha_expires_at[OFFSET(0)]<<56)|(sha_expires_at[OFFSET(1)]<<48)|(sha_expires_at[OFFSET(2)]<<40)|(sha_expires_at[OFFSET(3)]<<32)|(sha_expires_at[OFFSET(4)]<<24)|(sha_expires_at[OFFSET(5)]<<16)|(sha_expires_at[OFFSET(6)]<<8)|(sha_expires_at[OFFSET(7)]) AS sha_expires_at_word1, | |
(sha_expires_at[OFFSET(8)]<<56)|(sha_expires_at[OFFSET(9)]<<48)|(sha_expires_at[OFFSET(10)]<<40)|(sha_expires_at[OFFSET(11)]<<32)|(sha_expires_at[OFFSET(12)]<<24)|(sha_expires_at[OFFSET(13)]<<16)|(sha_expires_at[OFFSET(14)]<<8)|(sha_expires_at[OFFSET(15)]) AS sha_expires_at_word2, | |
(sha_expires_at[OFFSET(16)]<<56)|(sha_expires_at[OFFSET(17)]<<48)|(sha_expires_at[OFFSET(18)]<<40)|(sha_expires_at[OFFSET(19)]<<32) AS sha_expires_at_word3, | |
(sha_root_piece_id[OFFSET(0)]<<56)|(sha_root_piece_id[OFFSET(1)]<<48)|(sha_root_piece_id[OFFSET(2)]<<40)|(sha_root_piece_id[OFFSET(3)]<<32)|(sha_root_piece_id[OFFSET(4)]<<24)|(sha_root_piece_id[OFFSET(5)]<<16)|(sha_root_piece_id[OFFSET(6)]<<8)|(sha_root_piece_id[OFFSET(7)]) AS sha_root_piece_id_word1, | |
(sha_root_piece_id[OFFSET(8)]<<56)|(sha_root_piece_id[OFFSET(9)]<<48)|(sha_root_piece_id[OFFSET(10)]<<40)|(sha_root_piece_id[OFFSET(11)]<<32)|(sha_root_piece_id[OFFSET(12)]<<24)|(sha_root_piece_id[OFFSET(13)]<<16)|(sha_root_piece_id[OFFSET(14)]<<8)|(sha_root_piece_id[OFFSET(15)]) AS sha_root_piece_id_word2, | |
(sha_root_piece_id[OFFSET(16)]<<56)|(sha_root_piece_id[OFFSET(17)]<<48)|(sha_root_piece_id[OFFSET(18)]<<40)|(sha_root_piece_id[OFFSET(19)]<<32) AS sha_root_piece_id_word3, | |
(sha_encrypted_key_nonce[OFFSET(0)]<<56)|(sha_encrypted_key_nonce[OFFSET(1)]<<48)|(sha_encrypted_key_nonce[OFFSET(2)]<<40)|(sha_encrypted_key_nonce[OFFSET(3)]<<32)|(sha_encrypted_key_nonce[OFFSET(4)]<<24)|(sha_encrypted_key_nonce[OFFSET(5)]<<16)|(sha_encrypted_key_nonce[OFFSET(6)]<<8)|(sha_encrypted_key_nonce[OFFSET(7)]) AS sha_encrypted_key_nonce_word1, | |
(sha_encrypted_key_nonce[OFFSET(8)]<<56)|(sha_encrypted_key_nonce[OFFSET(9)]<<48)|(sha_encrypted_key_nonce[OFFSET(10)]<<40)|(sha_encrypted_key_nonce[OFFSET(11)]<<32)|(sha_encrypted_key_nonce[OFFSET(12)]<<24)|(sha_encrypted_key_nonce[OFFSET(13)]<<16)|(sha_encrypted_key_nonce[OFFSET(14)]<<8)|(sha_encrypted_key_nonce[OFFSET(15)]) AS sha_encrypted_key_nonce_word2, | |
(sha_encrypted_key_nonce[OFFSET(16)]<<56)|(sha_encrypted_key_nonce[OFFSET(17)]<<48)|(sha_encrypted_key_nonce[OFFSET(18)]<<40)|(sha_encrypted_key_nonce[OFFSET(19)]<<32) AS sha_encrypted_key_nonce_word3, | |
(sha_encrypted_key[OFFSET(0)]<<56)|(sha_encrypted_key[OFFSET(1)]<<48)|(sha_encrypted_key[OFFSET(2)]<<40)|(sha_encrypted_key[OFFSET(3)]<<32)|(sha_encrypted_key[OFFSET(4)]<<24)|(sha_encrypted_key[OFFSET(5)]<<16)|(sha_encrypted_key[OFFSET(6)]<<8)|(sha_encrypted_key[OFFSET(7)]) AS sha_encrypted_key_word1, | |
(sha_encrypted_key[OFFSET(8)]<<56)|(sha_encrypted_key[OFFSET(9)]<<48)|(sha_encrypted_key[OFFSET(10)]<<40)|(sha_encrypted_key[OFFSET(11)]<<32)|(sha_encrypted_key[OFFSET(12)]<<24)|(sha_encrypted_key[OFFSET(13)]<<16)|(sha_encrypted_key[OFFSET(14)]<<8)|(sha_encrypted_key[OFFSET(15)]) AS sha_encrypted_key_word2, | |
(sha_encrypted_key[OFFSET(16)]<<56)|(sha_encrypted_key[OFFSET(17)]<<48)|(sha_encrypted_key[OFFSET(18)]<<40)|(sha_encrypted_key[OFFSET(19)]<<32) AS sha_encrypted_key_word3, | |
(sha_encrypted_size[OFFSET(0)]<<56)|(sha_encrypted_size[OFFSET(1)]<<48)|(sha_encrypted_size[OFFSET(2)]<<40)|(sha_encrypted_size[OFFSET(3)]<<32)|(sha_encrypted_size[OFFSET(4)]<<24)|(sha_encrypted_size[OFFSET(5)]<<16)|(sha_encrypted_size[OFFSET(6)]<<8)|(sha_encrypted_size[OFFSET(7)]) AS sha_encrypted_size_word1, | |
(sha_encrypted_size[OFFSET(8)]<<56)|(sha_encrypted_size[OFFSET(9)]<<48)|(sha_encrypted_size[OFFSET(10)]<<40)|(sha_encrypted_size[OFFSET(11)]<<32)|(sha_encrypted_size[OFFSET(12)]<<24)|(sha_encrypted_size[OFFSET(13)]<<16)|(sha_encrypted_size[OFFSET(14)]<<8)|(sha_encrypted_size[OFFSET(15)]) AS sha_encrypted_size_word2, | |
(sha_encrypted_size[OFFSET(16)]<<56)|(sha_encrypted_size[OFFSET(17)]<<48)|(sha_encrypted_size[OFFSET(18)]<<40)|(sha_encrypted_size[OFFSET(19)]<<32) AS sha_encrypted_size_word3, | |
(sha_encrypted_etag[OFFSET(0)]<<56)|(sha_encrypted_etag[OFFSET(1)]<<48)|(sha_encrypted_etag[OFFSET(2)]<<40)|(sha_encrypted_etag[OFFSET(3)]<<32)|(sha_encrypted_etag[OFFSET(4)]<<24)|(sha_encrypted_etag[OFFSET(5)]<<16)|(sha_encrypted_etag[OFFSET(6)]<<8)|(sha_encrypted_etag[OFFSET(7)]) AS sha_encrypted_etag_word1, | |
(sha_encrypted_etag[OFFSET(8)]<<56)|(sha_encrypted_etag[OFFSET(9)]<<48)|(sha_encrypted_etag[OFFSET(10)]<<40)|(sha_encrypted_etag[OFFSET(11)]<<32)|(sha_encrypted_etag[OFFSET(12)]<<24)|(sha_encrypted_etag[OFFSET(13)]<<16)|(sha_encrypted_etag[OFFSET(14)]<<8)|(sha_encrypted_etag[OFFSET(15)]) AS sha_encrypted_etag_word2, | |
(sha_encrypted_etag[OFFSET(16)]<<56)|(sha_encrypted_etag[OFFSET(17)]<<48)|(sha_encrypted_etag[OFFSET(18)]<<40)|(sha_encrypted_etag[OFFSET(19)]<<32) AS sha_encrypted_etag_word3, | |
(sha_plain_offset[OFFSET(0)]<<56)|(sha_plain_offset[OFFSET(1)]<<48)|(sha_plain_offset[OFFSET(2)]<<40)|(sha_plain_offset[OFFSET(3)]<<32)|(sha_plain_offset[OFFSET(4)]<<24)|(sha_plain_offset[OFFSET(5)]<<16)|(sha_plain_offset[OFFSET(6)]<<8)|(sha_plain_offset[OFFSET(7)]) AS sha_plain_offset_word1, | |
(sha_plain_offset[OFFSET(8)]<<56)|(sha_plain_offset[OFFSET(9)]<<48)|(sha_plain_offset[OFFSET(10)]<<40)|(sha_plain_offset[OFFSET(11)]<<32)|(sha_plain_offset[OFFSET(12)]<<24)|(sha_plain_offset[OFFSET(13)]<<16)|(sha_plain_offset[OFFSET(14)]<<8)|(sha_plain_offset[OFFSET(15)]) AS sha_plain_offset_word2, | |
(sha_plain_offset[OFFSET(16)]<<56)|(sha_plain_offset[OFFSET(17)]<<48)|(sha_plain_offset[OFFSET(18)]<<40)|(sha_plain_offset[OFFSET(19)]<<32) AS sha_plain_offset_word3, | |
(sha_plain_size[OFFSET(0)]<<56)|(sha_plain_size[OFFSET(1)]<<48)|(sha_plain_size[OFFSET(2)]<<40)|(sha_plain_size[OFFSET(3)]<<32)|(sha_plain_size[OFFSET(4)]<<24)|(sha_plain_size[OFFSET(5)]<<16)|(sha_plain_size[OFFSET(6)]<<8)|(sha_plain_size[OFFSET(7)]) AS sha_plain_size_word1, | |
(sha_plain_size[OFFSET(8)]<<56)|(sha_plain_size[OFFSET(9)]<<48)|(sha_plain_size[OFFSET(10)]<<40)|(sha_plain_size[OFFSET(11)]<<32)|(sha_plain_size[OFFSET(12)]<<24)|(sha_plain_size[OFFSET(13)]<<16)|(sha_plain_size[OFFSET(14)]<<8)|(sha_plain_size[OFFSET(15)]) AS sha_plain_size_word2, | |
(sha_plain_size[OFFSET(16)]<<56)|(sha_plain_size[OFFSET(17)]<<48)|(sha_plain_size[OFFSET(18)]<<40)|(sha_plain_size[OFFSET(19)]<<32) AS sha_plain_size_word3, | |
(sha_redundancy[OFFSET(0)]<<56)|(sha_redundancy[OFFSET(1)]<<48)|(sha_redundancy[OFFSET(2)]<<40)|(sha_redundancy[OFFSET(3)]<<32)|(sha_redundancy[OFFSET(4)]<<24)|(sha_redundancy[OFFSET(5)]<<16)|(sha_redundancy[OFFSET(6)]<<8)|(sha_redundancy[OFFSET(7)]) AS sha_redundancy_word1, | |
(sha_redundancy[OFFSET(8)]<<56)|(sha_redundancy[OFFSET(9)]<<48)|(sha_redundancy[OFFSET(10)]<<40)|(sha_redundancy[OFFSET(11)]<<32)|(sha_redundancy[OFFSET(12)]<<24)|(sha_redundancy[OFFSET(13)]<<16)|(sha_redundancy[OFFSET(14)]<<8)|(sha_redundancy[OFFSET(15)]) AS sha_redundancy_word2, | |
(sha_redundancy[OFFSET(16)]<<56)|(sha_redundancy[OFFSET(17)]<<48)|(sha_redundancy[OFFSET(18)]<<40)|(sha_redundancy[OFFSET(19)]<<32) AS sha_redundancy_word3, | |
(sha_inline_data[OFFSET(0)]<<56)|(sha_inline_data[OFFSET(1)]<<48)|(sha_inline_data[OFFSET(2)]<<40)|(sha_inline_data[OFFSET(3)]<<32)|(sha_inline_data[OFFSET(4)]<<24)|(sha_inline_data[OFFSET(5)]<<16)|(sha_inline_data[OFFSET(6)]<<8)|(sha_inline_data[OFFSET(7)]) AS sha_inline_data_word1, | |
(sha_inline_data[OFFSET(8)]<<56)|(sha_inline_data[OFFSET(9)]<<48)|(sha_inline_data[OFFSET(10)]<<40)|(sha_inline_data[OFFSET(11)]<<32)|(sha_inline_data[OFFSET(12)]<<24)|(sha_inline_data[OFFSET(13)]<<16)|(sha_inline_data[OFFSET(14)]<<8)|(sha_inline_data[OFFSET(15)]) AS sha_inline_data_word2, | |
(sha_inline_data[OFFSET(16)]<<56)|(sha_inline_data[OFFSET(17)]<<48)|(sha_inline_data[OFFSET(18)]<<40)|(sha_inline_data[OFFSET(19)]<<32) AS sha_inline_data_word3, | |
(sha_remote_alias_pieces[OFFSET(0)]<<56)|(sha_remote_alias_pieces[OFFSET(1)]<<48)|(sha_remote_alias_pieces[OFFSET(2)]<<40)|(sha_remote_alias_pieces[OFFSET(3)]<<32)|(sha_remote_alias_pieces[OFFSET(4)]<<24)|(sha_remote_alias_pieces[OFFSET(5)]<<16)|(sha_remote_alias_pieces[OFFSET(6)]<<8)|(sha_remote_alias_pieces[OFFSET(7)]) AS sha_remote_alias_pieces_word1, | |
(sha_remote_alias_pieces[OFFSET(8)]<<56)|(sha_remote_alias_pieces[OFFSET(9)]<<48)|(sha_remote_alias_pieces[OFFSET(10)]<<40)|(sha_remote_alias_pieces[OFFSET(11)]<<32)|(sha_remote_alias_pieces[OFFSET(12)]<<24)|(sha_remote_alias_pieces[OFFSET(13)]<<16)|(sha_remote_alias_pieces[OFFSET(14)]<<8)|(sha_remote_alias_pieces[OFFSET(15)]) AS sha_remote_alias_pieces_word2, | |
(sha_remote_alias_pieces[OFFSET(16)]<<56)|(sha_remote_alias_pieces[OFFSET(17)]<<48)|(sha_remote_alias_pieces[OFFSET(18)]<<40)|(sha_remote_alias_pieces[OFFSET(19)]<<32) AS sha_remote_alias_pieces_word3, | |
(sha_placement[OFFSET(0)]<<56)|(sha_placement[OFFSET(1)]<<48)|(sha_placement[OFFSET(2)]<<40)|(sha_placement[OFFSET(3)]<<32)|(sha_placement[OFFSET(4)]<<24)|(sha_placement[OFFSET(5)]<<16)|(sha_placement[OFFSET(6)]<<8)|(sha_placement[OFFSET(7)]) AS sha_placement_word1, | |
(sha_placement[OFFSET(8)]<<56)|(sha_placement[OFFSET(9)]<<48)|(sha_placement[OFFSET(10)]<<40)|(sha_placement[OFFSET(11)]<<32)|(sha_placement[OFFSET(12)]<<24)|(sha_placement[OFFSET(13)]<<16)|(sha_placement[OFFSET(14)]<<8)|(sha_placement[OFFSET(15)]) AS sha_placement_word2, | |
(sha_placement[OFFSET(16)]<<56)|(sha_placement[OFFSET(17)]<<48)|(sha_placement[OFFSET(18)]<<40)|(sha_placement[OFFSET(19)]<<32) AS sha_placement_word3, | |
FROM sha_bytes | |
) | |
SELECT | |
bit_xor(sha_stream_id_word1) AS xor_sha_stream_id_word1, | |
bit_xor(sha_stream_id_word2) AS xor_sha_stream_id_word2, | |
bit_xor(sha_stream_id_word3) AS xor_sha_stream_id_word3, | |
bit_xor(sha_position_word1) AS xor_sha_position_word1, | |
bit_xor(sha_position_word2) AS xor_sha_position_word2, | |
bit_xor(sha_position_word3) AS xor_sha_position_word3, | |
bit_xor(sha_created_at_word1) AS xor_sha_created_at_word1, | |
bit_xor(sha_created_at_word2) AS xor_sha_created_at_word2, | |
bit_xor(sha_created_at_word3) AS xor_sha_created_at_word3, | |
bit_xor(sha_repaired_at_word1) AS xor_sha_repaired_at_word1, | |
bit_xor(sha_repaired_at_word2) AS xor_sha_repaired_at_word2, | |
bit_xor(sha_repaired_at_word3) AS xor_sha_repaired_at_word3, | |
bit_xor(sha_expires_at_word1) AS xor_sha_expires_at_word1, | |
bit_xor(sha_expires_at_word2) AS xor_sha_expires_at_word2, | |
bit_xor(sha_expires_at_word3) AS xor_sha_expires_at_word3, | |
bit_xor(sha_root_piece_id_word1) AS xor_sha_root_piece_id_word1, | |
bit_xor(sha_root_piece_id_word2) AS xor_sha_root_piece_id_word2, | |
bit_xor(sha_root_piece_id_word3) AS xor_sha_root_piece_id_word3, | |
bit_xor(sha_encrypted_key_nonce_word1) AS xor_sha_encrypted_key_nonce_word1, | |
bit_xor(sha_encrypted_key_nonce_word2) AS xor_sha_encrypted_key_nonce_word2, | |
bit_xor(sha_encrypted_key_nonce_word3) AS xor_sha_encrypted_key_nonce_word3, | |
bit_xor(sha_encrypted_key_word1) AS xor_sha_encrypted_key_word1, | |
bit_xor(sha_encrypted_key_word2) AS xor_sha_encrypted_key_word2, | |
bit_xor(sha_encrypted_key_word3) AS xor_sha_encrypted_key_word3, | |
bit_xor(sha_encrypted_size_word1) AS xor_sha_encrypted_size_word1, | |
bit_xor(sha_encrypted_size_word2) AS xor_sha_encrypted_size_word2, | |
bit_xor(sha_encrypted_size_word3) AS xor_sha_encrypted_size_word3, | |
bit_xor(sha_encrypted_etag_word1) AS xor_sha_encrypted_etag_word1, | |
bit_xor(sha_encrypted_etag_word2) AS xor_sha_encrypted_etag_word2, | |
bit_xor(sha_encrypted_etag_word3) AS xor_sha_encrypted_etag_word3, | |
bit_xor(sha_plain_offset_word1) AS xor_sha_plain_offset_word1, | |
bit_xor(sha_plain_offset_word2) AS xor_sha_plain_offset_word2, | |
bit_xor(sha_plain_offset_word3) AS xor_sha_plain_offset_word3, | |
bit_xor(sha_plain_size_word1) AS xor_sha_plain_size_word1, | |
bit_xor(sha_plain_size_word2) AS xor_sha_plain_size_word2, | |
bit_xor(sha_plain_size_word3) AS xor_sha_plain_size_word3, | |
bit_xor(sha_redundancy_word1) AS xor_sha_redundancy_word1, | |
bit_xor(sha_redundancy_word2) AS xor_sha_redundancy_word2, | |
bit_xor(sha_redundancy_word3) AS xor_sha_redundancy_word3, | |
bit_xor(sha_inline_data_word1) AS xor_sha_inline_data_word1, | |
bit_xor(sha_inline_data_word2) AS xor_sha_inline_data_word2, | |
bit_xor(sha_inline_data_word3) AS xor_sha_inline_data_word3, | |
bit_xor(sha_remote_alias_pieces_word1) AS xor_sha_remote_alias_pieces_word1, | |
bit_xor(sha_remote_alias_pieces_word2) AS xor_sha_remote_alias_pieces_word2, | |
bit_xor(sha_remote_alias_pieces_word3) AS xor_sha_remote_alias_pieces_word3, | |
bit_xor(sha_placement_word1) AS xor_sha_placement_word1, | |
bit_xor(sha_placement_word2) AS xor_sha_placement_word2, | |
bit_xor(sha_placement_word3) AS xor_sha_placement_word3 | |
FROM as_words; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment