Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
2 changes: 2 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ repos:
language: golang
entry: goimports
files: \.go$
additional_dependencies:
- golang.org/x/tools/cmd/goimports@latest
args:
- -w
require_serial: true
Expand Down
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())
}
}