@@ -33,6 +33,7 @@ func exampleDB() *sql.DB {
3333 );` ,
3434 `INSERT INTO person (id, name) VALUES (1, 'brett', 1);` ,
3535 `INSERT INTO person (id, name) VALUES (2, 'fred', 1);` ,
36+ `INSERT INTO person (id) VALUES (3);` ,
3637 )
3738}
3839
@@ -136,6 +137,53 @@ func ExampleRowStrict() {
136137 // {"ID":0,"Name":"brett"}
137138}
138139
140+ func ExampleRowPtr () {
141+ db := exampleDB ()
142+ defer db .Close ()
143+ rows , err := db .Query ("SELECT id,name FROM person where id = 3 LIMIT 1" )
144+ if err != nil {
145+ panic (err )
146+ }
147+
148+ var person struct {
149+ ID int
150+ Name * string `db:"name"`
151+ }
152+
153+ err = scan .RowStrict (& person , rows )
154+ if err != nil {
155+ panic (err )
156+ }
157+
158+ json .NewEncoder (os .Stdout ).Encode (& person )
159+ // Output:
160+ // {"ID":0,"Name":null}
161+ }
162+
163+ func ExampleRowPtrType () {
164+ db := exampleDB ()
165+ defer db .Close ()
166+ rows , err := db .Query ("SELECT id,name FROM person where id = 3 LIMIT 1" )
167+ if err != nil {
168+ panic (err )
169+ }
170+
171+ type NullableString * string
172+ var person struct {
173+ ID int
174+ Name NullableString `db:"name"`
175+ }
176+
177+ err = scan .RowStrict (& person , rows )
178+ if err != nil {
179+ panic (err )
180+ }
181+
182+ json .NewEncoder (os .Stdout ).Encode (& person )
183+ // Output:
184+ // {"ID":0,"Name":null}
185+ }
186+
139187func ExampleRow_scalar () {
140188 db := exampleDB ()
141189 defer db .Close ()
@@ -165,8 +213,8 @@ func ExampleRows() {
165213 }
166214
167215 var persons []struct {
168- ID int `db:"id"`
169- Name string `db:"name"`
216+ ID int `db:"id"`
217+ Name * string `db:"name"`
170218 }
171219
172220 err = scan .Rows (& persons , rows )
@@ -176,7 +224,7 @@ func ExampleRows() {
176224
177225 json .NewEncoder (os .Stdout ).Encode (& persons )
178226 // Output:
179- // [{"ID":1,"Name":"brett"},{"ID":2,"Name":"fred"}]
227+ // [{"ID":1,"Name":"brett"},{"ID":2,"Name":"fred"},{"ID":3,"Name":null} ]
180228}
181229
182230func ExampleRowsStrict () {
@@ -189,7 +237,7 @@ func ExampleRowsStrict() {
189237
190238 var persons []struct {
191239 ID int
192- Name string `db:"name"`
240+ Name * string `db:"name"`
193241 }
194242
195243 err = scan .Rows (& persons , rows )
@@ -199,13 +247,13 @@ func ExampleRowsStrict() {
199247
200248 json .NewEncoder (os .Stdout ).Encode (& persons )
201249 // Output:
202- // [{"ID":0,"Name":"brett"},{"ID":0,"Name":"fred"}]
250+ // [{"ID":0,"Name":"brett"},{"ID":0,"Name":"fred"},{"ID":0,"Name":null} ]
203251}
204252
205253func ExampleRows_primitive () {
206254 db := exampleDB ()
207255 defer db .Close ()
208- rows , err := db .Query ("SELECT name FROM person ORDER BY id ASC" )
256+ rows , err := db .Query ("SELECT name FROM person WHERE name IS NOT NULL ORDER BY id ASC" )
209257 if err != nil {
210258 panic (err )
211259 }
0 commit comments