From 5cbfdbd1007adec993f559a4e6120f564468fce2 Mon Sep 17 00:00:00 2001 From: John Yun Date: Sun, 9 Feb 2025 17:26:06 -0800 Subject: [PATCH] fix error --- bindings_test.go | 17 +++++++++++++++++ converter.go | 11 ++++++++--- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/bindings_test.go b/bindings_test.go index c2a195f8f..c490502df 100644 --- a/bindings_test.go +++ b/bindings_test.go @@ -927,6 +927,23 @@ func TestBindingsWithSameValue(t *testing.T) { dbt.mustExec(fmt.Sprintf("insert into %v values (?, ?, ?, ?, ?, ?, ?, ?, ?)", interfaceArrayTable), Array(&intAnyArr), Array(&strAnyArr), Array(&timeAnyArr, TimestampLTZType), Array(&timeAnyArr, TimestampTZType), Array(&timeAnyArr, TimestampNTZType), Array(&timeAnyArr, DateType), Array(&timeAnyArr, TimeType), Array(&boolArr), Array(&doubleArr)) dbt.mustExec(fmt.Sprintf("insert into %v values (?, ?, ?, ?, ?, ?, ?, ?, ?)", arrayInsertTable), Array(&intArr), Array(&strArr), Array(&timeArr, TimestampLTZType), Array(&timeArr, TimestampTZType), Array(&timeArr, TimestampNTZType), Array(&timeArr, DateType), Array(&timeArr, TimeType), Array(&boolArr), Array(&doubleArr)) dbt.mustExec("ALTER SESSION SET CLIENT_STAGE_ARRAY_BINDING_THRESHOLD = 1") + + intArr = make([]int, numRows*80) + strArr = make([]string, numRows*80) + timeArr = make([]time.Time, numRows*80) + boolArr = make([]bool, numRows*80) + doubleArr = make([]float64, numRows*80) + + for k := 0; k < 80; k++ { + for i := 0; i < numRows; i++ { + intArr[(k*numRows)+i] = (k * numRows) + i + doubleArr[(k*numRows)+i] = doubleAnyArr[i] + strArr[i] = "test" + strconv.Itoa(i) + boolArr[i] = boolAnyArr[i] + timeArr[i] = timeAnyArr[i].(time.Time) + } + } + dbt.mustExec(fmt.Sprintf("insert into %v values (?, ?, ?, ?, ?, ?, ?, ?, ?)", stageBindingTable), Array(&intArr), Array(&strArr), Array(&timeArr, TimestampLTZType), Array(&timeArr, TimestampTZType), Array(&timeArr, TimestampNTZType), Array(&timeArr, DateType), Array(&timeArr, TimeType), Array(&boolArr), Array(&doubleArr)) insertRows := dbt.mustQuery("select * from " + arrayInsertTable + " order by c1") diff --git a/converter.go b/converter.go index 778f23d42..82ff25ef2 100644 --- a/converter.go +++ b/converter.go @@ -2644,9 +2644,14 @@ func snowflakeArrayToString(nv *driver.NamedValue, stream bool) (snowflakeType, t = dateType a := nv.Value.(*dateArray) for _, x := range *a { - _, offset := x.Zone() - x = x.Add(time.Second * time.Duration(offset)) - v := fmt.Sprintf("%d", x.Unix()*1000) + var v string + if stream { + v = x.Format("2006-01-02") + } else { + _, offset := x.Zone() + x = x.Add(time.Second * time.Duration(offset)) + v = fmt.Sprintf("%d", x.Unix()*1000) + } arr = append(arr, &v) } case reflect.TypeOf(&timeArray{}):