77 "github.com/ClickHouse/clickhouse-go/v2"
88 "github.com/ClickHouse/clickhouse-go/v2/lib/driver"
99 "log"
10+ "log/slog"
1011 "regexp"
1112 "strings"
1213 "time"
@@ -101,15 +102,15 @@ func (c *ClickhouseDbqConnector) ProfileDataset(dataset string) (*TableMetrics,
101102 ColumnsMetrics : make (map [string ]* ColumnMetrics ),
102103 }
103104
104- log . Printf ("Calculating metrics for table: %s " , dataset )
105+ slog . Debug ("Calculating metrics for table:" , dataset )
105106
106107 // Total Row Count
107- log . Printf ("Fetching total row count..." )
108+ slog . Debug ("Fetching total row count..." )
108109 err := c .cnn .QueryRow (ctx , fmt .Sprintf ("SELECT count() FROM %s" , dataset )).Scan (& metrics .TotalRows )
109110 if err != nil {
110111 return nil , fmt .Errorf ("failed to get total row count for %s: %w" , dataset , err )
111112 }
112- log . Printf ("Total rows: %d" , metrics .TotalRows )
113+ slog . Debug ("Total rows: %d" , metrics .TotalRows )
113114
114115 // Get Column Information (Name and Type)
115116 columnsToProcess , err := fetchColumns (c .cnn , ctx , databaseName , tableName )
@@ -118,7 +119,7 @@ func (c *ClickhouseDbqConnector) ProfileDataset(dataset string) (*TableMetrics,
118119 }
119120
120121 if len (columnsToProcess ) == 0 {
121- log . Printf ("Warning: No columns found for table %s. Returning basic info." , dataset )
122+ slog . Warn ("Warning: No columns found for table %s. Returning basic info." , dataset )
122123 metrics .ProfilingDurationMs = time .Since (startTime ).Milliseconds ()
123124 return metrics , nil
124125 }
@@ -221,40 +222,39 @@ func (c *ClickhouseDbqConnector) ProfileDataset(dataset string) (*TableMetrics,
221222 return metrics , nil
222223}
223224
224- func (c * ClickhouseDbqConnector ) RunCheck (check * Check , dataset string , defaultWhere string ) (string , error ) {
225+ func (c * ClickhouseDbqConnector ) RunCheck (check * Check , dataset string , defaultWhere string ) (bool , string , error ) {
225226 if c .cnn == nil {
226- return "" , fmt .Errorf ("database connection is not initialized" )
227+ return false , "" , fmt .Errorf ("database connection is not initialized" )
227228 }
228229
229230 query , err := generateDataCheckQuery (check , dataset , defaultWhere )
230231 if err != nil {
231- return "" , fmt .Errorf ("failed to generate SQL for check (%s)/(%s): %s" , check .ID , dataset , err .Error ())
232+ return false , "" , fmt .Errorf ("failed to generate SQL for check (%s)/(%s): %s" , check .ID , dataset , err .Error ())
232233 }
233234
234- log .Printf ("Executing SQL for '%s': %s" , check .ID , query )
235+ // todo: debug
236+ // log.Printf("Executing SQL for '%s': %s", check.ID, query)
235237
236- startTime := time .Now ()
238+ // startTime := time.Now()
237239 rows , err := c .cnn .Query (context .Background (), query )
238240 if err != nil {
239- return "" , fmt .Errorf ("failed to query database: %w" , err )
241+ return false , "" , fmt .Errorf ("failed to query database: %w" , err )
240242 }
241243 defer rows .Close ()
242- elapsed := time .Since (startTime ).Milliseconds ()
244+ // _ := time.Since(startTime).Milliseconds()
243245
246+ var checkPassed bool
244247 for rows .Next () {
245- var checkPassed bool
246248 if err := rows .Scan (& checkPassed ); err != nil {
247- return "" , fmt .Errorf ("failed to scan row: %w" , err )
249+ return false , "" , fmt .Errorf ("failed to scan row: %w" , err )
248250 }
249- log .Printf ("Check passed: %t (in %d ms)" , checkPassed , elapsed )
250- log .Printf ("---" )
251251 }
252252
253253 if err = rows .Err (); err != nil {
254- return "" , fmt .Errorf ("error occurred during row iteration: %w" , err )
254+ return false , "" , fmt .Errorf ("error occurred during row iteration: %w" , err )
255255 }
256256
257- return "" , nil
257+ return checkPassed , "" , nil
258258}
259259
260260func fetchColumns (cnn driver.Conn , ctx context.Context , databaseName string , tableName string ) ([]ColumnInfo , error ) {
@@ -379,7 +379,7 @@ func isStringCHType(dataType string) bool {
379379
380380func startWithAnyOf (prefixes []string , s string ) bool {
381381 for _ , prefix := range prefixes {
382- if strings .HasPrefix (s , prefix ) {
382+ if strings .HasPrefix (s , strings . ToLower ( prefix ) ) {
383383 return true
384384 }
385385 }
0 commit comments