@@ -20,6 +20,7 @@ import (
2020 . "github.com/pingcap/check"
2121 "github.com/pingcap/parser/terror"
2222 "github.com/pingcap/tidb/config"
23+ "github.com/pingcap/tidb/expression"
2324 "github.com/pingcap/tidb/sessionctx"
2425 "github.com/pingcap/tidb/sessionctx/variable"
2526 "github.com/pingcap/tidb/util/testkit"
@@ -741,3 +742,45 @@ func (s *testSuite2) TestSelectGlobalVar(c *C) {
741742 err = tk .ExecToErr ("select @@global.invalid" )
742743 c .Assert (terror .ErrorEqual (err , variable .UnknownSystemVar ), IsTrue , Commentf ("err %v" , err ))
743744}
745+
746+ func (s * testSuite2 ) TestEnableNoopFunctionsVar (c * C ) {
747+ tk := testkit .NewTestKit (c , s .store )
748+
749+ // test for tidb_enable_noop_functions
750+ tk .MustQuery (`select @@global.tidb_enable_noop_functions;` ).Check (testkit .Rows ("0" ))
751+ tk .MustQuery (`select @@tidb_enable_noop_functions;` ).Check (testkit .Rows ("0" ))
752+
753+ _ , err := tk .Exec (`select get_lock('lock1', 2);` )
754+ c .Assert (terror .ErrorEqual (err , expression .ErrFunctionsNoopImpl ), IsTrue , Commentf ("err %v" , err ))
755+ _ , err = tk .Exec (`select release_lock('lock1');` )
756+ c .Assert (terror .ErrorEqual (err , expression .ErrFunctionsNoopImpl ), IsTrue , Commentf ("err %v" , err ))
757+
758+ // change session var to 1
759+ tk .MustExec (`set tidb_enable_noop_functions=1;` )
760+ tk .MustQuery (`select @@tidb_enable_noop_functions;` ).Check (testkit .Rows ("1" ))
761+ tk .MustQuery (`select @@global.tidb_enable_noop_functions;` ).Check (testkit .Rows ("0" ))
762+ tk .MustQuery (`select get_lock("lock", 10)` ).Check (testkit .Rows ("1" ))
763+ tk .MustQuery (`select release_lock("lock")` ).Check (testkit .Rows ("1" ))
764+
765+ // restore to 0
766+ tk .MustExec (`set tidb_enable_noop_functions=0;` )
767+ tk .MustQuery (`select @@tidb_enable_noop_functions;` ).Check (testkit .Rows ("0" ))
768+ tk .MustQuery (`select @@global.tidb_enable_noop_functions;` ).Check (testkit .Rows ("0" ))
769+
770+ _ , err = tk .Exec (`select get_lock('lock2', 10);` )
771+ c .Assert (terror .ErrorEqual (err , expression .ErrFunctionsNoopImpl ), IsTrue , Commentf ("err %v" , err ))
772+ _ , err = tk .Exec (`select release_lock('lock2');` )
773+ c .Assert (terror .ErrorEqual (err , expression .ErrFunctionsNoopImpl ), IsTrue , Commentf ("err %v" , err ))
774+
775+ // set test
776+ _ , err = tk .Exec (`set tidb_enable_noop_functions='abc'` )
777+ c .Assert (err , NotNil )
778+ _ , err = tk .Exec (`set tidb_enable_noop_functions=11` )
779+ c .Assert (err , NotNil )
780+ tk .MustExec (`set tidb_enable_noop_functions="off";` )
781+ tk .MustQuery (`select @@tidb_enable_noop_functions;` ).Check (testkit .Rows ("off" ))
782+ tk .MustExec (`set tidb_enable_noop_functions="on";` )
783+ tk .MustQuery (`select @@tidb_enable_noop_functions;` ).Check (testkit .Rows ("on" ))
784+ tk .MustExec (`set tidb_enable_noop_functions=0;` )
785+ tk .MustQuery (`select @@tidb_enable_noop_functions;` ).Check (testkit .Rows ("0" ))
786+ }
0 commit comments