sui_indexer_alt_schema/
cp_bloom_blocks.rs1use diesel::define_sql_function;
5use diesel::prelude::*;
6use diesel::sql_types::Binary;
7use sui_field_count::FieldCount;
8
9use crate::blooms::blocked::BlockedBloomFilter;
10use crate::schema::cp_bloom_blocks;
11
12define_sql_function! {
13 fn function_bytea_or(a: Binary, b: Binary) -> Binary;
15}
16
17pub const CP_BLOCK_SIZE: u64 = 1000;
19
20pub const BLOOM_BLOCK_BYTES: usize = 2048;
22
23pub const BLOOM_BLOCK_BITS: usize = BLOOM_BLOCK_BYTES * 8;
25
26pub const NUM_BLOOM_BLOCKS: usize = 128;
28
29pub const TOTAL_BLOOM_BITS: usize = NUM_BLOOM_BLOCKS * BLOOM_BLOCK_BITS;
31
32pub const NUM_HASHES: u32 = 5;
34
35pub type CpBlockedBloomFilter = BlockedBloomFilter<BLOOM_BLOCK_BYTES, NUM_BLOOM_BLOCKS, NUM_HASHES>;
37
38#[derive(Insertable, Selectable, Queryable, Debug, Clone, FieldCount, QueryableByName)]
40#[diesel(table_name = cp_bloom_blocks)]
41pub struct StoredCpBloomBlock {
42 pub cp_block_index: i64,
44 pub bloom_block_index: i16,
46 pub bloom_filter: Vec<u8>,
48}
49
50pub fn cp_block_index(cp_num: u64) -> i64 {
53 (cp_num / CP_BLOCK_SIZE) as i64
54}