Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,13 @@ repos:
language: golang
entry: goimports
files: \.go$
additional_dependencies:
- golang.org/x/tools/cmd/goimports@latest
args:
- -w
require_serial: true
- repo: https://github.com/golangci/golangci-lint
rev: v1.59.1
rev: v2.7.2
hooks:
- id: golangci-lint
exclude: ^pkg/
3 changes: 2 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@
"go.lintTool": "golangci-lint",
"go.lintFlags": [
"--fast"
]
],
"go.testTimeout": "600s"
}
3 changes: 3 additions & 0 deletions chunk.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import (
"io"
"net"
"strconv"
"strings"
"time"

"github.com/pierrec/lz4"
Expand Down Expand Up @@ -363,6 +364,8 @@ func (this *SQCloud) sendArray(command string, values []interface{}) (int, error
}
}

command = strings.Trim(command, " \t\r\n")

// convert values to buffers encoded with whe sqlitecloud protocol
buffers := [][]byte{protocolBufferFromString(command, true)[0]}
for _, v := range values {
Expand Down
21 changes: 21 additions & 0 deletions test/compress_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -127,3 +127,24 @@ func TestCompress(t *testing.T) {
t.Fatal(err.Error())
}
}

func TestRowsetChunkCompressed(t *testing.T) {
var db *sqlitecloud.SQCloud
var err error

connectionString, _ := os.LookupEnv("SQLITE_CONNECTION_STRING")
apikey, _ := os.LookupEnv("SQLITE_API_KEY")
if db, err = sqlitecloud.Connect(connectionString + "?apikey=" + apikey); err != nil {
t.Fatal("CONNECT: ", err.Error())
}
defer db.Close()

switch res, err := db.Select("TEST ROWSET_CHUNK_COMPRESSED"); { // ROWSET
case err != nil:
t.Fatal("TEST ROWSET_CHUNK_COMPRESSED: ", err.Error())
case res == nil:
t.Fatal("TEST ROWSET_CHUNK_COMPRESSED: nil result")
case !res.IsRowSet():
t.Fatal("TEST ROWSET_CHUNK_COMPRESSED: invalid type")
}
}
68 changes: 68 additions & 0 deletions test/selectarray_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,3 +141,71 @@ func TestSelectArrayTableNameWithQuotes(t *testing.T) {
t.Fatal(err.Error())
}
}

func TestSelectArrayWithLeadingChars(t *testing.T) {
// Server API test
connectionString, _ := os.LookupEnv("SQLITE_CONNECTION_STRING")
apikey, _ := os.LookupEnv("SQLITE_API_KEY")
connectionString += "/" + os.Getenv("SQLITE_DB") + "?apikey=" + apikey

config, err1 := sqlitecloud.ParseConnectionString(connectionString)
if err1 != nil {
t.Fatal(err1.Error())
}

db := sqlitecloud.New(*config)
err := db.Connect()

if err != nil {
t.Fatalf(err.Error())
}

defer db.Close()

// test select with leading spaces
result, err := db.SelectArray(" SELECT 1 AS value;", nil)
if err != nil {
t.Fatal(err.Error())
}
if result.GetNumberOfRows() != 1 {
t.Fatalf("Expected 1 row, got %d rows", result.GetNumberOfRows())
}

// test select with leading tabs
result, err = db.SelectArray("\t\t\tSELECT 1 AS value;", nil)
if err != nil {
t.Fatal(err.Error())
}
if result.GetNumberOfRows() != 1 {
t.Fatalf("Expected 1 row, got %d rows", result.GetNumberOfRows())
}

// test select with leading new lines
result, err = db.SelectArray("\n\n\nSELECT 1 AS value;", nil)
if err != nil {
t.Fatal(err.Error())
}
if result.GetNumberOfRows() != 1 {
t.Fatalf("Expected 1 row, got %d rows", result.GetNumberOfRows())
}

// test with leading carriage returns
result, err = db.SelectArray("\r\r\rSELECT 1 AS value;", nil)
if err != nil {
t.Fatal(err.Error())
}
if result.GetNumberOfRows() != 1 {
t.Fatalf("Expected 1 row, got %d rows", result.GetNumberOfRows())
}

// test select with mixed leading characters
result, err = db.SelectArray(`
SELECT 1 AS value;
`, nil)
if err != nil {
t.Fatal(err.Error())
}
if result.GetNumberOfRows() != 1 {
t.Fatalf("Expected 1 row, got %d rows", result.GetNumberOfRows())
}
}
Loading