@@ -397,8 +397,8 @@ func TestClient_Single_QueryOptions(t *testing.T) {
397397 for _ , tt := range queryOptionsTestCases () {
398398 t .Run (tt .name , func (t * testing.T ) {
399399 if tt .env .Options != nil {
400- os . Setenv ( "SPANNER_OPTIMIZER_VERSION" , tt .env .Options . OptimizerVersion )
401- defer os . Setenv ( "SPANNER_OPTIMIZER_VERSION" , "" )
400+ unset := setQueryOptionsEnvVars ( tt .env .Options )
401+ defer unset ( )
402402 }
403403
404404 ctx := context .Background ()
@@ -458,6 +458,9 @@ func checkReqsForQueryOptions(t *testing.T, server InMemSpannerServer, qo QueryO
458458 if got , want := reqQueryOptions .OptimizerVersion , qo .Options .OptimizerVersion ; got != want {
459459 t .Fatalf ("Optimizer version mismatch, got %v, want %v" , got , want )
460460 }
461+ if got , want := reqQueryOptions .OptimizerStatisticsPackage , qo .Options .OptimizerStatisticsPackage ; got != want {
462+ t .Fatalf ("Optimizer statistics package mismatch, got %v, want %v" , got , want )
463+ }
461464}
462465
463466func testSingleQuery (t * testing.T , serverError error ) error {
@@ -623,8 +626,8 @@ func TestClient_ReadOnlyTransaction_QueryOptions(t *testing.T) {
623626 for _ , tt := range queryOptionsTestCases () {
624627 t .Run (tt .name , func (t * testing.T ) {
625628 if tt .env .Options != nil {
626- os . Setenv ( "SPANNER_OPTIMIZER_VERSION" , tt .env .Options . OptimizerVersion )
627- defer os . Setenv ( "SPANNER_OPTIMIZER_VERSION" , "" )
629+ unset := setQueryOptionsEnvVars ( tt .env .Options )
630+ defer unset ( )
628631 }
629632
630633 ctx := context .Background ()
@@ -645,6 +648,15 @@ func TestClient_ReadOnlyTransaction_QueryOptions(t *testing.T) {
645648 }
646649}
647650
651+ func setQueryOptionsEnvVars (opts * sppb.ExecuteSqlRequest_QueryOptions ) func () {
652+ os .Setenv ("SPANNER_OPTIMIZER_VERSION" , opts .OptimizerVersion )
653+ os .Setenv ("SPANNER_OPTIMIZER_STATISTICS_PACKAGE" , opts .OptimizerStatisticsPackage )
654+ return func () {
655+ defer os .Setenv ("SPANNER_OPTIMIZER_VERSION" , "" )
656+ defer os .Setenv ("SPANNER_OPTIMIZER_STATISTICS_PACKAGE" , "" )
657+ }
658+ }
659+
648660func testReadOnlyTransaction (t * testing.T , executionTimes map [string ]SimulatedExecutionTime ) error {
649661 server , client , teardown := setupMockedTestServer (t )
650662 defer teardown ()
@@ -784,8 +796,8 @@ func TestClient_ReadWriteTransaction_Query_QueryOptions(t *testing.T) {
784796 for _ , tt := range queryOptionsTestCases () {
785797 t .Run (tt .name , func (t * testing.T ) {
786798 if tt .env .Options != nil {
787- os . Setenv ( "SPANNER_OPTIMIZER_VERSION" , tt .env .Options . OptimizerVersion )
788- defer os . Setenv ( "SPANNER_OPTIMIZER_VERSION" , "" )
799+ unset := setQueryOptionsEnvVars ( tt .env .Options )
800+ defer unset ( )
789801 }
790802
791803 ctx := context .Background ()
@@ -813,8 +825,8 @@ func TestClient_ReadWriteTransaction_Update_QueryOptions(t *testing.T) {
813825 for _ , tt := range queryOptionsTestCases () {
814826 t .Run (tt .name , func (t * testing.T ) {
815827 if tt .env .Options != nil {
816- os . Setenv ( "SPANNER_OPTIMIZER_VERSION" , tt .env .Options . OptimizerVersion )
817- defer os . Setenv ( "SPANNER_OPTIMIZER_VERSION" , "" )
828+ unset := setQueryOptionsEnvVars ( tt .env .Options )
829+ defer unset ( )
818830 }
819831
820832 ctx := context .Background ()
@@ -2240,7 +2252,10 @@ func TestClient_EmulatorWithCredentialsFile(t *testing.T) {
22402252
22412253func TestBatchReadOnlyTransaction_QueryOptions (t * testing.T ) {
22422254 ctx := context .Background ()
2243- qo := QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "1" }}
2255+ qo := QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {
2256+ OptimizerVersion : "1" ,
2257+ OptimizerStatisticsPackage : "auto_20191128_14_47_22UTC" ,
2258+ }}
22442259 _ , client , teardown := setupMockedTestServerWithConfig (t , ClientConfig {QueryOptions : qo })
22452260 defer teardown ()
22462261
@@ -2256,7 +2271,10 @@ func TestBatchReadOnlyTransaction_QueryOptions(t *testing.T) {
22562271}
22572272
22582273func TestBatchReadOnlyTransactionFromID_QueryOptions (t * testing.T ) {
2259- qo := QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "1" }}
2274+ qo := QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {
2275+ OptimizerVersion : "1" ,
2276+ OptimizerStatisticsPackage : "auto_20191128_14_47_22UTC" ,
2277+ }}
22602278 _ , client , teardown := setupMockedTestServerWithConfig (t , ClientConfig {QueryOptions : qo })
22612279 defer teardown ()
22622280
@@ -2276,48 +2294,49 @@ type QueryOptionsTestCase struct {
22762294}
22772295
22782296func queryOptionsTestCases () []QueryOptionsTestCase {
2297+ statsPkg := "auto_20191128_14_47_22UTC"
22792298 return []QueryOptionsTestCase {
22802299 {
22812300 "Client level" ,
2282- QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "1" }},
2301+ QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "1" , OptimizerStatisticsPackage : statsPkg }},
22832302 QueryOptions {Options : nil },
22842303 QueryOptions {Options : nil },
2285- QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "1" }},
2304+ QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "1" , OptimizerStatisticsPackage : statsPkg }},
22862305 },
22872306 {
22882307 "Environment level" ,
22892308 QueryOptions {Options : nil },
2290- QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "1" }},
2309+ QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "1" , OptimizerStatisticsPackage : statsPkg }},
22912310 QueryOptions {Options : nil },
2292- QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "1" }},
2311+ QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "1" , OptimizerStatisticsPackage : statsPkg }},
22932312 },
22942313 {
22952314 "Query level" ,
22962315 QueryOptions {Options : nil },
22972316 QueryOptions {Options : nil },
2298- QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "1" }},
2299- QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "1" }},
2317+ QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "1" , OptimizerStatisticsPackage : statsPkg }},
2318+ QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "1" , OptimizerStatisticsPackage : statsPkg }},
23002319 },
23012320 {
23022321 "Environment level has precedence" ,
2303- QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "1" }},
2304- QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "2" }},
2322+ QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "1" , OptimizerStatisticsPackage : statsPkg }},
2323+ QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "2" , OptimizerStatisticsPackage : statsPkg }},
23052324 QueryOptions {Options : nil },
2306- QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "2" }},
2325+ QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "2" , OptimizerStatisticsPackage : statsPkg }},
23072326 },
23082327 {
23092328 "Query level has precedence than client level" ,
2310- QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "1" }},
2329+ QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "1" , OptimizerStatisticsPackage : statsPkg }},
23112330 QueryOptions {Options : nil },
2312- QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "3" }},
2313- QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "3" }},
2331+ QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "3" , OptimizerStatisticsPackage : statsPkg }},
2332+ QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "3" , OptimizerStatisticsPackage : statsPkg }},
23142333 },
23152334 {
23162335 "Query level has highest precedence" ,
2317- QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "1" }},
2318- QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "2" }},
2319- QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "3" }},
2320- QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "3" }},
2336+ QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "1" , OptimizerStatisticsPackage : statsPkg }},
2337+ QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "2" , OptimizerStatisticsPackage : statsPkg }},
2338+ QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "3" , OptimizerStatisticsPackage : statsPkg }},
2339+ QueryOptions {Options : & sppb.ExecuteSqlRequest_QueryOptions {OptimizerVersion : "3" , OptimizerStatisticsPackage : statsPkg }},
23212340 },
23222341 }
23232342}
0 commit comments