@@ -107,6 +107,14 @@ func connectDB(cfg *config.ClickhouseConfig) (clickhouse.Conn, error) {
107107 },
108108 MaxOpenConns : cfg .MaxOpenConns ,
109109 MaxIdleConns : cfg .MaxIdleConns ,
110+ Compression : func () * clickhouse.Compression {
111+ c := & clickhouse.Compression {}
112+ if cfg .EnableCompression {
113+ zLog .Debug ().Msg ("ClickHouse LZ4 compression is enabled" )
114+ c .Method = clickhouse .CompressionLZ4
115+ }
116+ return c
117+ }(),
110118 Settings : func () clickhouse.Settings {
111119 settings := clickhouse.Settings {
112120 "do_not_merge_across_partitions_select_final" : "1" ,
@@ -901,6 +909,19 @@ func (c *ClickHouseConnector) GetMaxBlockNumberInRange(chainId *big.Int, startBl
901909 return maxBlockNumber , nil
902910}
903911
912+ func (c * ClickHouseConnector ) GetBlockCount (chainId * big.Int , startBlock * big.Int , endBlock * big.Int ) (blockCount * big.Int , err error ) {
913+ tableName := c .getTableName (chainId , "blocks" )
914+ query := fmt .Sprintf ("SELECT COUNT(DISTINCT block_number) FROM %s.%s WHERE chain_id = ? AND block_number >= ? AND block_number <= ?" , c .cfg .Database , tableName )
915+ err = c .conn .QueryRow (context .Background (), query , chainId , startBlock , endBlock ).Scan (& blockCount )
916+ if err != nil {
917+ if err == sql .ErrNoRows {
918+ return big .NewInt (0 ), nil
919+ }
920+ return nil , err
921+ }
922+ return blockCount , nil
923+ }
924+
904925func (c * ClickHouseConnector ) getMaxBlockNumberConsistent (chainId * big.Int ) (maxBlockNumber * big.Int , err error ) {
905926 tableName := c .getTableName (chainId , "blocks" )
906927 query := fmt .Sprintf ("SELECT block_number FROM %s.%s WHERE chain_id = ? ORDER BY block_number DESC LIMIT 1 SETTINGS select_sequential_consistency = 1" , c .cfg .Database , tableName )
@@ -1976,7 +1997,6 @@ func (c *ClickHouseConnector) GetValidationBlockData(chainId *big.Int, startBloc
19761997 for i , block := range blocksResult .blocks {
19771998 blockNum := block .Number .String ()
19781999 blockData [i ] = common.BlockData {
1979- ChainId : chainId .Uint64 (),
19802000 Block : block ,
19812001 Logs : logsResult .logMap [blockNum ],
19822002 Transactions : txsResult .txMap [blockNum ],
@@ -2156,7 +2176,6 @@ func (c *ClickHouseConnector) GetFullBlockData(chainId *big.Int, blockNumbers []
21562176 for i , block := range blocksResult .blocks {
21572177 blockNum := block .Number .String ()
21582178 blockData [i ] = common.BlockData {
2159- ChainId : chainId .Uint64 (),
21602179 Block : block ,
21612180 Logs : logsResult .logMap [blockNum ],
21622181 Transactions : txsResult .txMap [blockNum ],
0 commit comments