Skip to content

Commit 5896a10

Browse files
authored
Merge pull request #21 from gigapi/fix/conntection-string
:memory: connection string should be the same across all the gigapi
2 parents 5b8ad4f + 2c92ddd commit 5896a10

1 file changed

Lines changed: 16 additions & 16 deletions

File tree

querier/queryClient.go

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func NewQueryClient(dataDir string) *QueryClient {
4040
// Initialize sets up the DuckDB connection
4141
func (q *QueryClient) Initialize() error {
4242
var err error
43-
db, err = sql.Open("duckdb", "?access_mode=READ_WRITE")
43+
db, err = sql.Open("duckdb", "?access_mode=READ_WRITE&allow_unsigned_extensions=1")
4444
if err != nil {
4545
return fmt.Errorf("failed to initialize DuckDB: %v", err)
4646
}
@@ -117,7 +117,7 @@ func (q *QueryClient) ParseQuery(sql, dbName string) (*ParsedQuery, error) {
117117
// Extract time range
118118
timeRange := q.extractTimeRange(whereClause)
119119
if timeRange.Start != nil || timeRange.End != nil {
120-
log.Printf("Detected time range: %v to %v",
120+
log.Printf("Detected time range: %v to %v",
121121
time.Unix(0, *timeRange.Start).Format(time.RFC3339Nano),
122122
time.Unix(0, *timeRange.End).Format(time.RFC3339Nano))
123123
} else {
@@ -187,23 +187,23 @@ func (q *QueryClient) extractTimeRange(whereClause string) TimeRange {
187187
regexp.MustCompile(`time\s*(<=|<)\s*'([^']+)'`), // time <= '2023-01-01T00:00:00Z'
188188
regexp.MustCompile(`time\s*=\s*'([^']+)'`), // time = '2023-01-01T00:00:00Z'
189189
regexp.MustCompile(`time\s+BETWEEN\s+'([^']+)'\s+AND\s+'([^']+)'`), // time BETWEEN '...' AND '...'
190-
190+
191191
// Cast format
192-
regexp.MustCompile(`time\s*(>=|>)\s*cast\s*\(\s*'([^']+)'\s+as\s+timestamp\s*\)`), // time >= cast('2023-01-01T00:00:00' as timestamp)
193-
regexp.MustCompile(`time\s*(<=|<)\s*cast\s*\(\s*'([^']+)'\s+as\s+timestamp\s*\)`), // time <= cast('2023-01-01T00:00:00' as timestamp)
194-
regexp.MustCompile(`time\s*=\s*cast\s*\(\s*'([^']+)'\s+as\s+timestamp\s*\)`), // time = cast('2023-01-01T00:00:00' as timestamp)
192+
regexp.MustCompile(`time\s*(>=|>)\s*cast\s*\(\s*'([^']+)'\s+as\s+timestamp\s*\)`), // time >= cast('2023-01-01T00:00:00' as timestamp)
193+
regexp.MustCompile(`time\s*(<=|<)\s*cast\s*\(\s*'([^']+)'\s+as\s+timestamp\s*\)`), // time <= cast('2023-01-01T00:00:00' as timestamp)
194+
regexp.MustCompile(`time\s*=\s*cast\s*\(\s*'([^']+)'\s+as\s+timestamp\s*\)`), // time = cast('2023-01-01T00:00:00' as timestamp)
195195
regexp.MustCompile(`time\s+BETWEEN\s+cast\s*\(\s*'([^']+)'\s+as\s+timestamp\s*\)\s+AND\s+cast\s*\(\s*'([^']+)'\s+as\s+timestamp\s*\)`), // time BETWEEN cast('...') AND cast('...')
196-
196+
197197
// Epoch_ns format
198-
regexp.MustCompile(`time\s*(>=|>)\s*epoch_ns\s*\(\s*'([^']+)'(?:::TIMESTAMP)?\s*\)`), // time >= epoch_ns('2023-01-01T00:00:00'::TIMESTAMP)
199-
regexp.MustCompile(`time\s*(<=|<)\s*epoch_ns\s*\(\s*'([^']+)'(?:::TIMESTAMP)?\s*\)`), // time <= epoch_ns('2023-01-01T00:00:00'::TIMESTAMP)
200-
regexp.MustCompile(`time\s*=\s*epoch_ns\s*\(\s*'([^']+)'(?:::TIMESTAMP)?\s*\)`), // time = epoch_ns('2023-01-01T00:00:00'::TIMESTAMP)
198+
regexp.MustCompile(`time\s*(>=|>)\s*epoch_ns\s*\(\s*'([^']+)'(?:::TIMESTAMP)?\s*\)`), // time >= epoch_ns('2023-01-01T00:00:00'::TIMESTAMP)
199+
regexp.MustCompile(`time\s*(<=|<)\s*epoch_ns\s*\(\s*'([^']+)'(?:::TIMESTAMP)?\s*\)`), // time <= epoch_ns('2023-01-01T00:00:00'::TIMESTAMP)
200+
regexp.MustCompile(`time\s*=\s*epoch_ns\s*\(\s*'([^']+)'(?:::TIMESTAMP)?\s*\)`), // time = epoch_ns('2023-01-01T00:00:00'::TIMESTAMP)
201201
regexp.MustCompile(`time\s+BETWEEN\s+epoch_ns\s*\(\s*'([^']+)'(?:::TIMESTAMP)?\s*\)\s+AND\s+epoch_ns\s*\(\s*'([^']+)'(?:::TIMESTAMP)?\s*\)`), // time BETWEEN epoch_ns('...') AND epoch_ns('...')
202202

203203
// Epoch_ns with cast format
204-
regexp.MustCompile(`time\s*(>=|>)\s*epoch_ns\s*\(\s*cast\s*\(\s*'([^']+)'\s+as\s+timestamp\s*\)(?:::TIMESTAMP)?\s*\)`), // time >= epoch_ns(cast('2023-01-01T00:00:00' as timestamp)::TIMESTAMP)
205-
regexp.MustCompile(`time\s*(<=|<)\s*epoch_ns\s*\(\s*cast\s*\(\s*'([^']+)'\s+as\s+timestamp\s*\)(?:::TIMESTAMP)?\s*\)`), // time <= epoch_ns(cast('2023-01-01T00:00:00' as timestamp)::TIMESTAMP)
206-
regexp.MustCompile(`time\s*=\s*epoch_ns\s*\(\s*cast\s*\(\s*'([^']+)'\s+as\s+timestamp\s*\)(?:::TIMESTAMP)?\s*\)`), // time = epoch_ns(cast('2023-01-01T00:00:00' as timestamp)::TIMESTAMP)
204+
regexp.MustCompile(`time\s*(>=|>)\s*epoch_ns\s*\(\s*cast\s*\(\s*'([^']+)'\s+as\s+timestamp\s*\)(?:::TIMESTAMP)?\s*\)`), // time >= epoch_ns(cast('2023-01-01T00:00:00' as timestamp)::TIMESTAMP)
205+
regexp.MustCompile(`time\s*(<=|<)\s*epoch_ns\s*\(\s*cast\s*\(\s*'([^']+)'\s+as\s+timestamp\s*\)(?:::TIMESTAMP)?\s*\)`), // time <= epoch_ns(cast('2023-01-01T00:00:00' as timestamp)::TIMESTAMP)
206+
regexp.MustCompile(`time\s*=\s*epoch_ns\s*\(\s*cast\s*\(\s*'([^']+)'\s+as\s+timestamp\s*\)(?:::TIMESTAMP)?\s*\)`), // time = epoch_ns(cast('2023-01-01T00:00:00' as timestamp)::TIMESTAMP)
207207
regexp.MustCompile(`time\s+BETWEEN\s+epoch_ns\s*\(\s*cast\s*\(\s*'([^']+)'\s+as\s+timestamp\s*\)(?:::TIMESTAMP)?\s*\)\s+AND\s+epoch_ns\s*\(\s*cast\s*\(\s*'([^']+)'\s+as\s+timestamp\s*\)(?:::TIMESTAMP)?\s*\)`), // time BETWEEN epoch_ns(cast('...')::TIMESTAMP) AND epoch_ns(cast('...')::TIMESTAMP)
208208
}
209209

@@ -303,10 +303,10 @@ func (q *QueryClient) extractTimeRange(whereClause string) TimeRange {
303303
endNano := endTime.UnixNano()
304304
timeRange.End = &endNano
305305
if timeRange.TimeCondition != "" {
306-
timeRange.TimeCondition = fmt.Sprintf("%s AND time %s epoch_ns('%s'::TIMESTAMP)",
306+
timeRange.TimeCondition = fmt.Sprintf("%s AND time %s epoch_ns('%s'::TIMESTAMP)",
307307
timeRange.TimeCondition, endOp, endTime.Format(time.RFC3339))
308308
} else {
309-
timeRange.TimeCondition = fmt.Sprintf("time %s epoch_ns('%s'::TIMESTAMP)",
309+
timeRange.TimeCondition = fmt.Sprintf("time %s epoch_ns('%s'::TIMESTAMP)",
310310
endOp, endTime.Format(time.RFC3339))
311311
}
312312
}
@@ -401,7 +401,7 @@ func (q *QueryClient) FindRelevantFiles(ctx context.Context, dbName, measurement
401401

402402
var relevantFiles []string
403403
// log.Printf("Getting relevant files for %s.%s within time range %v to %v", dbName, measurement,
404-
// time.Unix(0, *timeRange.Start), time.Unix(0, *timeRange.End))
404+
// time.Unix(0, *timeRange.Start), time.Unix(0, *timeRange.End))
405405
start := time.Now()
406406
defer func() {
407407
log.Printf("Found %d files in: %v", len(relevantFiles), time.Since(start))

0 commit comments

Comments
 (0)