From 1cf671cd33fd2765a33cf5d028b8a6cee0f55866 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20Garcia?= Date: Sat, 18 Sep 2021 18:29:00 -0300 Subject: [PATCH] Add error check for nil pointers passed as arguments to Insert() --- ksql.go | 4 ++++ ksql_test.go | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/ksql.go b/ksql.go index 0aae7df..bd84c56 100644 --- a/ksql.go +++ b/ksql.go @@ -432,6 +432,10 @@ func (c DB) Insert( ) } + if v.IsNil() { + return fmt.Errorf("ksql: expected a valid pointer to struct as argument but received a nil pointer: %v", record) + } + info := kstructs.GetTagInfo(t.Elem()) query, params, scanValues, err := buildInsertQuery(c.dialect, table.name, t, v, info, record, table.idColumns...) diff --git a/ksql_test.go b/ksql_test.go index 257b8c6..26f8e05 100644 --- a/ksql_test.go +++ b/ksql_test.go @@ -791,6 +791,18 @@ func TestInsert(t *testing.T) { assert.NotEqual(t, nil, err) }) + t.Run("should report error if it receives a nil pointer to a struct", func(t *testing.T) { + db, closer := connectDB(t, config) + defer closer.Close() + + ctx := context.Background() + c := newTestDB(db, config.driver) + + var user *User + err := c.Insert(ctx, UsersTable, user) + assert.NotEqual(t, nil, err) + }) + t.Run("should not panic if a column doesn't exist in the database", func(t *testing.T) { db, closer := connectDB(t, config) defer closer.Close()