Skip to content

Commit 07c2759

Browse files
committed
Merge remote-tracking branch 'origin/master'
2 parents 7da872c + 10945a6 commit 07c2759

File tree

2 files changed

+17
-40
lines changed

2 files changed

+17
-40
lines changed

azkustodata/kql/query_parameters.go

+10-5
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"github.com/Azure/azure-kusto-go/azkustodata/value"
55
"github.com/google/uuid"
66
"github.com/shopspring/decimal"
7+
"sort"
78
"strings"
89
"time"
910
)
@@ -84,15 +85,19 @@ func (q *Parameters) ToDeclarationString() string {
8485

8586
build.WriteString(declare)
8687

87-
comma := len(q.parameters)
88-
for key, paramVals := range q.parameters {
88+
keys := make([]string, 0, len(q.parameters))
89+
for k := range q.parameters {
90+
keys = append(keys, k)
91+
}
92+
sort.Strings(keys)
93+
94+
for i, key := range keys {
8995
build.WriteString(key)
9096
build.WriteString(":")
91-
build.WriteString(string(paramVals.GetType()))
92-
if comma > 1 {
97+
build.WriteString(string(q.parameters[key].GetType()))
98+
if i < len(keys)-1 {
9399
build.WriteString(", ")
94100
}
95-
comma--
96101
}
97102
build.WriteString(closeStmt)
98103
return build.String()

azkustodata/kql/query_parameters_test.go

+7-35
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"github.com/google/uuid"
66
"github.com/shopspring/decimal"
77
"github.com/stretchr/testify/require"
8-
"strings"
98
"testing"
109
"time"
1110
)
@@ -19,24 +18,21 @@ func TestQueryParameters(t *testing.T) {
1918
name string
2019
b *Builder
2120
qp *Parameters
22-
dsExpected []string
21+
dsExpected string
2322
pcExpected map[string]string
2423
}{
2524
{
2625
"Test empty",
2726
New(""),
2827
NewParameters(),
29-
[]string{"\n"},
28+
"\n",
3029
map[string]string{}},
3130
{
3231
"Test single add",
3332
New(""),
3433
NewParameters().
3534
AddString("foo", "bar"),
36-
[]string{"declare",
37-
"query_parameters(",
38-
"foo:string",
39-
");\n"},
35+
"declare query_parameters(foo:string);\n",
4036
map[string]string{"foo": "\"bar\""}},
4137
{
4238
"Test standard",
@@ -45,12 +41,7 @@ func TestQueryParameters(t *testing.T) {
4541
AddString("databaseName", "foo_1").
4642
AddString("tableName", "_bar").
4743
AddString("txt", "txt_"),
48-
[]string{"declare",
49-
"query_parameters(",
50-
"databaseName:string",
51-
"tableName:string",
52-
"txt:string",
53-
");\ndatabase(databaseName).table(tableName) | where column == txt ;"},
44+
"declare query_parameters(databaseName:string, tableName:string, txt:string);\ndatabase(databaseName).table(tableName) | where column == txt ;",
5445
map[string]string{
5546
"databaseName": "\"foo_1\"",
5647
"tableName": "\"_bar\"",
@@ -71,19 +62,7 @@ func TestQueryParameters(t *testing.T) {
7162
AddReal("rl", 0.01).
7263
AddLong("lg", 9223372036854775807).
7364
AddGUID("guid", guid),
74-
[]string{"declare",
75-
"query_parameters(",
76-
"foo:string",
77-
"num:int",
78-
"dec:decimal",
79-
"dt:datetime",
80-
"span:timespan",
81-
"obj:dynamic",
82-
"b:bool",
83-
"rl:real",
84-
"lg:long",
85-
"guid:guid",
86-
");\nwhere vnum == num and vdec == dec and vdate == dt and vspan == span and tostring(vobj) == tostring(obj) and vb == b and vreal == rl and vstr == str and vlong == lg and vguid == guid"},
65+
"declare query_parameters(b:bool, dec:decimal, dt:datetime, foo:string, guid:guid, lg:long, num:int, obj:dynamic, rl:real, span:timespan);\nwhere vnum == num and vdec == dec and vdate == dt and vspan == span and tostring(vobj) == tostring(obj) and vb == b and vreal == rl and vstr == str and vlong == lg and vguid == guid",
8766
map[string]string{
8867
"foo": "\"bar\"",
8968
"num": "int(1)",
@@ -103,12 +82,7 @@ func TestQueryParameters(t *testing.T) {
10382
AddString("databaseName", "f\"\"o").
10483
AddString("tableName", "b\a\r").
10584
AddString("txt", "f_u_n\u1234c"),
106-
[]string{"declare",
107-
"query_parameters(",
108-
"databaseName:string",
109-
"tableName:string",
110-
"txt:string",
111-
");\ndatabase(databaseName).table(tableName) | where column == txt ;"},
85+
"declare query_parameters(databaseName:string, tableName:string, txt:string);\ndatabase(databaseName).table(tableName) | where column == txt ;",
11286
map[string]string{
11387
"databaseName": `"f\"\"o"`,
11488
"tableName": `"b\a\r"`,
@@ -120,9 +94,7 @@ func TestQueryParameters(t *testing.T) {
12094
q := test.b.String()
12195
declarationString := test.qp.ToDeclarationString()
12296
actual := fmt.Sprintf("%s\n%s", declarationString, q)
123-
for _, sub := range test.dsExpected {
124-
require.True(t, strings.Contains(actual, sub))
125-
}
97+
require.Equal(t, test.dsExpected, actual)
12698

12799
params := test.qp.ToParameterCollection()
128100
require.Equal(t, test.pcExpected, params)

0 commit comments

Comments
 (0)