@@ -10,8 +10,8 @@ import (
1010 "testing"
1111 "time"
1212
13- "xorm.io/core"
1413 "github.com/stretchr/testify/assert"
14+ "xorm.io/core"
1515)
1616
1717func TestGetVar (t * testing.T ) {
@@ -56,6 +56,69 @@ func TestGetVar(t *testing.T) {
5656 assert .Equal (t , true , has )
5757 assert .EqualValues (t , 28 , age2 )
5858
59+ var age3 int8
60+ has , err = testEngine .Table ("get_var" ).Cols ("age" ).Get (& age3 )
61+ assert .NoError (t , err )
62+ assert .Equal (t , true , has )
63+ assert .EqualValues (t , 28 , age3 )
64+
65+ var age4 int16
66+ has , err = testEngine .Table ("get_var" ).Cols ("age" ).
67+ Where ("age > ?" , 20 ).
68+ And ("age < ?" , 30 ).
69+ Get (& age4 )
70+ assert .NoError (t , err )
71+ assert .Equal (t , true , has )
72+ assert .EqualValues (t , 28 , age4 )
73+
74+ var age5 int32
75+ has , err = testEngine .Table ("get_var" ).Cols ("age" ).
76+ Where ("age > ?" , 20 ).
77+ And ("age < ?" , 30 ).
78+ Get (& age5 )
79+ assert .NoError (t , err )
80+ assert .Equal (t , true , has )
81+ assert .EqualValues (t , 28 , age5 )
82+
83+ var age6 int
84+ has , err = testEngine .Table ("get_var" ).Cols ("age" ).Get (& age6 )
85+ assert .NoError (t , err )
86+ assert .Equal (t , true , has )
87+ assert .EqualValues (t , 28 , age6 )
88+
89+ var age7 int64
90+ has , err = testEngine .Table ("get_var" ).Cols ("age" ).
91+ Where ("age > ?" , 20 ).
92+ And ("age < ?" , 30 ).
93+ Get (& age7 )
94+ assert .NoError (t , err )
95+ assert .Equal (t , true , has )
96+ assert .EqualValues (t , 28 , age7 )
97+
98+ var age8 int8
99+ has , err = testEngine .Table ("get_var" ).Cols ("age" ).Get (& age8 )
100+ assert .NoError (t , err )
101+ assert .Equal (t , true , has )
102+ assert .EqualValues (t , 28 , age8 )
103+
104+ var age9 int16
105+ has , err = testEngine .Table ("get_var" ).Cols ("age" ).
106+ Where ("age > ?" , 20 ).
107+ And ("age < ?" , 30 ).
108+ Get (& age9 )
109+ assert .NoError (t , err )
110+ assert .Equal (t , true , has )
111+ assert .EqualValues (t , 28 , age9 )
112+
113+ var age10 int32
114+ has , err = testEngine .Table ("get_var" ).Cols ("age" ).
115+ Where ("age > ?" , 20 ).
116+ And ("age < ?" , 30 ).
117+ Get (& age10 )
118+ assert .NoError (t , err )
119+ assert .Equal (t , true , has )
120+ assert .EqualValues (t , 28 , age10 )
121+
59122 var id sql.NullInt64
60123 has , err = testEngine .Table ("get_var" ).Cols ("id" ).Get (& id )
61124 assert .NoError (t , err )
@@ -433,3 +496,85 @@ func TestGetCustomTableInterface(t *testing.T) {
433496 assert .NoError (t , err )
434497 assert .True (t , has )
435498}
499+
500+ func TestGetNullVar (t * testing.T ) {
501+ type TestGetNullVarStruct struct {
502+ Id int64
503+ Name string
504+ Age int
505+ }
506+
507+ assert .NoError (t , prepareEngine ())
508+ assertSync (t , new (TestGetNullVarStruct ))
509+
510+ affected , err := testEngine .Exec ("insert into " + testEngine .TableName (new (TestGetNullVarStruct ), true ) + " (name,age) values (null,null)" )
511+ assert .NoError (t , err )
512+ a , _ := affected .RowsAffected ()
513+ assert .EqualValues (t , 1 , a )
514+
515+ var name string
516+ has , err := testEngine .Table (new (TestGetNullVarStruct )).Where ("id = ?" , 1 ).Cols ("name" ).Get (& name )
517+ assert .NoError (t , err )
518+ assert .True (t , has )
519+ assert .EqualValues (t , "" , name )
520+
521+ var age int
522+ has , err = testEngine .Table (new (TestGetNullVarStruct )).Where ("id = ?" , 1 ).Cols ("age" ).Get (& age )
523+ assert .NoError (t , err )
524+ assert .True (t , has )
525+ assert .EqualValues (t , 0 , age )
526+
527+ var age2 int8
528+ has , err = testEngine .Table (new (TestGetNullVarStruct )).Where ("id = ?" , 1 ).Cols ("age" ).Get (& age2 )
529+ assert .NoError (t , err )
530+ assert .True (t , has )
531+ assert .EqualValues (t , 0 , age2 )
532+
533+ var age3 int16
534+ has , err = testEngine .Table (new (TestGetNullVarStruct )).Where ("id = ?" , 1 ).Cols ("age" ).Get (& age3 )
535+ assert .NoError (t , err )
536+ assert .True (t , has )
537+ assert .EqualValues (t , 0 , age3 )
538+
539+ var age4 int32
540+ has , err = testEngine .Table (new (TestGetNullVarStruct )).Where ("id = ?" , 1 ).Cols ("age" ).Get (& age4 )
541+ assert .NoError (t , err )
542+ assert .True (t , has )
543+ assert .EqualValues (t , 0 , age4 )
544+
545+ var age5 int64
546+ has , err = testEngine .Table (new (TestGetNullVarStruct )).Where ("id = ?" , 1 ).Cols ("age" ).Get (& age5 )
547+ assert .NoError (t , err )
548+ assert .True (t , has )
549+ assert .EqualValues (t , 0 , age5 )
550+
551+ var age6 uint
552+ has , err = testEngine .Table (new (TestGetNullVarStruct )).Where ("id = ?" , 1 ).Cols ("age" ).Get (& age6 )
553+ assert .NoError (t , err )
554+ assert .True (t , has )
555+ assert .EqualValues (t , 0 , age6 )
556+
557+ var age7 uint8
558+ has , err = testEngine .Table (new (TestGetNullVarStruct )).Where ("id = ?" , 1 ).Cols ("age" ).Get (& age7 )
559+ assert .NoError (t , err )
560+ assert .True (t , has )
561+ assert .EqualValues (t , 0 , age7 )
562+
563+ var age8 int16
564+ has , err = testEngine .Table (new (TestGetNullVarStruct )).Where ("id = ?" , 1 ).Cols ("age" ).Get (& age8 )
565+ assert .NoError (t , err )
566+ assert .True (t , has )
567+ assert .EqualValues (t , 0 , age8 )
568+
569+ var age9 int32
570+ has , err = testEngine .Table (new (TestGetNullVarStruct )).Where ("id = ?" , 1 ).Cols ("age" ).Get (& age9 )
571+ assert .NoError (t , err )
572+ assert .True (t , has )
573+ assert .EqualValues (t , 0 , age9 )
574+
575+ var age10 int64
576+ has , err = testEngine .Table (new (TestGetNullVarStruct )).Where ("id = ?" , 1 ).Cols ("age" ).Get (& age10 )
577+ assert .NoError (t , err )
578+ assert .True (t , has )
579+ assert .EqualValues (t , 0 , age10 )
580+ }
0 commit comments