@@ -1808,6 +1808,7 @@ func TestIntegration_QueryParameters(t *testing.T) {
1808
1808
dtm := civil.DateTime {Date : d , Time : tm }
1809
1809
ts := time .Date (2016 , 3 , 20 , 15 , 04 , 05 , 0 , time .UTC )
1810
1810
rat := big .NewRat (13 , 10 )
1811
+ bigRat := big .NewRat (12345 , 10e10 )
1811
1812
1812
1813
type ss struct {
1813
1814
String string
@@ -1828,73 +1829,73 @@ func TestIntegration_QueryParameters(t *testing.T) {
1828
1829
}{
1829
1830
{
1830
1831
"SELECT @val" ,
1831
- []QueryParameter {{"val" , 1 }},
1832
+ []QueryParameter {{Name : "val" , Value : 1 }},
1832
1833
[]Value {int64 (1 )},
1833
1834
int64 (1 ),
1834
1835
},
1835
1836
{
1836
1837
"SELECT @val" ,
1837
- []QueryParameter {{"val" , 1.3 }},
1838
+ []QueryParameter {{Name : "val" , Value : 1.3 }},
1838
1839
[]Value {1.3 },
1839
1840
1.3 ,
1840
1841
},
1841
1842
{
1842
1843
"SELECT @val" ,
1843
- []QueryParameter {{"val" , rat }},
1844
+ []QueryParameter {{Name : "val" , Value : rat }},
1844
1845
[]Value {rat },
1845
1846
rat ,
1846
1847
},
1847
1848
{
1848
1849
"SELECT @val" ,
1849
- []QueryParameter {{"val" , true }},
1850
+ []QueryParameter {{Name : "val" , Value : true }},
1850
1851
[]Value {true },
1851
1852
true ,
1852
1853
},
1853
1854
{
1854
1855
"SELECT @val" ,
1855
- []QueryParameter {{"val" , "ABC" }},
1856
+ []QueryParameter {{Name : "val" , Value : "ABC" }},
1856
1857
[]Value {"ABC" },
1857
1858
"ABC" ,
1858
1859
},
1859
1860
{
1860
1861
"SELECT @val" ,
1861
- []QueryParameter {{"val" , []byte ("foo" )}},
1862
+ []QueryParameter {{Name : "val" , Value : []byte ("foo" )}},
1862
1863
[]Value {[]byte ("foo" )},
1863
1864
[]byte ("foo" ),
1864
1865
},
1865
1866
{
1866
1867
"SELECT @val" ,
1867
- []QueryParameter {{"val" , ts }},
1868
+ []QueryParameter {{Name : "val" , Value : ts }},
1868
1869
[]Value {ts },
1869
1870
ts ,
1870
1871
},
1871
1872
{
1872
1873
"SELECT @val" ,
1873
- []QueryParameter {{"val" , []time.Time {ts , ts }}},
1874
+ []QueryParameter {{Name : "val" , Value : []time.Time {ts , ts }}},
1874
1875
[]Value {[]Value {ts , ts }},
1875
1876
[]interface {}{ts , ts },
1876
1877
},
1877
1878
{
1878
1879
"SELECT @val" ,
1879
- []QueryParameter {{"val" , dtm }},
1880
+ []QueryParameter {{Name : "val" , Value : dtm }},
1880
1881
[]Value {civil.DateTime {Date : d , Time : rtm }},
1881
1882
civil.DateTime {Date : d , Time : rtm },
1882
1883
},
1883
1884
{
1884
1885
"SELECT @val" ,
1885
- []QueryParameter {{"val" , d }},
1886
+ []QueryParameter {{Name : "val" , Value : d }},
1886
1887
[]Value {d },
1887
1888
d ,
1888
1889
},
1889
1890
{
1890
1891
"SELECT @val" ,
1891
- []QueryParameter {{"val" , tm }},
1892
+ []QueryParameter {{Name : "val" , Value : tm }},
1892
1893
[]Value {rtm },
1893
1894
rtm ,
1894
1895
},
1895
1896
{
1896
1897
"SELECT @val" ,
1897
- []QueryParameter {{"val" , s {ts , []string {"a" , "b" }, ss {"c" }, []ss {{"d" }, {"e" }}}}},
1898
+ []QueryParameter {{Name : "val" , Value : s {ts , []string {"a" , "b" }, ss {"c" }, []ss {{"d" }, {"e" }}}}},
1898
1899
[]Value {[]Value {ts , []Value {"a" , "b" }, []Value {"c" }, []Value {[]Value {"d" }, []Value {"e" }}}},
1899
1900
map [string ]interface {}{
1900
1901
"Timestamp" : ts ,
@@ -1908,7 +1909,7 @@ func TestIntegration_QueryParameters(t *testing.T) {
1908
1909
},
1909
1910
{
1910
1911
"SELECT @val.Timestamp, @val.SubStruct.String" ,
1911
- []QueryParameter {{"val" , s {Timestamp : ts , SubStruct : ss {"a" }}}},
1912
+ []QueryParameter {{Name : "val" , Value : s {Timestamp : ts , SubStruct : ss {"a" }}}},
1912
1913
[]Value {ts , "a" },
1913
1914
map [string ]interface {}{
1914
1915
"Timestamp" : ts ,
@@ -1917,6 +1918,147 @@ func TestIntegration_QueryParameters(t *testing.T) {
1917
1918
"SubStructArray" : nil ,
1918
1919
},
1919
1920
},
1921
+ {
1922
+ "SELECT @val" ,
1923
+ []QueryParameter {
1924
+ {
1925
+ Name : "val" ,
1926
+ Value : & QueryParameterValue {
1927
+ Type : StandardSQLDataType {
1928
+ TypeKind : "BIGNUMERIC" ,
1929
+ },
1930
+ Value : BigNumericString (bigRat ),
1931
+ },
1932
+ },
1933
+ },
1934
+ []Value {bigRat },
1935
+ bigRat ,
1936
+ },
1937
+ {
1938
+ "SELECT @val" ,
1939
+ []QueryParameter {
1940
+ {
1941
+ Name : "val" ,
1942
+ Value : & QueryParameterValue {
1943
+ ArrayValue : []QueryParameterValue {
1944
+ {Value : "a" },
1945
+ {Value : "b" },
1946
+ },
1947
+ Type : StandardSQLDataType {
1948
+ ArrayElementType : & StandardSQLDataType {
1949
+ TypeKind : "STRING" ,
1950
+ },
1951
+ },
1952
+ },
1953
+ },
1954
+ },
1955
+ []Value {[]Value {"a" , "b" }},
1956
+ []interface {}{"a" , "b" },
1957
+ },
1958
+ {
1959
+ "SELECT @val" ,
1960
+ []QueryParameter {
1961
+ {
1962
+ Name : "val" ,
1963
+ Value : & QueryParameterValue {
1964
+ StructValue : map [string ]QueryParameterValue {
1965
+ "Timestamp" : {
1966
+ Value : ts ,
1967
+ },
1968
+ "BigNumericArray" : {
1969
+ ArrayValue : []QueryParameterValue {
1970
+ {Value : BigNumericString (bigRat )},
1971
+ {Value : BigNumericString (rat )},
1972
+ },
1973
+ },
1974
+ "ArraySingleValueStruct" : {
1975
+ ArrayValue : []QueryParameterValue {
1976
+ {StructValue : map [string ]QueryParameterValue {
1977
+ "Number" : {
1978
+ Value : int64 (42 ),
1979
+ },
1980
+ }},
1981
+ {StructValue : map [string ]QueryParameterValue {
1982
+ "Number" : {
1983
+ Value : int64 (43 ),
1984
+ },
1985
+ }},
1986
+ },
1987
+ },
1988
+ "SubStruct" : {
1989
+ StructValue : map [string ]QueryParameterValue {
1990
+ "String" : {
1991
+ Value : "c" ,
1992
+ },
1993
+ },
1994
+ },
1995
+ },
1996
+ Type : StandardSQLDataType {
1997
+ StructType : & StandardSQLStructType {
1998
+ Fields : []* StandardSQLField {
1999
+ {
2000
+ Name : "Timestamp" ,
2001
+ Type : & StandardSQLDataType {
2002
+ TypeKind : "TIMESTAMP" ,
2003
+ },
2004
+ },
2005
+ {
2006
+ Name : "BigNumericArray" ,
2007
+ Type : & StandardSQLDataType {
2008
+ ArrayElementType : & StandardSQLDataType {
2009
+ TypeKind : "BIGNUMERIC" ,
2010
+ },
2011
+ },
2012
+ },
2013
+ {
2014
+ Name : "ArraySingleValueStruct" ,
2015
+ Type : & StandardSQLDataType {
2016
+ ArrayElementType : & StandardSQLDataType {
2017
+ StructType : & StandardSQLStructType {
2018
+ Fields : []* StandardSQLField {
2019
+ {
2020
+ Name : "Number" ,
2021
+ Type : & StandardSQLDataType {
2022
+ TypeKind : "INT64" ,
2023
+ },
2024
+ },
2025
+ },
2026
+ },
2027
+ },
2028
+ },
2029
+ },
2030
+ {
2031
+ Name : "SubStruct" ,
2032
+ Type : & StandardSQLDataType {
2033
+ StructType : & StandardSQLStructType {
2034
+ Fields : []* StandardSQLField {
2035
+ {
2036
+ Name : "String" ,
2037
+ Type : & StandardSQLDataType {
2038
+ TypeKind : "STRING" ,
2039
+ },
2040
+ },
2041
+ },
2042
+ },
2043
+ },
2044
+ },
2045
+ },
2046
+ },
2047
+ },
2048
+ },
2049
+ },
2050
+ },
2051
+ []Value {[]Value {ts , []Value {bigRat , rat }, []Value {[]Value {int64 (42 )}, []Value {int64 (43 )}}, []Value {"c" }}},
2052
+ map [string ]interface {}{
2053
+ "Timestamp" : ts ,
2054
+ "BigNumericArray" : []interface {}{bigRat , rat },
2055
+ "ArraySingleValueStruct" : []interface {}{
2056
+ map [string ]interface {}{"Number" : int64 (42 )},
2057
+ map [string ]interface {}{"Number" : int64 (43 )},
2058
+ },
2059
+ "SubStruct" : map [string ]interface {}{"String" : "c" },
2060
+ },
2061
+ },
1920
2062
}
1921
2063
for _ , c := range testCases {
1922
2064
q := client .Query (c .query )
0 commit comments