Skip to content

Commit 751fc8e

Browse files
Feature/issue 49 fix test cases (#52)
* fix test cases
1 parent b206ae3 commit 751fc8e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

88 files changed

+750
-632
lines changed

lib/column/date.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ func (dt *Date) ScanRow(dest interface{}, row int) error {
6262
case **time.Time:
6363
*d = new(time.Time)
6464
**d = dt.row(row).Time
65+
case *types.Date:
66+
*d = dt.row(row)
67+
case **types.Date:
68+
*d = new(types.Date)
69+
**d = dt.row(row)
6570
default:
6671
return &ColumnConverterError{
6772
Op: "ScanRow",
@@ -96,6 +101,28 @@ func (dt *Date) Append(v interface{}) (nulls []uint8, err error) {
96101
dt.values, nulls[i] = append(dt.values, 0), 1
97102
}
98103
}
104+
case []types.Date:
105+
in := make([]int16, 0, len(v))
106+
for _, t := range v {
107+
if err := dateOverflow(minDate, maxDate, t.Time, "2006-01-02"); err != nil {
108+
return nil, err
109+
}
110+
in = append(in, int16(t.Unix()/secInDay))
111+
}
112+
dt.values, nulls = append(dt.values, in...), make([]uint8, len(v))
113+
case []*types.Date:
114+
nulls = make([]uint8, len(v))
115+
for i, v := range v {
116+
switch {
117+
case v != nil:
118+
if err := dateOverflow(minDate, maxDate, (*v).Time, "2006-01-02"); err != nil {
119+
return nil, err
120+
}
121+
dt.values = append(dt.values, int16(v.Unix()/secInDay))
122+
default:
123+
dt.values, nulls[i] = append(dt.values, 0), 1
124+
}
125+
}
99126
default:
100127
return nil, &ColumnConverterError{
101128
Op: "Append",
@@ -121,6 +148,18 @@ func (dt *Date) AppendRow(v interface{}) error {
121148
}
122149
date = int16(v.Unix() / secInDay)
123150
}
151+
case types.Date:
152+
if err := dateOverflow(minDate, maxDate, v.Time, "2006-01-02"); err != nil {
153+
return err
154+
}
155+
date = int16(v.Unix() / secInDay)
156+
case *types.Date:
157+
if v != nil {
158+
if err := dateOverflow(minDate, maxDate, (*v).Time, "2006-01-02"); err != nil {
159+
return err
160+
}
161+
date = int16(v.Unix() / secInDay)
162+
}
124163
case nil:
125164
default:
126165
return &ColumnConverterError{

lib/column/date32.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ func (dt *Date32) ScanRow(dest interface{}, row int) error {
6262
case **time.Time:
6363
*d = new(time.Time)
6464
**d = dt.row(row).Time
65+
case *types.Date:
66+
*d = dt.row(row)
67+
case **types.Date:
68+
*d = new(types.Date)
69+
**d = dt.row(row)
6570
default:
6671
return &ColumnConverterError{
6772
Op: "ScanRow",
@@ -96,6 +101,28 @@ func (dt *Date32) Append(v interface{}) (nulls []uint8, err error) {
96101
dt.values, nulls[i] = append(dt.values, 0), 1
97102
}
98103
}
104+
case []types.Date:
105+
in := make([]int32, 0, len(v))
106+
for _, t := range v {
107+
if err := dateOverflow(minDate32, maxDate32, t.Time, "2006-01-02"); err != nil {
108+
return nil, err
109+
}
110+
in = append(in, timeToInt32(t.Time))
111+
}
112+
dt.values, nulls = append(dt.values, in...), make([]uint8, len(v))
113+
case []*types.Date:
114+
nulls = make([]uint8, len(v))
115+
for i, v := range v {
116+
switch {
117+
case v != nil:
118+
if err := dateOverflow(minDate32, maxDate32, (*v).Time, "2006-01-02"); err != nil {
119+
return nil, err
120+
}
121+
dt.values = append(dt.values, timeToInt32((*v).Time))
122+
default:
123+
dt.values, nulls[i] = append(dt.values, 0), 1
124+
}
125+
}
99126
default:
100127
return nil, &ColumnConverterError{
101128
Op: "Append",
@@ -121,6 +148,18 @@ func (dt *Date32) AppendRow(v interface{}) error {
121148
}
122149
date = timeToInt32(*v)
123150
}
151+
case types.Date:
152+
if err := dateOverflow(minDate32, maxDate32, v.Time, "2006-01-02"); err != nil {
153+
return err
154+
}
155+
date = timeToInt32(v.Time)
156+
case *types.Date:
157+
if v != nil {
158+
if err := dateOverflow(minDate32, maxDate32, (*v).Time, "2006-01-02"); err != nil {
159+
return err
160+
}
161+
date = timeToInt32((*v).Time)
162+
}
124163
case nil:
125164
default:
126165
return &ColumnConverterError{

lib/column/datetime.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package column
1919

2020
import (
2121
"fmt"
22+
"github.com/timeplus-io/proton-go-driver/v2/types"
2223
"reflect"
2324
"strings"
2425
"time"
@@ -76,6 +77,11 @@ func (dt *DateTime) ScanRow(dest interface{}, row int) error {
7677
case **time.Time:
7778
*d = new(time.Time)
7879
**d = dt.row(row)
80+
case *types.Datetime:
81+
*d = types.Datetime{dt.row(row)}
82+
case **types.Datetime:
83+
*d = new(types.Datetime)
84+
**d = types.Datetime{dt.row(row)}
7985
default:
8086
return &ColumnConverterError{
8187
Op: "ScanRow",
@@ -110,6 +116,28 @@ func (dt *DateTime) Append(v interface{}) (nulls []uint8, err error) {
110116
dt.values, nulls[i] = append(dt.values, 0), 1
111117
}
112118
}
119+
case []types.Datetime:
120+
in := make([]uint32, 0, len(v))
121+
for _, t := range v {
122+
if err := dateOverflow(minDateTime, maxDateTime, t.Time, "2006-01-02 15:04:05"); err != nil {
123+
return nil, err
124+
}
125+
in = append(in, uint32(t.Unix()))
126+
}
127+
dt.values, nulls = append(dt.values, in...), make([]uint8, len(v))
128+
case []*types.Datetime:
129+
nulls = make([]uint8, len(v))
130+
for i, v := range v {
131+
switch {
132+
case v != nil:
133+
if err := dateOverflow(minDateTime, maxDateTime, (*v).Time, "2006-01-02 15:04:05"); err != nil {
134+
return nil, err
135+
}
136+
dt.values = append(dt.values, uint32(v.Unix()))
137+
default:
138+
dt.values, nulls[i] = append(dt.values, 0), 1
139+
}
140+
}
113141
default:
114142
return nil, &ColumnConverterError{
115143
Op: "Append",
@@ -135,6 +163,18 @@ func (dt *DateTime) AppendRow(v interface{}) error {
135163
}
136164
datetime = uint32(v.Unix())
137165
}
166+
case types.Datetime:
167+
if err := dateOverflow(minDateTime, maxDateTime, v.Time, "2006-01-02 15:04:05"); err != nil {
168+
return err
169+
}
170+
datetime = uint32(v.Unix())
171+
case *types.Datetime:
172+
if v != nil {
173+
if err := dateOverflow(minDateTime, maxDateTime, (*v).Time, "2006-01-02 15:04:05"); err != nil {
174+
return err
175+
}
176+
datetime = uint32(v.Unix())
177+
}
138178
case nil:
139179
default:
140180
return &ColumnConverterError{

lib/column/datetime64.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package column
1919

2020
import (
2121
"fmt"
22+
"github.com/timeplus-io/proton-go-driver/v2/types"
2223
"math"
2324
"reflect"
2425
"strconv"
@@ -90,6 +91,11 @@ func (dt *DateTime64) ScanRow(dest interface{}, row int) error {
9091
case **time.Time:
9192
*d = new(time.Time)
9293
**d = dt.row(row)
94+
case *types.Datetime:
95+
*d = types.Datetime{dt.row(row)}
96+
case **types.Datetime:
97+
*d = new(types.Datetime)
98+
**d = types.Datetime{dt.row(row)}
9399
default:
94100
return &ColumnConverterError{
95101
Op: "ScanRow",
@@ -126,6 +132,28 @@ func (dt *DateTime64) Append(v interface{}) (nulls []uint8, err error) {
126132
dt.values, nulls[i] = append(dt.values, 0), 1
127133
}
128134
}
135+
case []types.Datetime:
136+
in := make([]int64, 0, len(v))
137+
for _, t := range v {
138+
if err := dateOverflow(minDateTime64, maxDateTime64, t.Time, "2006-01-02 15:04:05"); err != nil {
139+
return nil, err
140+
}
141+
in = append(in, dt.timeToInt64(t.Time))
142+
}
143+
dt.values, nulls = append(dt.values, in...), make([]uint8, len(v))
144+
case []*types.Datetime:
145+
nulls = make([]uint8, len(v))
146+
for i, v := range v {
147+
switch {
148+
case v != nil:
149+
if err := dateOverflow(minDateTime64, maxDateTime64, (*v).Time, "2006-01-02 15:04:05"); err != nil {
150+
return nil, err
151+
}
152+
dt.values = append(dt.values, dt.timeToInt64((*v).Time))
153+
default:
154+
dt.values, nulls[i] = append(dt.values, 0), 1
155+
}
156+
}
129157
default:
130158
return nil, &ColumnConverterError{
131159
Op: "Append",
@@ -153,6 +181,18 @@ func (dt *DateTime64) AppendRow(v interface{}) error {
153181
}
154182
datetime = dt.timeToInt64(*v)
155183
}
184+
case types.Datetime:
185+
if err := dateOverflow(minDateTime64, maxDateTime64, v.Time, "2006-01-02 15:04:05"); err != nil {
186+
return err
187+
}
188+
datetime = dt.timeToInt64(v.Time)
189+
case *types.Datetime:
190+
if v != nil {
191+
if err := dateOverflow(minDateTime64, maxDateTime64, (*v).Time, "2006-01-02 15:04:05"); err != nil {
192+
return err
193+
}
194+
datetime = dt.timeToInt64((*v).Time)
195+
}
156196
case nil:
157197
default:
158198
return &ColumnConverterError{

tests/abort_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func TestAbort(t *testing.T) {
3131
var (
3232
ctx = context.Background()
3333
conn, err = proton.Open(&proton.Options{
34-
Addr: []string{"127.0.0.1:7587"},
34+
Addr: []string{"127.0.0.1:8463"},
3535
Auth: proton.Auth{
3636
Database: "default",
3737
Username: "default",
@@ -47,23 +47,23 @@ func TestAbort(t *testing.T) {
4747
const ddl = `
4848
CREATE STREAM test_abort (
4949
Col1 uint8
50-
) Engine Memory
50+
)
5151
`
5252
defer func() {
5353
conn.Exec(ctx, "DROP STREAM test_abort")
5454
}()
5555
if err := conn.Exec(ctx, ddl); assert.NoError(t, err) {
56-
if batch, err := conn.PrepareBatch(ctx, "INSERT INTO test_abort"); assert.NoError(t, err) {
56+
if batch, err := conn.PrepareBatch(ctx, "INSERT INTO test_abort (* except _tp_time)"); assert.NoError(t, err) {
5757
if assert.NoError(t, batch.Abort()) {
5858
if err := batch.Abort(); assert.Error(t, err) {
5959
assert.Equal(t, proton.ErrBatchAlreadySent, err)
6060
}
6161
}
6262
}
63-
if batch, err := conn.PrepareBatch(ctx, "INSERT INTO test_abort"); assert.NoError(t, err) {
63+
if batch, err := conn.PrepareBatch(ctx, "INSERT INTO test_abort (* except _tp_time)"); assert.NoError(t, err) {
6464
if assert.NoError(t, batch.Append(uint8(1))) && assert.NoError(t, batch.Send()) {
6565
var col1 uint8
66-
if err := conn.QueryRow(ctx, "SELECT * FROM test_abort SETTINGS query_mode='table'").Scan(&col1); assert.NoError(t, err) {
66+
if err := conn.QueryRow(ctx, "SELECT (* except _tp_time) FROM test_abort WHERE _tp_time > earliest_ts() LIMIT 1").Scan(&col1); assert.NoError(t, err) {
6767
assert.Equal(t, uint8(1), col1)
6868
}
6969
}

tests/array_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ func TestArray(t *testing.T) {
3030
var (
3131
ctx = context.Background()
3232
conn, err = proton.Open(&proton.Options{
33-
Addr: []string{"127.0.0.1:7587"},
33+
Addr: []string{"127.0.0.1:8463"},
3434
Auth: proton.Auth{
3535
Database: "default",
3636
Username: "default",
@@ -48,13 +48,13 @@ func TestArray(t *testing.T) {
4848
Col1 array(string)
4949
, Col2 array(array(uint32))
5050
, Col3 array(array(array(datetime)))
51-
) Engine Memory
51+
)
5252
`
5353
defer func() {
5454
conn.Exec(ctx, "DROP STREAM test_array")
5555
}()
5656
if err := conn.Exec(ctx, ddl); assert.NoError(t, err) {
57-
if batch, err := conn.PrepareBatch(ctx, "INSERT INTO test_array"); assert.NoError(t, err) {
57+
if batch, err := conn.PrepareBatch(ctx, "INSERT INTO test_array (* except _tp_time)"); assert.NoError(t, err) {
5858
var (
5959
timestamp = time.Now().Truncate(time.Second)
6060
col1Data = []string{"A", "b", "c"}
@@ -91,7 +91,7 @@ func TestArray(t *testing.T) {
9191
}
9292
}
9393
if assert.NoError(t, batch.Send()) {
94-
if rows, err := conn.Query(ctx, "SELECT * FROM test_array"); assert.NoError(t, err) {
94+
if rows, err := conn.Query(ctx, "SELECT (* except _tp_time) FROM test_array WHERE _tp_time > earliest_ts() LIMIT 1"); assert.NoError(t, err) {
9595
for rows.Next() {
9696
var (
9797
col1 []string
@@ -118,7 +118,7 @@ func TestColumnarArray(t *testing.T) {
118118
var (
119119
ctx = context.Background()
120120
conn, err = proton.Open(&proton.Options{
121-
Addr: []string{"127.0.0.1:7587"},
121+
Addr: []string{"127.0.0.1:8463"},
122122
Auth: proton.Auth{
123123
Database: "default",
124124
Username: "default",
@@ -136,7 +136,7 @@ func TestColumnarArray(t *testing.T) {
136136
Col1 array(string)
137137
, Col2 array(array(uint32))
138138
, Col3 array(array(array(datetime)))
139-
) Engine Memory
139+
)
140140
`
141141
defer func() {
142142
conn.Exec(ctx, "DROP STREAM test_array")
@@ -183,7 +183,7 @@ func TestColumnarArray(t *testing.T) {
183183
col3DataColArr = append(col3DataColArr, col3Data)
184184
}
185185

186-
if batch, err := conn.PrepareBatch(ctx, "INSERT INTO test_array"); assert.NoError(t, err) {
186+
if batch, err := conn.PrepareBatch(ctx, "INSERT INTO test_array (* except _tp_time)"); assert.NoError(t, err) {
187187
if err := batch.Column(0).Append(col1DataColArr); !assert.NoError(t, err) {
188188
return
189189
}
@@ -194,7 +194,7 @@ func TestColumnarArray(t *testing.T) {
194194
return
195195
}
196196
if assert.NoError(t, batch.Send()) {
197-
if rows, err := conn.Query(ctx, "SELECT * FROM test_array"); assert.NoError(t, err) {
197+
if rows, err := conn.Query(ctx, "SELECT (* except _tp_time) FROM test_array WHERE _tp_time > earliest_ts() LIMIT 1"); assert.NoError(t, err) {
198198
for rows.Next() {
199199
var (
200200
col1 []string

0 commit comments

Comments
 (0)