[go] database/sql: add NullByte

200 views
Skip to first unread message

Ariel Mashraki (Gerrit)

unread,
Apr 20, 2021, 4:14:33 PM4/20/21
to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com

Ariel Mashraki has uploaded this change for review.

View Change

database/sql: add NullByte

Fixes #40082

Change-Id: I88e25595ff74ace457bff505635e986e63a5dedd
---
M src/database/sql/fakedb_test.go
M src/database/sql/sql.go
M src/database/sql/sql_test.go
3 files changed, 42 insertions(+), 0 deletions(-)

diff --git a/src/database/sql/fakedb_test.go b/src/database/sql/fakedb_test.go
index 72e16e0..b1d3c29 100644
--- a/src/database/sql/fakedb_test.go
+++ b/src/database/sql/fakedb_test.go
@@ -1186,6 +1186,10 @@
return driver.Bool
case "nullbool":
return driver.Null{Converter: driver.Bool}
+ case "byte":
+ return driver.NotNull{Converter: driver.DefaultParameterConverter}
+ case "nullbyte":
+ return driver.Null{Converter: driver.DefaultParameterConverter}
case "int32":
return driver.Int32
case "nullint32":
diff --git a/src/database/sql/sql.go b/src/database/sql/sql.go
index 61b5018..4c784d0 100644
--- a/src/database/sql/sql.go
+++ b/src/database/sql/sql.go
@@ -260,6 +260,32 @@
return int64(n.Int32), nil
}

+// NullByte represents a byte that may be null.
+// NullByte implements the Scanner interface so
+// it can be used as a scan destination, similar to NullString.
+type NullByte struct {
+ Byte byte
+ Valid bool // Valid is true if Byte is not NULL
+}
+
+// Scan implements the Scanner interface.
+func (n *NullByte) Scan(value interface{}) error {
+ if value == nil {
+ n.Byte, n.Valid = 0, false
+ return nil
+ }
+ n.Valid = true
+ return convertAssign(&n.Byte, value)
+}
+
+// Value implements the driver Valuer interface.
+func (n NullByte) Value() (driver.Value, error) {
+ if !n.Valid {
+ return nil, nil
+ }
+ return int64(n.Byte), nil
+}
+
// NullFloat64 represents a float64 that may be null.
// NullFloat64 implements the Scanner interface so
// it can be used as a scan destination, similar to NullString.
diff --git a/src/database/sql/sql_test.go b/src/database/sql/sql_test.go
index 94af39c..c320bd2 100644
--- a/src/database/sql/sql_test.go
+++ b/src/database/sql/sql_test.go
@@ -1819,6 +1819,18 @@
nullTestRun(t, spec)
}

+func TestNullByteParam(t *testing.T) {
+ spec := nullTestSpec{"nullbyte", "byte", [6]nullTestRow{
+ {NullByte{31, true}, 1, NullByte{31, true}},
+ {NullByte{0, false}, 1, NullByte{0, false}},
+ {22, 1, NullByte{22, true}},
+ {NullByte{33, true}, 1, NullByte{33, true}},
+ {NullByte{222, false}, 1, NullByte{0, false}},
+ {0, NullByte{31, false}, nil},
+ }}
+ nullTestRun(t, spec)
+}
+
func TestNullFloat64Param(t *testing.T) {
spec := nullTestSpec{"nullfloat64", "float64", [6]nullTestRow{
{NullFloat64{31.2, true}, 1, NullFloat64{31.2, true}},

To view, visit change 311989. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: go
Gerrit-Branch: master
Gerrit-Change-Id: I88e25595ff74ace457bff505635e986e63a5dedd
Gerrit-Change-Number: 311989
Gerrit-PatchSet: 1
Gerrit-Owner: Ariel Mashraki <ar...@mashraki.co.il>
Gerrit-MessageType: newchange

Ariel Mashraki (Gerrit)

unread,
Apr 21, 2021, 2:11:41 AM4/21/21
to goph...@pubsubhelper.golang.org, Brad Fitzpatrick, Daniel Theophanes, Kevin Burke, Go Bot, golang-co...@googlegroups.com

Ariel Mashraki abandoned this change.

View Change

Abandoned This change was merged with CL 311572

To view, visit change 311989. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: go
Gerrit-Branch: master
Gerrit-Change-Id: I88e25595ff74ace457bff505635e986e63a5dedd
Gerrit-Change-Number: 311989
Gerrit-PatchSet: 1
Gerrit-Owner: Ariel Mashraki <ar...@mashraki.co.il>
Gerrit-Reviewer: Brad Fitzpatrick <brad...@golang.org>
Gerrit-Reviewer: Daniel Theophanes <kard...@gmail.com>
Gerrit-CC: Go Bot <go...@golang.org>
Gerrit-CC: Kevin Burke <k...@inburke.com>
Gerrit-MessageType: abandon
Reply all
Reply to author
Forward
0 new messages