diff --git a/batch.go b/batch.go index 689877a9..103d9aed 100644 --- a/batch.go +++ b/batch.go @@ -10,7 +10,7 @@ import ( type batchItem struct { query string - arguments []interface{} + arguments []any } // Batch queries are a way of bundling multiple queries together to avoid @@ -20,7 +20,7 @@ type Batch struct { } // Queue queues a query to batch b. query can be an SQL query or the name of a prepared statement. -func (b *Batch) Queue(query string, arguments ...interface{}) { +func (b *Batch) Queue(query string, arguments ...any) { b.items = append(b.items, &batchItem{ query: query, arguments: arguments, @@ -43,7 +43,7 @@ type BatchResults interface { QueryRow() Row // QueryFunc reads the results from the next query in the batch as if the query has been sent with Conn.QueryFunc. - QueryFunc(scans []interface{}, f func(QueryFuncRow) error) (pgconn.CommandTag, error) + QueryFunc(scans []any, f func(QueryFuncRow) error) (pgconn.CommandTag, error) // Close closes the batch operation. This must be called before the underlying connection can be used again. Any error // that occurred during a batch operation may have made it impossible to resyncronize the connection with the server. @@ -78,7 +78,7 @@ func (br *batchResults) Exec() (pgconn.CommandTag, error) { err = errors.New("no result") } if br.conn.shouldLog(LogLevelError) { - br.conn.log(br.ctx, LogLevelError, "BatchResult.Exec", map[string]interface{}{ + br.conn.log(br.ctx, LogLevelError, "BatchResult.Exec", map[string]any{ "sql": query, "args": logQueryArgs(arguments), "err": err, @@ -91,14 +91,14 @@ func (br *batchResults) Exec() (pgconn.CommandTag, error) { if err != nil { if br.conn.shouldLog(LogLevelError) { - br.conn.log(br.ctx, LogLevelError, "BatchResult.Exec", map[string]interface{}{ + br.conn.log(br.ctx, LogLevelError, "BatchResult.Exec", map[string]any{ "sql": query, "args": logQueryArgs(arguments), "err": err, }) } } else if br.conn.shouldLog(LogLevelInfo) { - br.conn.log(br.ctx, LogLevelInfo, "BatchResult.Exec", map[string]interface{}{ + br.conn.log(br.ctx, LogLevelInfo, "BatchResult.Exec", map[string]any{ "sql": query, "args": logQueryArgs(arguments), "commandTag": commandTag, @@ -134,7 +134,7 @@ func (br *batchResults) Query() (Rows, error) { rows.closed = true if br.conn.shouldLog(LogLevelError) { - br.conn.log(br.ctx, LogLevelError, "BatchResult.Query", map[string]interface{}{ + br.conn.log(br.ctx, LogLevelError, "BatchResult.Query", map[string]any{ "sql": query, "args": logQueryArgs(arguments), "err": rows.err, @@ -149,7 +149,7 @@ func (br *batchResults) Query() (Rows, error) { } // QueryFunc reads the results from the next query in the batch as if the query has been sent with Conn.QueryFunc. -func (br *batchResults) QueryFunc(scans []interface{}, f func(QueryFuncRow) error) (pgconn.CommandTag, error) { +func (br *batchResults) QueryFunc(scans []any, f func(QueryFuncRow) error) (pgconn.CommandTag, error) { if br.closed { return pgconn.CommandTag{}, fmt.Errorf("batch already closed") } @@ -206,7 +206,7 @@ func (br *batchResults) Close() error { } if br.conn.shouldLog(LogLevelInfo) { - br.conn.log(br.ctx, LogLevelInfo, "BatchResult.Close", map[string]interface{}{ + br.conn.log(br.ctx, LogLevelInfo, "BatchResult.Close", map[string]any{ "sql": query, "args": logQueryArgs(args), }) @@ -216,7 +216,7 @@ func (br *batchResults) Close() error { return br.mrr.Close() } -func (br *batchResults) nextQueryAndArgs() (query string, args []interface{}, ok bool) { +func (br *batchResults) nextQueryAndArgs() (query string, args []any, ok bool) { if br.b != nil && br.ix < len(br.b.items) { bi := br.b.items[br.ix] query = bi.query diff --git a/batch_test.go b/batch_test.go index 6a7abd37..5558b823 100644 --- a/batch_test.go +++ b/batch_test.go @@ -108,7 +108,7 @@ func TestConnSendBatch(t *testing.T) { } rowCount = 0 - _, err = br.QueryFunc([]interface{}{&id, &description, &amount}, func(pgx.QueryFuncRow) error { + _, err = br.QueryFunc([]any{&id, &description, &amount}, func(pgx.QueryFuncRow) error { if id != selectFromLedgerExpectedRows[rowCount].id { t.Errorf("id => %v, want %v", id, selectFromLedgerExpectedRows[rowCount].id) } diff --git a/bench_test.go b/bench_test.go index e5913995..db27491f 100644 --- a/bench_test.go +++ b/bench_test.go @@ -278,7 +278,7 @@ func BenchmarkSelectWithoutLogging(b *testing.B) { type discardLogger struct{} -func (dl discardLogger) Log(ctx context.Context, level pgx.LogLevel, msg string, data map[string]interface{}) { +func (dl discardLogger) Log(ctx context.Context, level pgx.LogLevel, msg string, data map[string]any) { } func BenchmarkSelectWithLoggingTraceDiscard(b *testing.B) { @@ -438,7 +438,7 @@ const benchmarkWriteTableInsertSQL = `insert into t( type benchmarkWriteTableCopyFromSrc struct { count int idx int - row []interface{} + row []any } func (s *benchmarkWriteTableCopyFromSrc) Next() bool { @@ -446,7 +446,7 @@ func (s *benchmarkWriteTableCopyFromSrc) Next() bool { return s.idx < s.count } -func (s *benchmarkWriteTableCopyFromSrc) Values() ([]interface{}, error) { +func (s *benchmarkWriteTableCopyFromSrc) Values() ([]any, error) { return s.row, nil } @@ -457,7 +457,7 @@ func (s *benchmarkWriteTableCopyFromSrc) Err() error { func newBenchmarkWriteTableCopyFromSrc(count int) pgx.CopyFromSource { return &benchmarkWriteTableCopyFromSrc{ count: count, - row: []interface{}{ + row: []any{ "varchar_1", "varchar_2", &pgtype.Text{}, @@ -509,9 +509,9 @@ func benchmarkWriteNRowsViaInsert(b *testing.B, n int) { } } -type queryArgs []interface{} +type queryArgs []any -func (qa *queryArgs) Append(v interface{}) string { +func (qa *queryArgs) Append(v any) string { *qa = append(*qa, v) return "$" + strconv.Itoa(len(*qa)) } diff --git a/conn.go b/conn.go index e6396cd3..ca34cdf3 100644 --- a/conn.go +++ b/conn.go @@ -216,17 +216,17 @@ func connect(ctx context.Context, config *ConnConfig) (c *Conn, err error) { config.Config.OnNotification = c.bufferNotifications } else { if c.shouldLog(LogLevelDebug) { - c.log(ctx, LogLevelDebug, "pgx notification handler disabled by application supplied OnNotification", map[string]interface{}{"host": config.Config.Host}) + c.log(ctx, LogLevelDebug, "pgx notification handler disabled by application supplied OnNotification", map[string]any{"host": config.Config.Host}) } } if c.shouldLog(LogLevelInfo) { - c.log(ctx, LogLevelInfo, "Dialing PostgreSQL server", map[string]interface{}{"host": config.Config.Host}) + c.log(ctx, LogLevelInfo, "Dialing PostgreSQL server", map[string]any{"host": config.Config.Host}) } c.pgConn, err = pgconn.ConnectConfig(ctx, &config.Config) if err != nil { if c.shouldLog(LogLevelError) { - c.log(ctx, LogLevelError, "connect failed", map[string]interface{}{"err": err}) + c.log(ctx, LogLevelError, "connect failed", map[string]any{"err": err}) } return nil, err } @@ -278,7 +278,7 @@ func (c *Conn) Prepare(ctx context.Context, name, sql string) (sd *pgconn.Statem if c.shouldLog(LogLevelError) { defer func() { if err != nil { - c.log(ctx, LogLevelError, "Prepare failed", map[string]interface{}{"err": err, "name": name, "sql": sql}) + c.log(ctx, LogLevelError, "Prepare failed", map[string]any{"err": err, "name": name, "sql": sql}) } }() } @@ -345,9 +345,9 @@ func (c *Conn) shouldLog(lvl LogLevel) bool { return c.logger != nil && c.logLevel >= lvl } -func (c *Conn) log(ctx context.Context, lvl LogLevel, msg string, data map[string]interface{}) { +func (c *Conn) log(ctx context.Context, lvl LogLevel, msg string, data map[string]any) { if data == nil { - data = map[string]interface{}{} + data = map[string]any{} } if c.pgConn != nil && c.pgConn.PID() != 0 { data["pid"] = c.pgConn.PID() @@ -382,26 +382,26 @@ func (c *Conn) Config() *ConnConfig { return c.config.Copy() } // Exec executes sql. sql can be either a prepared statement name or an SQL string. arguments should be referenced // positionally from the sql string as $1, $2, etc. -func (c *Conn) Exec(ctx context.Context, sql string, arguments ...interface{}) (pgconn.CommandTag, error) { +func (c *Conn) Exec(ctx context.Context, sql string, arguments ...any) (pgconn.CommandTag, error) { startTime := time.Now() commandTag, err := c.exec(ctx, sql, arguments...) if err != nil { if c.shouldLog(LogLevelError) { - c.log(ctx, LogLevelError, "Exec", map[string]interface{}{"sql": sql, "args": logQueryArgs(arguments), "err": err}) + c.log(ctx, LogLevelError, "Exec", map[string]any{"sql": sql, "args": logQueryArgs(arguments), "err": err}) } return commandTag, err } if c.shouldLog(LogLevelInfo) { endTime := time.Now() - c.log(ctx, LogLevelInfo, "Exec", map[string]interface{}{"sql": sql, "args": logQueryArgs(arguments), "time": endTime.Sub(startTime), "commandTag": commandTag}) + c.log(ctx, LogLevelInfo, "Exec", map[string]any{"sql": sql, "args": logQueryArgs(arguments), "time": endTime.Sub(startTime), "commandTag": commandTag}) } return commandTag, err } -func (c *Conn) exec(ctx context.Context, sql string, arguments ...interface{}) (commandTag pgconn.CommandTag, err error) { +func (c *Conn) exec(ctx context.Context, sql string, arguments ...any) (commandTag pgconn.CommandTag, err error) { mode := c.config.DefaultQueryExecMode optionLoop: @@ -460,7 +460,7 @@ optionLoop: } } -func (c *Conn) execSimpleProtocol(ctx context.Context, sql string, arguments []interface{}) (commandTag pgconn.CommandTag, err error) { +func (c *Conn) execSimpleProtocol(ctx context.Context, sql string, arguments []any) (commandTag pgconn.CommandTag, err error) { if len(arguments) > 0 { sql, err = c.sanitizeForSimpleQuery(sql, arguments...) if err != nil { @@ -476,7 +476,7 @@ func (c *Conn) execSimpleProtocol(ctx context.Context, sql string, arguments []i return commandTag, err } -func (c *Conn) execParamsAndPreparedPrefix(sd *pgconn.StatementDescription, args []interface{}) error { +func (c *Conn) execParamsAndPreparedPrefix(sd *pgconn.StatementDescription, args []any) error { if len(sd.ParamOIDs) != len(args) { return fmt.Errorf("expected %d arguments, got %d", len(sd.ParamOIDs), len(args)) } @@ -500,7 +500,7 @@ func (c *Conn) execParamsAndPreparedPrefix(sd *pgconn.StatementDescription, args return nil } -func (c *Conn) execParams(ctx context.Context, sd *pgconn.StatementDescription, arguments []interface{}) (pgconn.CommandTag, error) { +func (c *Conn) execParams(ctx context.Context, sd *pgconn.StatementDescription, arguments []any) (pgconn.CommandTag, error) { err := c.execParamsAndPreparedPrefix(sd, arguments) if err != nil { return pgconn.CommandTag{}, err @@ -511,7 +511,7 @@ func (c *Conn) execParams(ctx context.Context, sd *pgconn.StatementDescription, return result.CommandTag, result.Err } -func (c *Conn) execPrepared(ctx context.Context, sd *pgconn.StatementDescription, arguments []interface{}) (pgconn.CommandTag, error) { +func (c *Conn) execPrepared(ctx context.Context, sd *pgconn.StatementDescription, arguments []any) (pgconn.CommandTag, error) { err := c.execParamsAndPreparedPrefix(sd, arguments) if err != nil { return pgconn.CommandTag{}, err @@ -523,14 +523,14 @@ func (c *Conn) execPrepared(ctx context.Context, sd *pgconn.StatementDescription } type unknownArgumentTypeQueryExecModeExecError struct { - arg interface{} + arg any } func (e *unknownArgumentTypeQueryExecModeExecError) Error() string { return fmt.Sprintf("cannot use unregistered type %T as query argument in QueryExecModeExec", e.arg) } -func (c *Conn) execSQLParams(ctx context.Context, sql string, args []interface{}) (pgconn.CommandTag, error) { +func (c *Conn) execSQLParams(ctx context.Context, sql string, args []any) (pgconn.CommandTag, error) { c.eqb.Reset() anynil.NormalizeSlice(args) @@ -557,7 +557,7 @@ func (c *Conn) execSQLParams(ctx context.Context, sql string, args []interface{} // // Given that the whole point of QueryExecModeExec is to operate without having to know the PostgreSQL types there is // no way to safely use binary or to specify the parameter OIDs. -func (c *Conn) appendParamsForQueryExecModeExec(args []interface{}) error { +func (c *Conn) appendParamsForQueryExecModeExec(args []any) error { for _, arg := range args { if arg == nil { err := c.eqb.AppendParamFormat(c.typeMap, 0, TextFormatCode, arg) @@ -602,7 +602,7 @@ func (c *Conn) appendParamsForQueryExecModeExec(args []interface{}) error { return nil } -func (c *Conn) getRows(ctx context.Context, sql string, args []interface{}) *connRows { +func (c *Conn) getRows(ctx context.Context, sql string, args []any) *connRows { r := &connRows{} r.ctx = ctx @@ -691,7 +691,7 @@ type QueryResultFormatsByOID map[uint32]int16 // For extra control over how the query is executed, the types QueryExecMode, QueryResultFormats, and // QueryResultFormatsByOID may be used as the first args to control exactly how the query is executed. This is rarely // needed. See the documentation for those types for details. -func (c *Conn) Query(ctx context.Context, sql string, args ...interface{}) (Rows, error) { +func (c *Conn) Query(ctx context.Context, sql string, args ...any) (Rows, error) { var resultFormats QueryResultFormats var resultFormatsByOID QueryResultFormatsByOID mode := c.config.DefaultQueryExecMode @@ -829,7 +829,7 @@ optionLoop: // QueryRow is a convenience wrapper over Query. Any error that occurs while // querying is deferred until calling Scan on the returned Row. That Row will // error with ErrNoRows if no rows are returned. -func (c *Conn) QueryRow(ctx context.Context, sql string, args ...interface{}) Row { +func (c *Conn) QueryRow(ctx context.Context, sql string, args ...any) Row { rows, _ := c.Query(ctx, sql, args...) return (*connRow)(rows.(*connRows)) } @@ -850,7 +850,7 @@ type QueryFuncRow interface { // QueryFunc executes sql with args. For each row returned by the query the values will scanned into the elements of // scans and f will be called. If any row fails to scan or f returns an error the query will be aborted and the error // will be returned. -func (c *Conn) QueryFunc(ctx context.Context, sql string, args []interface{}, scans []interface{}, f func(QueryFuncRow) error) (pgconn.CommandTag, error) { +func (c *Conn) QueryFunc(ctx context.Context, sql string, args []any, scans []any, f func(QueryFuncRow) error) (pgconn.CommandTag, error) { rows, err := c.Query(ctx, sql, args...) if err != nil { return pgconn.CommandTag{}, err @@ -1018,7 +1018,7 @@ func (c *Conn) SendBatch(ctx context.Context, b *Batch) BatchResults { } } -func (c *Conn) sanitizeForSimpleQuery(sql string, args ...interface{}) (string, error) { +func (c *Conn) sanitizeForSimpleQuery(sql string, args ...any) (string, error) { if c.pgConn.ParameterStatus("standard_conforming_strings") != "on" { return "", errors.New("simple protocol queries must be run with standard_conforming_strings=on") } @@ -1028,7 +1028,7 @@ func (c *Conn) sanitizeForSimpleQuery(sql string, args ...interface{}) (string, } var err error - valueArgs := make([]interface{}, len(args)) + valueArgs := make([]any, len(args)) for i, a := range args { valueArgs[i], err = convertSimpleArgument(c.typeMap, a) if err != nil { @@ -1108,8 +1108,8 @@ func (c *Conn) getCompositeFields(ctx context.Context, oid uint32) ([]pgtype.Com from pg_attribute where attrelid=$1 order by attnum`, - []interface{}{typrelid}, - []interface{}{&fieldName, &fieldOID}, + []any{typrelid}, + []any{&fieldName, &fieldOID}, func(qfr QueryFuncRow) error { dt, ok := c.TypeMap().TypeForOID(fieldOID) if !ok { diff --git a/conn_test.go b/conn_test.go index 41d04b55..61f6c951 100644 --- a/conn_test.go +++ b/conn_test.go @@ -711,14 +711,14 @@ func TestInsertTimestampArray(t *testing.T) { type testLog struct { lvl pgx.LogLevel msg string - data map[string]interface{} + data map[string]any } type testLogger struct { logs []testLog } -func (l *testLogger) Log(ctx context.Context, level pgx.LogLevel, msg string, data map[string]interface{}) { +func (l *testLogger) Log(ctx context.Context, level pgx.LogLevel, msg string, data map[string]any) { data["ctxdata"] = ctx.Value("ctxdata") l.logs = append(l.logs, testLog{lvl: level, msg: msg, data: data}) } diff --git a/copy_from.go b/copy_from.go index ef982269..c1a66d52 100644 --- a/copy_from.go +++ b/copy_from.go @@ -13,12 +13,12 @@ import ( // CopyFromRows returns a CopyFromSource interface over the provided rows slice // making it usable by *Conn.CopyFrom. -func CopyFromRows(rows [][]interface{}) CopyFromSource { +func CopyFromRows(rows [][]any) CopyFromSource { return ©FromRows{rows: rows, idx: -1} } type copyFromRows struct { - rows [][]interface{} + rows [][]any idx int } @@ -27,7 +27,7 @@ func (ctr *copyFromRows) Next() bool { return ctr.idx < len(ctr.rows) } -func (ctr *copyFromRows) Values() ([]interface{}, error) { +func (ctr *copyFromRows) Values() ([]any, error) { return ctr.rows[ctr.idx], nil } @@ -37,12 +37,12 @@ func (ctr *copyFromRows) Err() error { // CopyFromSlice returns a CopyFromSource interface over a dynamic func // making it usable by *Conn.CopyFrom. -func CopyFromSlice(length int, next func(int) ([]interface{}, error)) CopyFromSource { +func CopyFromSlice(length int, next func(int) ([]any, error)) CopyFromSource { return ©FromSlice{next: next, idx: -1, len: length} } type copyFromSlice struct { - next func(int) ([]interface{}, error) + next func(int) ([]any, error) idx int len int err error @@ -53,7 +53,7 @@ func (cts *copyFromSlice) Next() bool { return cts.idx < cts.len } -func (cts *copyFromSlice) Values() ([]interface{}, error) { +func (cts *copyFromSlice) Values() ([]any, error) { values, err := cts.next(cts.idx) if err != nil { cts.err = err @@ -73,7 +73,7 @@ type CopyFromSource interface { Next() bool // Values returns the values for the current row. - Values() ([]interface{}, error) + Values() ([]any, error) // Err returns any error that has been encountered by the CopyFromSource. If // this is not nil *Conn.CopyFrom will abort the copy. @@ -156,10 +156,10 @@ func (ct *copyFrom) run(ctx context.Context) (int64, error) { if err == nil { if ct.conn.shouldLog(LogLevelInfo) { endTime := time.Now() - ct.conn.log(ctx, LogLevelInfo, "CopyFrom", map[string]interface{}{"tableName": ct.tableName, "columnNames": ct.columnNames, "time": endTime.Sub(startTime), "rowCount": rowsAffected}) + ct.conn.log(ctx, LogLevelInfo, "CopyFrom", map[string]any{"tableName": ct.tableName, "columnNames": ct.columnNames, "time": endTime.Sub(startTime), "rowCount": rowsAffected}) } } else if ct.conn.shouldLog(LogLevelError) { - ct.conn.log(ctx, LogLevelError, "CopyFrom", map[string]interface{}{"err": err, "tableName": ct.tableName, "columnNames": ct.columnNames}) + ct.conn.log(ctx, LogLevelError, "CopyFrom", map[string]any{"err": err, "tableName": ct.tableName, "columnNames": ct.columnNames}) } return rowsAffected, err diff --git a/copy_from_test.go b/copy_from_test.go index 54e2e52b..d979d2dc 100644 --- a/copy_from_test.go +++ b/copy_from_test.go @@ -32,7 +32,7 @@ func TestConnCopyFromSmall(t *testing.T) { tzedTime := time.Date(2010, 2, 3, 4, 5, 6, 0, time.Local) - inputRows := [][]interface{}{ + inputRows := [][]any{ {int16(0), int32(1), int64(2), "abc", "efg", time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC), tzedTime}, {nil, nil, nil, nil, nil, nil, nil}, } @@ -50,7 +50,7 @@ func TestConnCopyFromSmall(t *testing.T) { t.Errorf("Unexpected error for Query: %v", err) } - var outputRows [][]interface{} + var outputRows [][]any for rows.Next() { row, err := rows.Values() if err != nil { @@ -88,13 +88,13 @@ func TestConnCopyFromSliceSmall(t *testing.T) { tzedTime := time.Date(2010, 2, 3, 4, 5, 6, 0, time.Local) - inputRows := [][]interface{}{ + inputRows := [][]any{ {int16(0), int32(1), int64(2), "abc", "efg", time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC), tzedTime}, {nil, nil, nil, nil, nil, nil, nil}, } copyCount, err := conn.CopyFrom(context.Background(), pgx.Identifier{"foo"}, []string{"a", "b", "c", "d", "e", "f", "g"}, - pgx.CopyFromSlice(len(inputRows), func(i int) ([]interface{}, error) { + pgx.CopyFromSlice(len(inputRows), func(i int) ([]any, error) { return inputRows[i], nil })) if err != nil { @@ -109,7 +109,7 @@ func TestConnCopyFromSliceSmall(t *testing.T) { t.Errorf("Unexpected error for Query: %v", err) } - var outputRows [][]interface{} + var outputRows [][]any for rows.Next() { row, err := rows.Values() if err != nil { @@ -150,10 +150,10 @@ func TestConnCopyFromLarge(t *testing.T) { tzedTime := time.Date(2010, 2, 3, 4, 5, 6, 0, time.Local) - inputRows := [][]interface{}{} + inputRows := [][]any{} for i := 0; i < 10000; i++ { - inputRows = append(inputRows, []interface{}{int16(0), int32(1), int64(2), "abc", "efg", time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC), tzedTime, []byte{111, 111, 111, 111}}) + inputRows = append(inputRows, []any{int16(0), int32(1), int64(2), "abc", "efg", time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC), tzedTime, []byte{111, 111, 111, 111}}) } copyCount, err := conn.CopyFrom(context.Background(), pgx.Identifier{"foo"}, []string{"a", "b", "c", "d", "e", "f", "g", "h"}, pgx.CopyFromRows(inputRows)) @@ -169,7 +169,7 @@ func TestConnCopyFromLarge(t *testing.T) { t.Errorf("Unexpected error for Query: %v", err) } - var outputRows [][]interface{} + var outputRows [][]any for rows.Next() { row, err := rows.Values() if err != nil { @@ -230,7 +230,7 @@ func TestConnCopyFromEnum(t *testing.T) { )`) require.NoError(t, err) - inputRows := [][]interface{}{ + inputRows := [][]any{ {"abc", "blue", "grape", "orange", "orange", "def"}, {nil, nil, nil, nil, nil, nil}, } @@ -242,7 +242,7 @@ func TestConnCopyFromEnum(t *testing.T) { rows, err := conn.Query(ctx, "select * from foo") require.NoError(t, err) - var outputRows [][]interface{} + var outputRows [][]any for rows.Next() { row, err := rows.Values() require.NoError(t, err) @@ -275,8 +275,8 @@ func TestConnCopyFromJSON(t *testing.T) { b jsonb )`) - inputRows := [][]interface{}{ - {map[string]interface{}{"foo": "bar"}, map[string]interface{}{"bar": "quz"}}, + inputRows := [][]any{ + {map[string]any{"foo": "bar"}, map[string]any{"bar": "quz"}}, {nil, nil}, } @@ -293,7 +293,7 @@ func TestConnCopyFromJSON(t *testing.T) { t.Errorf("Unexpected error for Query: %v", err) } - var outputRows [][]interface{} + var outputRows [][]any for rows.Next() { row, err := rows.Values() if err != nil { @@ -323,12 +323,12 @@ func (cfs *clientFailSource) Next() bool { return cfs.count < 100 } -func (cfs *clientFailSource) Values() ([]interface{}, error) { +func (cfs *clientFailSource) Values() ([]any, error) { if cfs.count == 3 { cfs.err = fmt.Errorf("client error") return nil, cfs.err } - return []interface{}{make([]byte, 100000)}, nil + return []any{make([]byte, 100000)}, nil } func (cfs *clientFailSource) Err() error { @@ -346,7 +346,7 @@ func TestConnCopyFromFailServerSideMidway(t *testing.T) { b varchar not null )`) - inputRows := [][]interface{}{ + inputRows := [][]any{ {int32(1), "abc"}, {int32(2), nil}, // this row should trigger a failure {int32(3), "def"}, @@ -368,7 +368,7 @@ func TestConnCopyFromFailServerSideMidway(t *testing.T) { t.Errorf("Unexpected error for Query: %v", err) } - var outputRows [][]interface{} + var outputRows [][]any for rows.Next() { row, err := rows.Values() if err != nil { @@ -400,11 +400,11 @@ func (fs *failSource) Next() bool { return fs.count < 100 } -func (fs *failSource) Values() ([]interface{}, error) { +func (fs *failSource) Values() ([]any, error) { if fs.count == 3 { - return []interface{}{nil}, nil + return []any{nil}, nil } - return []interface{}{make([]byte, 100000)}, nil + return []any{make([]byte, 100000)}, nil } func (fs *failSource) Err() error { @@ -447,7 +447,7 @@ func TestConnCopyFromFailServerSideMidwayAbortsWithoutWaiting(t *testing.T) { t.Errorf("Unexpected error for Query: %v", err) } - var outputRows [][]interface{} + var outputRows [][]any for rows.Next() { row, err := rows.Values() if err != nil { @@ -477,11 +477,11 @@ func (fs *slowFailRaceSource) Next() bool { return fs.count < 1000 } -func (fs *slowFailRaceSource) Values() ([]interface{}, error) { +func (fs *slowFailRaceSource) Values() ([]any, error) { if fs.count == 500 { - return []interface{}{nil, nil}, nil + return []any{nil, nil}, nil } - return []interface{}{1, make([]byte, 1000)}, nil + return []any{1, make([]byte, 1000)}, nil } func (fs *slowFailRaceSource) Err() error { @@ -536,7 +536,7 @@ func TestConnCopyFromCopyFromSourceErrorMidway(t *testing.T) { t.Errorf("Unexpected error for Query: %v", err) } - var outputRows [][]interface{} + var outputRows [][]any for rows.Next() { row, err := rows.Values() if err != nil { @@ -565,8 +565,8 @@ func (cfs *clientFinalErrSource) Next() bool { return cfs.count < 5 } -func (cfs *clientFinalErrSource) Values() ([]interface{}, error) { - return []interface{}{make([]byte, 100000)}, nil +func (cfs *clientFinalErrSource) Values() ([]any, error) { + return []any{make([]byte, 100000)}, nil } func (cfs *clientFinalErrSource) Err() error { @@ -596,7 +596,7 @@ func TestConnCopyFromCopyFromSourceErrorEnd(t *testing.T) { t.Errorf("Unexpected error for Query: %v", err) } - var outputRows [][]interface{} + var outputRows [][]any for rows.Next() { row, err := rows.Values() if err != nil { diff --git a/doc.go b/doc.go index 222f9047..660cf5a3 100644 --- a/doc.go +++ b/doc.go @@ -88,8 +88,8 @@ QueryFunc can be used to execute a callback function for every row. This is ofte _, err = conn.QueryFunc( context.Background(), "select generate_series(1,$1)", - []interface{}{10}, - []interface{}{&n}, + []any{10}, + []any{&n}, func(pgx.QueryFuncRow) error { sum += n return nil @@ -273,10 +273,10 @@ for information on how to customize or disable the statement cache. Copy Protocol Use CopyFrom to efficiently insert multiple rows at a time using the PostgreSQL copy protocol. CopyFrom accepts a -CopyFromSource interface. If the data is already in a [][]interface{} use CopyFromRows to wrap it in a CopyFromSource +CopyFromSource interface. If the data is already in a [][]any use CopyFromRows to wrap it in a CopyFromSource interface. Or implement CopyFromSource to avoid buffering the entire data set in memory. - rows := [][]interface{}{ + rows := [][]any{ {"John", "Smith", int32(36)}, {"Jane", "Doe", int32(29)}, } @@ -299,8 +299,8 @@ When you already have a typed array using CopyFromSlice can be more convenient. context.Background(), pgx.Identifier{"people"}, []string{"first_name", "last_name", "age"}, - pgx.CopyFromSlice(len(rows), func(i int) ([]interface{}, error) { - return []interface{}{rows[i].FirstName, rows[i].LastName, rows[i].Age}, nil + pgx.CopyFromSlice(len(rows), func(i int) ([]any, error) { + return []any{rows[i].FirstName, rows[i].LastName, rows[i].Age}, nil }), ) diff --git a/extended_query_builder.go b/extended_query_builder.go index 0b6e1962..e69d0b36 100644 --- a/extended_query_builder.go +++ b/extended_query_builder.go @@ -12,12 +12,12 @@ type extendedQueryBuilder struct { resultFormats []int16 } -func (eqb *extendedQueryBuilder) AppendParam(m *pgtype.Map, oid uint32, arg interface{}) error { +func (eqb *extendedQueryBuilder) AppendParam(m *pgtype.Map, oid uint32, arg any) error { f := eqb.chooseParameterFormatCode(m, oid, arg) return eqb.AppendParamFormat(m, oid, f, arg) } -func (eqb *extendedQueryBuilder) AppendParamFormat(m *pgtype.Map, oid uint32, format int16, arg interface{}) error { +func (eqb *extendedQueryBuilder) AppendParamFormat(m *pgtype.Map, oid uint32, format int16, arg any) error { eqb.paramFormats = append(eqb.paramFormats, format) v, err := eqb.encodeExtendedParamValue(m, oid, format, arg) @@ -56,7 +56,7 @@ func (eqb *extendedQueryBuilder) Reset() { } } -func (eqb *extendedQueryBuilder) encodeExtendedParamValue(m *pgtype.Map, oid uint32, formatCode int16, arg interface{}) ([]byte, error) { +func (eqb *extendedQueryBuilder) encodeExtendedParamValue(m *pgtype.Map, oid uint32, formatCode int16, arg any) ([]byte, error) { if anynil.Is(arg) { return nil, nil } @@ -81,7 +81,7 @@ func (eqb *extendedQueryBuilder) encodeExtendedParamValue(m *pgtype.Map, oid uin // chooseParameterFormatCode determines the correct format code for an // argument to a prepared statement. It defaults to TextFormatCode if no // determination can be made. -func (eqb *extendedQueryBuilder) chooseParameterFormatCode(m *pgtype.Map, oid uint32, arg interface{}) int16 { +func (eqb *extendedQueryBuilder) chooseParameterFormatCode(m *pgtype.Map, oid uint32, arg any) int16 { switch arg.(type) { case string, *string: return TextFormatCode diff --git a/helper_test.go b/helper_test.go index 461dfcab..f091d23e 100644 --- a/helper_test.go +++ b/helper_test.go @@ -53,7 +53,7 @@ func closeConn(t testing.TB, conn *pgx.Conn) { } } -func mustExec(t testing.TB, conn *pgx.Conn, sql string, arguments ...interface{}) (commandTag pgconn.CommandTag) { +func mustExec(t testing.TB, conn *pgx.Conn, sql string, arguments ...any) (commandTag pgconn.CommandTag) { var err error if commandTag, err = conn.Exec(context.Background(), sql, arguments...); err != nil { t.Fatalf("Exec unexpectedly failed with %v: %v", sql, err) diff --git a/internal/anynil/anynil.go b/internal/anynil/anynil.go index 57a45b95..9a48c1a8 100644 --- a/internal/anynil/anynil.go +++ b/internal/anynil/anynil.go @@ -3,7 +3,7 @@ package anynil import "reflect" // Is returns true if value is any type of nil. e.g. nil or []byte(nil). -func Is(value interface{}) bool { +func Is(value any) bool { if value == nil { return true } @@ -18,7 +18,7 @@ func Is(value interface{}) bool { } // Normalize converts typed nils (e.g. []byte(nil)) into untyped nil. Other values are returned unmodified. -func Normalize(v interface{}) interface{} { +func Normalize(v any) any { if Is(v) { return nil } @@ -27,7 +27,7 @@ func Normalize(v interface{}) interface{} { // NormalizeSlice converts all typed nils (e.g. []byte(nil)) in s into untyped nils. Other values are unmodified. s is // mutated in place. -func NormalizeSlice(s []interface{}) { +func NormalizeSlice(s []any) { for i := range s { if Is(s[i]) { s[i] = nil diff --git a/internal/sanitize/sanitize.go b/internal/sanitize/sanitize.go index 2dba3b81..64e67ca6 100644 --- a/internal/sanitize/sanitize.go +++ b/internal/sanitize/sanitize.go @@ -12,13 +12,13 @@ import ( // Part is either a string or an int. A string is raw SQL. An int is a // argument placeholder. -type Part interface{} +type Part any type Query struct { Parts []Part } -func (q *Query) Sanitize(args ...interface{}) (string, error) { +func (q *Query) Sanitize(args ...any) (string, error) { argUse := make([]bool, len(args)) buf := &bytes.Buffer{} @@ -295,7 +295,7 @@ func multilineCommentState(l *sqlLexer) stateFn { // SanitizeSQL replaces placeholder values with args. It quotes and escapes args // as necessary. This function is only safe when standard_conforming_strings is // on. -func SanitizeSQL(sql string, args ...interface{}) (string, error) { +func SanitizeSQL(sql string, args ...any) (string, error) { query, err := NewQuery(sql) if err != nil { return "", err diff --git a/internal/sanitize/sanitize_test.go b/internal/sanitize/sanitize_test.go index acfac2ec..7b4c08ef 100644 --- a/internal/sanitize/sanitize_test.go +++ b/internal/sanitize/sanitize_test.go @@ -107,57 +107,57 @@ func TestNewQuery(t *testing.T) { func TestQuerySanitize(t *testing.T) { successfulTests := []struct { query sanitize.Query - args []interface{} + args []any expected string }{ { query: sanitize.Query{Parts: []sanitize.Part{"select 42"}}, - args: []interface{}{}, + args: []any{}, expected: `select 42`, }, { query: sanitize.Query{Parts: []sanitize.Part{"select ", 1}}, - args: []interface{}{int64(42)}, + args: []any{int64(42)}, expected: `select 42`, }, { query: sanitize.Query{Parts: []sanitize.Part{"select ", 1}}, - args: []interface{}{float64(1.23)}, + args: []any{float64(1.23)}, expected: `select 1.23`, }, { query: sanitize.Query{Parts: []sanitize.Part{"select ", 1}}, - args: []interface{}{true}, + args: []any{true}, expected: `select true`, }, { query: sanitize.Query{Parts: []sanitize.Part{"select ", 1}}, - args: []interface{}{[]byte{0, 1, 2, 3, 255}}, + args: []any{[]byte{0, 1, 2, 3, 255}}, expected: `select '\x00010203ff'`, }, { query: sanitize.Query{Parts: []sanitize.Part{"select ", 1}}, - args: []interface{}{nil}, + args: []any{nil}, expected: `select null`, }, { query: sanitize.Query{Parts: []sanitize.Part{"select ", 1}}, - args: []interface{}{"foobar"}, + args: []any{"foobar"}, expected: `select 'foobar'`, }, { query: sanitize.Query{Parts: []sanitize.Part{"select ", 1}}, - args: []interface{}{"foo'bar"}, + args: []any{"foo'bar"}, expected: `select 'foo''bar'`, }, { query: sanitize.Query{Parts: []sanitize.Part{"select ", 1}}, - args: []interface{}{`foo\'bar`}, + args: []any{`foo\'bar`}, expected: `select 'foo\''bar'`, }, { query: sanitize.Query{Parts: []sanitize.Part{"insert ", 1}}, - args: []interface{}{time.Date(2020, time.March, 1, 23, 59, 59, 999999999, time.UTC)}, + args: []any{time.Date(2020, time.March, 1, 23, 59, 59, 999999999, time.UTC)}, expected: `insert '2020-03-01 23:59:59.999999Z'`, }, } @@ -176,22 +176,22 @@ func TestQuerySanitize(t *testing.T) { errorTests := []struct { query sanitize.Query - args []interface{} + args []any expected string }{ { query: sanitize.Query{Parts: []sanitize.Part{"select ", 1, ", ", 2}}, - args: []interface{}{int64(42)}, + args: []any{int64(42)}, expected: `insufficient arguments`, }, { query: sanitize.Query{Parts: []sanitize.Part{"select 'foo'"}}, - args: []interface{}{int64(42)}, + args: []any{int64(42)}, expected: `unused argument: 0`, }, { query: sanitize.Query{Parts: []sanitize.Part{"select ", 1}}, - args: []interface{}{42}, + args: []any{42}, expected: `invalid arg type: int`, }, } diff --git a/log/testingadapter/adapter.go b/log/testingadapter/adapter.go index aa1b4bd6..65c14157 100644 --- a/log/testingadapter/adapter.go +++ b/log/testingadapter/adapter.go @@ -12,7 +12,7 @@ import ( // TestingLogger interface defines the subset of testing.TB methods used by this // adapter. type TestingLogger interface { - Log(args ...interface{}) + Log(args ...any) } type Logger struct { @@ -23,8 +23,8 @@ func NewLogger(l TestingLogger) *Logger { return &Logger{l: l} } -func (l *Logger) Log(ctx context.Context, level pgx.LogLevel, msg string, data map[string]interface{}) { - logArgs := make([]interface{}, 0, 2+len(data)) +func (l *Logger) Log(ctx context.Context, level pgx.LogLevel, msg string, data map[string]any) { + logArgs := make([]any, 0, 2+len(data)) logArgs = append(logArgs, level, msg) for k, v := range data { logArgs = append(logArgs, fmt.Sprintf("%s=%v", k, v)) diff --git a/logger.go b/logger.go index 89fd5af5..02a1e8e4 100644 --- a/logger.go +++ b/logger.go @@ -44,7 +44,7 @@ func (ll LogLevel) String() string { // Logger is the interface used to get logging from pgx internals. type Logger interface { // Log a message at the given level with data key/value pairs. data may be nil. - Log(ctx context.Context, level LogLevel, msg string, data map[string]interface{}) + Log(ctx context.Context, level LogLevel, msg string, data map[string]any) } // LogLevelFromString converts log level string to constant @@ -75,8 +75,8 @@ func LogLevelFromString(s string) (LogLevel, error) { } } -func logQueryArgs(args []interface{}) []interface{} { - logArgs := make([]interface{}, 0, len(args)) +func logQueryArgs(args []any) []any { + logArgs := make([]any, 0, len(args)) for _, a := range args { switch v := a.(type) { diff --git a/pgproto3/chunkreader.go b/pgproto3/chunkreader.go index 2d116c91..8834f521 100644 --- a/pgproto3/chunkreader.go +++ b/pgproto3/chunkreader.go @@ -20,7 +20,7 @@ func init() { for i := range bigBufPools { byteSize := bigBufSizes[i] bigBufPools[i] = &bigBufPool{ - pool: sync.Pool{New: func() interface{} { return make([]byte, byteSize) }}, + pool: sync.Pool{New: func() any { return make([]byte, byteSize) }}, byteSize: byteSize, } } diff --git a/pgtype/array_codec.go b/pgtype/array_codec.go index 84012083..379a9096 100644 --- a/pgtype/array_codec.go +++ b/pgtype/array_codec.go @@ -15,10 +15,10 @@ type ArrayGetter interface { Dimensions() []ArrayDimension // Index returns the element at i. - Index(i int) interface{} + Index(i int) any // IndexType returns a non-nil scan target of the type Index will return. This is used by ArrayCodec.PlanEncode. - IndexType() interface{} + IndexType() any } // ArraySetter is a type can be set from a PostgreSQL array. @@ -29,11 +29,11 @@ type ArraySetter interface { SetDimensions(dimensions []ArrayDimension) error // ScanIndex returns a value usable as a scan target for i. SetDimensions must be called before ScanIndex. - ScanIndex(i int) interface{} + ScanIndex(i int) any // ScanIndexType returns a non-nil scan target of the type ScanIndex will return. This is used by // ArrayCodec.PlanScan. - ScanIndexType() interface{} + ScanIndexType() any } // ArrayCodec is a codec for any array type. @@ -49,7 +49,7 @@ func (c *ArrayCodec) PreferredFormat() int16 { return c.ElementType.Codec.PreferredFormat() } -func (c *ArrayCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (c *ArrayCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { arrayValuer, ok := value.(ArrayGetter) if !ok { return nil @@ -78,7 +78,7 @@ type encodePlanArrayCodecText struct { oid uint32 } -func (p *encodePlanArrayCodecText) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (p *encodePlanArrayCodecText) Encode(value any, buf []byte) (newBuf []byte, err error) { array := value.(ArrayGetter) dimensions := array.Dimensions() @@ -157,7 +157,7 @@ type encodePlanArrayCodecBinary struct { oid uint32 } -func (p *encodePlanArrayCodecBinary) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (p *encodePlanArrayCodecBinary) Encode(value any, buf []byte) (newBuf []byte, err error) { array := value.(ArrayGetter) dimensions := array.Dimensions() @@ -210,7 +210,7 @@ func (p *encodePlanArrayCodecBinary) Encode(value interface{}, buf []byte) (newB return buf, nil } -func (c *ArrayCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (c *ArrayCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { arrayScanner, ok := target.(ArraySetter) if !ok { return nil @@ -315,7 +315,7 @@ type scanPlanArrayCodec struct { elementScanPlan ScanPlan } -func (spac *scanPlanArrayCodec) Scan(src []byte, dst interface{}) error { +func (spac *scanPlanArrayCodec) Scan(src []byte, dst any) error { c := spac.arrayCodec m := spac.m oid := spac.oid @@ -354,12 +354,12 @@ func (c *ArrayCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, sr } } -func (c *ArrayCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c *ArrayCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } - var slice []interface{} + var slice []any err := m.PlanScan(oid, format, &slice).Scan(src, &slice) return slice, err } diff --git a/pgtype/array_codec_test.go b/pgtype/array_codec_test.go index 55ab814e..e4c00d1e 100644 --- a/pgtype/array_codec_test.go +++ b/pgtype/array_codec_test.go @@ -12,7 +12,7 @@ import ( func TestArrayCodec(t *testing.T) { defaultConnTestRunner.RunTest(context.Background(), t, func(ctx context.Context, t testing.TB, conn *pgx.Conn) { for i, tt := range []struct { - expected interface{} + expected any }{ {[]int16(nil)}, {[]int16{}}, @@ -31,7 +31,7 @@ func TestArrayCodec(t *testing.T) { newInt16 := func(n int16) *int16 { return &n } for i, tt := range []struct { - expected interface{} + expected any }{ {[]*int16{newInt16(1), nil, newInt16(3), nil, newInt16(5)}}, } { @@ -52,7 +52,7 @@ func TestArrayCodecAnySlice(t *testing.T) { type _int16Slice []int16 for i, tt := range []struct { - expected interface{} + expected any }{ {_int16Slice(nil)}, {_int16Slice{}}, @@ -74,19 +74,19 @@ func TestArrayCodecDecodeValue(t *testing.T) { defaultConnTestRunner.RunTest(context.Background(), t, func(ctx context.Context, _ testing.TB, conn *pgx.Conn) { for _, tt := range []struct { sql string - expected interface{} + expected any }{ { sql: `select '{}'::int4[]`, - expected: []interface{}{}, + expected: []any{}, }, { sql: `select '{1,2}'::int8[]`, - expected: []interface{}{int64(1), int64(2)}, + expected: []any{int64(1), int64(2)}, }, { sql: `select '{foo,bar}'::text[]`, - expected: []interface{}{"foo", "bar"}, + expected: []any{"foo", "bar"}, }, } { t.Run(tt.sql, func(t *testing.T) { diff --git a/pgtype/array_getter_setter.go b/pgtype/array_getter_setter.go index 2e20f9ec..b0c6b505 100644 --- a/pgtype/array_getter_setter.go +++ b/pgtype/array_getter_setter.go @@ -11,11 +11,11 @@ func (a int16Array) Dimensions() []ArrayDimension { return []ArrayDimension{{Length: int32(len(a)), LowerBound: 1}} } -func (a int16Array) Index(i int) interface{} { +func (a int16Array) Index(i int) any { return a[i] } -func (a int16Array) IndexType() interface{} { +func (a int16Array) IndexType() any { var el int16 return el } @@ -31,11 +31,11 @@ func (a *int16Array) SetDimensions(dimensions []ArrayDimension) error { return nil } -func (a int16Array) ScanIndex(i int) interface{} { +func (a int16Array) ScanIndex(i int) any { return &a[i] } -func (a int16Array) ScanIndexType() interface{} { +func (a int16Array) ScanIndexType() any { return new(int16) } @@ -49,11 +49,11 @@ func (a uint16Array) Dimensions() []ArrayDimension { return []ArrayDimension{{Length: int32(len(a)), LowerBound: 1}} } -func (a uint16Array) Index(i int) interface{} { +func (a uint16Array) Index(i int) any { return a[i] } -func (a uint16Array) IndexType() interface{} { +func (a uint16Array) IndexType() any { var el uint16 return el } @@ -69,10 +69,10 @@ func (a *uint16Array) SetDimensions(dimensions []ArrayDimension) error { return nil } -func (a uint16Array) ScanIndex(i int) interface{} { +func (a uint16Array) ScanIndex(i int) any { return &a[i] } -func (a uint16Array) ScanIndexType() interface{} { +func (a uint16Array) ScanIndexType() any { return new(uint16) } diff --git a/pgtype/array_getter_setter.go.erb b/pgtype/array_getter_setter.go.erb index a9d60d35..1c8cdff4 100644 --- a/pgtype/array_getter_setter.go.erb +++ b/pgtype/array_getter_setter.go.erb @@ -23,11 +23,11 @@ import ( return []ArrayDimension{{Length: int32(len(a)), LowerBound: 1}} } - func (a <%= array_type %>) Index(i int) interface{} { + func (a <%= array_type %>) Index(i int) any { return a[i] } - func (a <%= array_type %>) IndexType() interface{} { + func (a <%= array_type %>) IndexType() any { var el <%= element_type %> return el } @@ -43,11 +43,11 @@ import ( return nil } - func (a <%= array_type %>) ScanIndex(i int) interface{} { + func (a <%= array_type %>) ScanIndex(i int) any { return &a[i] } - func (a <%= array_type %>) ScanIndexType() interface{} { + func (a <%= array_type %>) ScanIndexType() any { return new(<%= element_type %>) } <% end %> diff --git a/pgtype/bits.go b/pgtype/bits.go index 5b0671ca..30558118 100644 --- a/pgtype/bits.go +++ b/pgtype/bits.go @@ -33,7 +33,7 @@ func (b Bits) BitsValue() (Bits, error) { } // Scan implements the database/sql Scanner interface. -func (dst *Bits) Scan(src interface{}) error { +func (dst *Bits) Scan(src any) error { if src == nil { *dst = Bits{} return nil @@ -70,7 +70,7 @@ func (BitsCodec) PreferredFormat() int16 { return BinaryFormatCode } -func (BitsCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (BitsCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { if _, ok := value.(BitsValuer); !ok { return nil } @@ -87,7 +87,7 @@ func (BitsCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) type encodePlanBitsCodecBinary struct{} -func (encodePlanBitsCodecBinary) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanBitsCodecBinary) Encode(value any, buf []byte) (newBuf []byte, err error) { bits, err := value.(BitsValuer).BitsValue() if err != nil { return nil, err @@ -103,7 +103,7 @@ func (encodePlanBitsCodecBinary) Encode(value interface{}, buf []byte) (newBuf [ type encodePlanBitsCodecText struct{} -func (encodePlanBitsCodecText) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanBitsCodecText) Encode(value any, buf []byte) (newBuf []byte, err error) { bits, err := value.(BitsValuer).BitsValue() if err != nil { return nil, err @@ -126,7 +126,7 @@ func (encodePlanBitsCodecText) Encode(value interface{}, buf []byte) (newBuf []b return buf, nil } -func (BitsCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (BitsCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: @@ -148,7 +148,7 @@ func (c BitsCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, src return codecDecodeToTextFormat(c, m, oid, format, src) } -func (c BitsCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c BitsCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } @@ -163,7 +163,7 @@ func (c BitsCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (in type scanPlanBinaryBitsToBitsScanner struct{} -func (scanPlanBinaryBitsToBitsScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryBitsToBitsScanner) Scan(src []byte, dst any) error { scanner := (dst).(BitsScanner) if src == nil { @@ -182,7 +182,7 @@ func (scanPlanBinaryBitsToBitsScanner) Scan(src []byte, dst interface{}) error { type scanPlanTextAnyToBitsScanner struct{} -func (scanPlanTextAnyToBitsScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToBitsScanner) Scan(src []byte, dst any) error { scanner := (dst).(BitsScanner) if src == nil { diff --git a/pgtype/bits_test.go b/pgtype/bits_test.go index 3ca3b0c0..767f0d2b 100644 --- a/pgtype/bits_test.go +++ b/pgtype/bits_test.go @@ -9,8 +9,8 @@ import ( "github.com/jackc/pgx/v5/pgxtest" ) -func isExpectedEqBits(a interface{}) func(interface{}) bool { - return func(v interface{}) bool { +func isExpectedEqBits(a any) func(any) bool { + return func(v any) bool { ab := a.(pgtype.Bits) vb := v.(pgtype.Bits) return bytes.Compare(ab.Bytes, vb.Bytes) == 0 && ab.Len == vb.Len && ab.Valid == vb.Valid diff --git a/pgtype/bool.go b/pgtype/bool.go index 24ae5c5f..6f3ef8ca 100644 --- a/pgtype/bool.go +++ b/pgtype/bool.go @@ -30,7 +30,7 @@ func (b Bool) BoolValue() (Bool, error) { } // Scan implements the database/sql Scanner interface. -func (dst *Bool) Scan(src interface{}) error { +func (dst *Bool) Scan(src any) error { if src == nil { *dst = Bool{} return nil @@ -106,7 +106,7 @@ func (BoolCodec) PreferredFormat() int16 { return BinaryFormatCode } -func (BoolCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (BoolCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { switch format { case BinaryFormatCode: switch value.(type) { @@ -129,7 +129,7 @@ func (BoolCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) type encodePlanBoolCodecBinaryBool struct{} -func (encodePlanBoolCodecBinaryBool) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanBoolCodecBinaryBool) Encode(value any, buf []byte) (newBuf []byte, err error) { v := value.(bool) if v { @@ -143,7 +143,7 @@ func (encodePlanBoolCodecBinaryBool) Encode(value interface{}, buf []byte) (newB type encodePlanBoolCodecTextBoolValuer struct{} -func (encodePlanBoolCodecTextBoolValuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanBoolCodecTextBoolValuer) Encode(value any, buf []byte) (newBuf []byte, err error) { b, err := value.(BoolValuer).BoolValue() if err != nil { return nil, err @@ -164,7 +164,7 @@ func (encodePlanBoolCodecTextBoolValuer) Encode(value interface{}, buf []byte) ( type encodePlanBoolCodecBinaryBoolValuer struct{} -func (encodePlanBoolCodecBinaryBoolValuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanBoolCodecBinaryBoolValuer) Encode(value any, buf []byte) (newBuf []byte, err error) { b, err := value.(BoolValuer).BoolValue() if err != nil { return nil, err @@ -185,7 +185,7 @@ func (encodePlanBoolCodecBinaryBoolValuer) Encode(value interface{}, buf []byte) type encodePlanBoolCodecTextBool struct{} -func (encodePlanBoolCodecTextBool) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanBoolCodecTextBool) Encode(value any, buf []byte) (newBuf []byte, err error) { v := value.(bool) if v { @@ -197,7 +197,7 @@ func (encodePlanBoolCodecTextBool) Encode(value interface{}, buf []byte) (newBuf return buf, nil } -func (BoolCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (BoolCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: @@ -223,7 +223,7 @@ func (c BoolCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, src return c.DecodeValue(m, oid, format, src) } -func (c BoolCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c BoolCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } @@ -238,7 +238,7 @@ func (c BoolCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (in type scanPlanBinaryBoolToBool struct{} -func (scanPlanBinaryBoolToBool) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryBoolToBool) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -259,7 +259,7 @@ func (scanPlanBinaryBoolToBool) Scan(src []byte, dst interface{}) error { type scanPlanTextAnyToBool struct{} -func (scanPlanTextAnyToBool) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToBool) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -280,7 +280,7 @@ func (scanPlanTextAnyToBool) Scan(src []byte, dst interface{}) error { type scanPlanBinaryBoolToBoolScanner struct{} -func (scanPlanBinaryBoolToBoolScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryBoolToBoolScanner) Scan(src []byte, dst any) error { s, ok := (dst).(BoolScanner) if !ok { return ErrScanTargetTypeChanged @@ -299,7 +299,7 @@ func (scanPlanBinaryBoolToBoolScanner) Scan(src []byte, dst interface{}) error { type scanPlanTextAnyToBoolScanner struct{} -func (scanPlanTextAnyToBoolScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToBoolScanner) Scan(src []byte, dst any) error { s, ok := (dst).(BoolScanner) if !ok { return ErrScanTargetTypeChanged diff --git a/pgtype/box.go b/pgtype/box.go index d6087eab..887d268b 100644 --- a/pgtype/box.go +++ b/pgtype/box.go @@ -34,7 +34,7 @@ func (b Box) BoxValue() (Box, error) { } // Scan implements the database/sql Scanner interface. -func (dst *Box) Scan(src interface{}) error { +func (dst *Box) Scan(src any) error { if src == nil { *dst = Box{} return nil @@ -71,7 +71,7 @@ func (BoxCodec) PreferredFormat() int16 { return BinaryFormatCode } -func (BoxCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (BoxCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { if _, ok := value.(BoxValuer); !ok { return nil } @@ -88,7 +88,7 @@ func (BoxCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) type encodePlanBoxCodecBinary struct{} -func (encodePlanBoxCodecBinary) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanBoxCodecBinary) Encode(value any, buf []byte) (newBuf []byte, err error) { box, err := value.(BoxValuer).BoxValue() if err != nil { return nil, err @@ -107,7 +107,7 @@ func (encodePlanBoxCodecBinary) Encode(value interface{}, buf []byte) (newBuf [] type encodePlanBoxCodecText struct{} -func (encodePlanBoxCodecText) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanBoxCodecText) Encode(value any, buf []byte) (newBuf []byte, err error) { box, err := value.(BoxValuer).BoxValue() if err != nil { return nil, err @@ -126,7 +126,7 @@ func (encodePlanBoxCodecText) Encode(value interface{}, buf []byte) (newBuf []by return buf, nil } -func (BoxCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (BoxCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: @@ -146,7 +146,7 @@ func (BoxCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) S type scanPlanBinaryBoxToBoxScanner struct{} -func (scanPlanBinaryBoxToBoxScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryBoxToBoxScanner) Scan(src []byte, dst any) error { scanner := (dst).(BoxScanner) if src == nil { @@ -173,7 +173,7 @@ func (scanPlanBinaryBoxToBoxScanner) Scan(src []byte, dst interface{}) error { type scanPlanTextAnyToBoxScanner struct{} -func (scanPlanTextAnyToBoxScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToBoxScanner) Scan(src []byte, dst any) error { scanner := (dst).(BoxScanner) if src == nil { @@ -224,7 +224,7 @@ func (c BoxCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, src [ return codecDecodeToTextFormat(c, m, oid, format, src) } -func (c BoxCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c BoxCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } diff --git a/pgtype/builtin_wrappers.go b/pgtype/builtin_wrappers.go index 0f12ada3..b385b80a 100644 --- a/pgtype/builtin_wrappers.go +++ b/pgtype/builtin_wrappers.go @@ -603,7 +603,7 @@ func (w byteSliceWrapper) UUIDValue() (UUID, error) { // structWrapper implements CompositeIndexGetter for a struct. type structWrapper struct { - s interface{} + s any exportedFields []reflect.Value } @@ -611,7 +611,7 @@ func (w structWrapper) IsNull() bool { return w.s == nil } -func (w structWrapper) Index(i int) interface{} { +func (w structWrapper) Index(i int) any { if i >= len(w.exportedFields) { return fmt.Errorf("%#v only has %d public fields - %d is out of bounds", w.s, len(w.exportedFields), i) } @@ -621,7 +621,7 @@ func (w structWrapper) Index(i int) interface{} { // ptrStructWrapper implements CompositeIndexScanner for a pointer to a struct. type ptrStructWrapper struct { - s interface{} + s any exportedFields []reflect.Value } @@ -629,7 +629,7 @@ func (w *ptrStructWrapper) ScanNull() error { return fmt.Errorf("cannot scan NULL into %#v", w.s) } -func (w *ptrStructWrapper) ScanIndex(i int) interface{} { +func (w *ptrStructWrapper) ScanIndex(i int) any { if i >= len(w.exportedFields) { return fmt.Errorf("%#v only has %d public fields - %d is out of bounds", w.s, len(w.exportedFields), i) } @@ -649,11 +649,11 @@ func (a anySliceArray) Dimensions() []ArrayDimension { return []ArrayDimension{{Length: int32(a.slice.Len()), LowerBound: 1}} } -func (a anySliceArray) Index(i int) interface{} { +func (a anySliceArray) Index(i int) any { return a.slice.Index(i).Interface() } -func (a anySliceArray) IndexType() interface{} { +func (a anySliceArray) IndexType() any { return reflect.New(a.slice.Type().Elem()).Elem().Interface() } @@ -671,11 +671,11 @@ func (a *anySliceArray) SetDimensions(dimensions []ArrayDimension) error { return nil } -func (a *anySliceArray) ScanIndex(i int) interface{} { +func (a *anySliceArray) ScanIndex(i int) any { return a.slice.Index(i).Addr().Interface() } -func (a *anySliceArray) ScanIndexType() interface{} { +func (a *anySliceArray) ScanIndexType() any { return reflect.New(a.slice.Type().Elem()).Interface() } @@ -706,7 +706,7 @@ func (a *anyMultiDimSliceArray) Dimensions() []ArrayDimension { return a.dims } -func (a *anyMultiDimSliceArray) Index(i int) interface{} { +func (a *anyMultiDimSliceArray) Index(i int) any { if len(a.dims) == 1 { return a.slice.Index(i).Interface() } @@ -726,7 +726,7 @@ func (a *anyMultiDimSliceArray) Index(i int) interface{} { return v.Interface() } -func (a *anyMultiDimSliceArray) IndexType() interface{} { +func (a *anyMultiDimSliceArray) IndexType() any { lowestSliceType := a.slice.Type() for ; lowestSliceType.Elem().Kind() == reflect.Slice; lowestSliceType = lowestSliceType.Elem() { } @@ -794,11 +794,11 @@ func (a *anyMultiDimSliceArray) makeMultidimensionalSlice(sliceType reflect.Type return slice } -func (a *anyMultiDimSliceArray) ScanIndex(i int) interface{} { +func (a *anyMultiDimSliceArray) ScanIndex(i int) any { return a.slice.Index(i).Addr().Interface() } -func (a *anyMultiDimSliceArray) ScanIndexType() interface{} { +func (a *anyMultiDimSliceArray) ScanIndexType() any { lowestSliceType := a.slice.Type() for ; lowestSliceType.Elem().Kind() == reflect.Slice; lowestSliceType = lowestSliceType.Elem() { } diff --git a/pgtype/bytea.go b/pgtype/bytea.go index f3c33cb9..51994005 100644 --- a/pgtype/bytea.go +++ b/pgtype/bytea.go @@ -50,7 +50,7 @@ type UndecodedBytes []byte type scanPlanAnyToUndecodedBytes struct{} -func (scanPlanAnyToUndecodedBytes) Scan(src []byte, dst interface{}) error { +func (scanPlanAnyToUndecodedBytes) Scan(src []byte, dst any) error { dstBuf := dst.(*UndecodedBytes) if src == nil { *dstBuf = nil @@ -72,7 +72,7 @@ func (ByteaCodec) PreferredFormat() int16 { return BinaryFormatCode } -func (ByteaCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (ByteaCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { switch format { case BinaryFormatCode: switch value.(type) { @@ -95,7 +95,7 @@ func (ByteaCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{} type encodePlanBytesCodecBinaryBytes struct{} -func (encodePlanBytesCodecBinaryBytes) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanBytesCodecBinaryBytes) Encode(value any, buf []byte) (newBuf []byte, err error) { b := value.([]byte) if b == nil { return nil, nil @@ -106,7 +106,7 @@ func (encodePlanBytesCodecBinaryBytes) Encode(value interface{}, buf []byte) (ne type encodePlanBytesCodecBinaryBytesValuer struct{} -func (encodePlanBytesCodecBinaryBytesValuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanBytesCodecBinaryBytesValuer) Encode(value any, buf []byte) (newBuf []byte, err error) { b, err := value.(BytesValuer).BytesValue() if err != nil { return nil, err @@ -120,7 +120,7 @@ func (encodePlanBytesCodecBinaryBytesValuer) Encode(value interface{}, buf []byt type encodePlanBytesCodecTextBytes struct{} -func (encodePlanBytesCodecTextBytes) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanBytesCodecTextBytes) Encode(value any, buf []byte) (newBuf []byte, err error) { b := value.([]byte) if b == nil { return nil, nil @@ -133,7 +133,7 @@ func (encodePlanBytesCodecTextBytes) Encode(value interface{}, buf []byte) (newB type encodePlanBytesCodecTextBytesValuer struct{} -func (encodePlanBytesCodecTextBytesValuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanBytesCodecTextBytesValuer) Encode(value any, buf []byte) (newBuf []byte, err error) { b, err := value.(BytesValuer).BytesValue() if err != nil { return nil, err @@ -147,7 +147,7 @@ func (encodePlanBytesCodecTextBytesValuer) Encode(value interface{}, buf []byte) return buf, nil } -func (ByteaCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (ByteaCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: @@ -171,7 +171,7 @@ func (ByteaCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) type scanPlanBinaryBytesToBytes struct{} -func (scanPlanBinaryBytesToBytes) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryBytesToBytes) Scan(src []byte, dst any) error { dstBuf := dst.(*[]byte) if src == nil { *dstBuf = nil @@ -185,14 +185,14 @@ func (scanPlanBinaryBytesToBytes) Scan(src []byte, dst interface{}) error { type scanPlanBinaryBytesToBytesScanner struct{} -func (scanPlanBinaryBytesToBytesScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryBytesToBytesScanner) Scan(src []byte, dst any) error { scanner := (dst).(BytesScanner) return scanner.ScanBytes(src) } type scanPlanTextByteaToBytes struct{} -func (scanPlanTextByteaToBytes) Scan(src []byte, dst interface{}) error { +func (scanPlanTextByteaToBytes) Scan(src []byte, dst any) error { dstBuf := dst.(*[]byte) if src == nil { *dstBuf = nil @@ -210,7 +210,7 @@ func (scanPlanTextByteaToBytes) Scan(src []byte, dst interface{}) error { type scanPlanTextByteaToBytesScanner struct{} -func (scanPlanTextByteaToBytesScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanTextByteaToBytesScanner) Scan(src []byte, dst any) error { scanner := (dst).(BytesScanner) buf, err := decodeHexBytea(src) if err != nil { @@ -241,7 +241,7 @@ func (c ByteaCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, src return codecDecodeToTextFormat(c, m, oid, format, src) } -func (c ByteaCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c ByteaCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } diff --git a/pgtype/bytea_test.go b/pgtype/bytea_test.go index 7a348ebb..a0d27369 100644 --- a/pgtype/bytea_test.go +++ b/pgtype/bytea_test.go @@ -11,8 +11,8 @@ import ( "github.com/stretchr/testify/require" ) -func isExpectedEqBytes(a interface{}) func(interface{}) bool { - return func(v interface{}) bool { +func isExpectedEqBytes(a any) func(any) bool { + return func(v any) bool { ab := a.([]byte) vb := v.([]byte) diff --git a/pgtype/circle.go b/pgtype/circle.go index 4b499a12..e8f118cc 100644 --- a/pgtype/circle.go +++ b/pgtype/circle.go @@ -35,7 +35,7 @@ func (c Circle) CircleValue() (Circle, error) { } // Scan implements the database/sql Scanner interface. -func (dst *Circle) Scan(src interface{}) error { +func (dst *Circle) Scan(src any) error { if src == nil { *dst = Circle{} return nil @@ -72,7 +72,7 @@ func (CircleCodec) PreferredFormat() int16 { return BinaryFormatCode } -func (CircleCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (CircleCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { if _, ok := value.(CircleValuer); !ok { return nil } @@ -89,7 +89,7 @@ func (CircleCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{ type encodePlanCircleCodecBinary struct{} -func (encodePlanCircleCodecBinary) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanCircleCodecBinary) Encode(value any, buf []byte) (newBuf []byte, err error) { circle, err := value.(CircleValuer).CircleValue() if err != nil { return nil, err @@ -107,7 +107,7 @@ func (encodePlanCircleCodecBinary) Encode(value interface{}, buf []byte) (newBuf type encodePlanCircleCodecText struct{} -func (encodePlanCircleCodecText) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanCircleCodecText) Encode(value any, buf []byte) (newBuf []byte, err error) { circle, err := value.(CircleValuer).CircleValue() if err != nil { return nil, err @@ -125,7 +125,7 @@ func (encodePlanCircleCodecText) Encode(value interface{}, buf []byte) (newBuf [ return buf, nil } -func (CircleCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (CircleCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: switch target.(type) { @@ -146,7 +146,7 @@ func (c CircleCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, sr return codecDecodeToTextFormat(c, m, oid, format, src) } -func (c CircleCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c CircleCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } @@ -161,7 +161,7 @@ func (c CircleCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) ( type scanPlanBinaryCircleToCircleScanner struct{} -func (scanPlanBinaryCircleToCircleScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryCircleToCircleScanner) Scan(src []byte, dst any) error { scanner := (dst).(CircleScanner) if src == nil { @@ -185,7 +185,7 @@ func (scanPlanBinaryCircleToCircleScanner) Scan(src []byte, dst interface{}) err type scanPlanTextAnyToCircleScanner struct{} -func (scanPlanTextAnyToCircleScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToCircleScanner) Scan(src []byte, dst any) error { scanner := (dst).(CircleScanner) if src == nil { diff --git a/pgtype/composite.go b/pgtype/composite.go index af6ed28b..fb372325 100644 --- a/pgtype/composite.go +++ b/pgtype/composite.go @@ -16,7 +16,7 @@ type CompositeIndexGetter interface { IsNull() bool // Index returns the element at i. - Index(i int) interface{} + Index(i int) any } // CompositeIndexScanner is a type accessed by index that can be scanned from a PostgreSQL composite. @@ -25,7 +25,7 @@ type CompositeIndexScanner interface { ScanNull() error // ScanIndex returns a value usable as a scan target for i. - ScanIndex(i int) interface{} + ScanIndex(i int) any } type CompositeCodecField struct { @@ -54,7 +54,7 @@ func (c *CompositeCodec) PreferredFormat() int16 { return TextFormatCode } -func (c *CompositeCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (c *CompositeCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { if _, ok := value.(CompositeIndexGetter); !ok { return nil } @@ -74,7 +74,7 @@ type encodePlanCompositeCodecCompositeIndexGetterToBinary struct { m *Map } -func (plan *encodePlanCompositeCodecCompositeIndexGetterToBinary) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *encodePlanCompositeCodecCompositeIndexGetterToBinary) Encode(value any, buf []byte) (newBuf []byte, err error) { getter := value.(CompositeIndexGetter) if getter.IsNull() { @@ -94,7 +94,7 @@ type encodePlanCompositeCodecCompositeIndexGetterToText struct { m *Map } -func (plan *encodePlanCompositeCodecCompositeIndexGetterToText) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *encodePlanCompositeCodecCompositeIndexGetterToText) Encode(value any, buf []byte) (newBuf []byte, err error) { getter := value.(CompositeIndexGetter) if getter.IsNull() { @@ -109,7 +109,7 @@ func (plan *encodePlanCompositeCodecCompositeIndexGetterToText) Encode(value int return b.Finish() } -func (c *CompositeCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (c *CompositeCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: switch target.(type) { @@ -131,7 +131,7 @@ type scanPlanBinaryCompositeToCompositeIndexScanner struct { m *Map } -func (plan *scanPlanBinaryCompositeToCompositeIndexScanner) Scan(src []byte, target interface{}) error { +func (plan *scanPlanBinaryCompositeToCompositeIndexScanner) Scan(src []byte, target any) error { targetScanner := (target).(CompositeIndexScanner) if src == nil { @@ -170,7 +170,7 @@ type scanPlanTextCompositeToCompositeIndexScanner struct { m *Map } -func (plan *scanPlanTextCompositeToCompositeIndexScanner) Scan(src []byte, target interface{}) error { +func (plan *scanPlanTextCompositeToCompositeIndexScanner) Scan(src []byte, target any) error { targetScanner := (target).(CompositeIndexScanner) if src == nil { @@ -221,7 +221,7 @@ func (c *CompositeCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16 } } -func (c *CompositeCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c *CompositeCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } @@ -229,9 +229,9 @@ func (c *CompositeCodec) DecodeValue(m *Map, oid uint32, format int16, src []byt switch format { case TextFormatCode: scanner := NewCompositeTextScanner(m, src) - values := make(map[string]interface{}, len(c.Fields)) + values := make(map[string]any, len(c.Fields)) for i := 0; scanner.Next() && i < len(c.Fields); i++ { - var v interface{} + var v any fieldPlan := m.PlanScan(c.Fields[i].Type.OID, TextFormatCode, &v) if fieldPlan == nil { return nil, fmt.Errorf("unable to scan OID %d in text format into %v", c.Fields[i].Type.OID, v) @@ -252,9 +252,9 @@ func (c *CompositeCodec) DecodeValue(m *Map, oid uint32, format int16, src []byt return values, nil case BinaryFormatCode: scanner := NewCompositeBinaryScanner(m, src) - values := make(map[string]interface{}, len(c.Fields)) + values := make(map[string]any, len(c.Fields)) for i := 0; scanner.Next() && i < len(c.Fields); i++ { - var v interface{} + var v any fieldPlan := m.PlanScan(scanner.OID(), BinaryFormatCode, &v) if fieldPlan == nil { return nil, fmt.Errorf("unable to scan OID %d in binary format into %v", scanner.OID(), v) @@ -472,7 +472,7 @@ func NewCompositeBinaryBuilder(m *Map, buf []byte) *CompositeBinaryBuilder { return &CompositeBinaryBuilder{m: m, buf: buf, startIdx: startIdx} } -func (b *CompositeBinaryBuilder) AppendValue(oid uint32, field interface{}) { +func (b *CompositeBinaryBuilder) AppendValue(oid uint32, field any) { if b.err != nil { return } @@ -529,7 +529,7 @@ func NewCompositeTextBuilder(m *Map, buf []byte) *CompositeTextBuilder { return &CompositeTextBuilder{m: m, buf: buf} } -func (b *CompositeTextBuilder) AppendValue(oid uint32, field interface{}) { +func (b *CompositeTextBuilder) AppendValue(oid uint32, field any) { if b.err != nil { return } @@ -581,7 +581,7 @@ func quoteCompositeFieldIfNeeded(src string) string { // CompositeFields represents the values of a composite value. It can be used as an encoding source or as a scan target. // It cannot scan a NULL, but the composite fields can be NULL. -type CompositeFields []interface{} +type CompositeFields []any func (cf CompositeFields) SkipUnderlyingTypePlan() {} @@ -589,7 +589,7 @@ func (cf CompositeFields) IsNull() bool { return cf == nil } -func (cf CompositeFields) Index(i int) interface{} { +func (cf CompositeFields) Index(i int) any { return cf[i] } @@ -597,6 +597,6 @@ func (cf CompositeFields) ScanNull() error { return fmt.Errorf("cannot scan NULL into CompositeFields") } -func (cf CompositeFields) ScanIndex(i int) interface{} { +func (cf CompositeFields) ScanIndex(i int) any { return cf[i] } diff --git a/pgtype/composite_test.go b/pgtype/composite_test.go index 559403d8..a6fa8315 100644 --- a/pgtype/composite_test.go +++ b/pgtype/composite_test.go @@ -60,7 +60,7 @@ func (p point3d) IsNull() bool { return false } -func (p point3d) Index(i int) interface{} { +func (p point3d) Index(i int) any { switch i { case 0: return p.X @@ -77,7 +77,7 @@ func (p *point3d) ScanNull() error { return fmt.Errorf("cannot scan NULL into point3d") } -func (p *point3d) ScanIndex(i int) interface{} { +func (p *point3d) ScanIndex(i int) any { switch i { case 0: return &p.X @@ -202,7 +202,7 @@ create type point3d as ( values, err := rows.Values() require.NoErrorf(t, err, "%v", format.name) require.Lenf(t, values, 1, "%v", format.name) - require.Equalf(t, map[string]interface{}{"x": 1.0, "y": 2.0, "z": 3.0}, values[0], "%v", format.name) + require.Equalf(t, map[string]any{"x": 1.0, "y": 2.0, "z": 3.0}, values[0], "%v", format.name) require.False(t, rows.Next()) require.NoErrorf(t, rows.Err(), "%v", format.name) } diff --git a/pgtype/convert.go b/pgtype/convert.go index 21e208f5..31ce11e5 100644 --- a/pgtype/convert.go +++ b/pgtype/convert.go @@ -15,7 +15,7 @@ const ( ) // underlyingNumberType gets the underlying type that can be converted to Int2, Int4, Int8, Float4, or Float8 -func underlyingNumberType(val interface{}) (interface{}, bool) { +func underlyingNumberType(val any) (any, bool) { refVal := reflect.ValueOf(val) switch refVal.Kind() { @@ -70,7 +70,7 @@ func underlyingNumberType(val interface{}) (interface{}, bool) { } // underlyingBoolType gets the underlying type that can be converted to Bool -func underlyingBoolType(val interface{}) (interface{}, bool) { +func underlyingBoolType(val any) (any, bool) { refVal := reflect.ValueOf(val) switch refVal.Kind() { @@ -89,7 +89,7 @@ func underlyingBoolType(val interface{}) (interface{}, bool) { } // underlyingBytesType gets the underlying type that can be converted to []byte -func underlyingBytesType(val interface{}) (interface{}, bool) { +func underlyingBytesType(val any) (any, bool) { refVal := reflect.ValueOf(val) switch refVal.Kind() { @@ -110,7 +110,7 @@ func underlyingBytesType(val interface{}) (interface{}, bool) { } // underlyingStringType gets the underlying type that can be converted to String -func underlyingStringType(val interface{}) (interface{}, bool) { +func underlyingStringType(val any) (any, bool) { refVal := reflect.ValueOf(val) switch refVal.Kind() { @@ -129,7 +129,7 @@ func underlyingStringType(val interface{}) (interface{}, bool) { } // underlyingPtrType dereferences a pointer -func underlyingPtrType(val interface{}) (interface{}, bool) { +func underlyingPtrType(val any) (any, bool) { refVal := reflect.ValueOf(val) switch refVal.Kind() { @@ -145,7 +145,7 @@ func underlyingPtrType(val interface{}) (interface{}, bool) { } // underlyingTimeType gets the underlying type that can be converted to time.Time -func underlyingTimeType(val interface{}) (interface{}, bool) { +func underlyingTimeType(val any) (any, bool) { refVal := reflect.ValueOf(val) switch refVal.Kind() { @@ -166,7 +166,7 @@ func underlyingTimeType(val interface{}) (interface{}, bool) { } // underlyingUUIDType gets the underlying type that can be converted to [16]byte -func underlyingUUIDType(val interface{}) (interface{}, bool) { +func underlyingUUIDType(val any) (any, bool) { refVal := reflect.ValueOf(val) switch refVal.Kind() { @@ -187,7 +187,7 @@ func underlyingUUIDType(val interface{}) (interface{}, bool) { } // underlyingSliceType gets the underlying slice type -func underlyingSliceType(val interface{}) (interface{}, bool) { +func underlyingSliceType(val any) (any, bool) { refVal := reflect.ValueOf(val) switch refVal.Kind() { @@ -208,7 +208,7 @@ func underlyingSliceType(val interface{}) (interface{}, bool) { return nil, false } -func int64AssignTo(srcVal int64, srcValid bool, dst interface{}) error { +func int64AssignTo(srcVal int64, srcValid bool, dst any) error { if srcValid { switch v := dst.(type) { case *int: @@ -326,7 +326,7 @@ func int64AssignTo(srcVal int64, srcValid bool, dst interface{}) error { return fmt.Errorf("cannot assign %v %v into %T", srcVal, srcValid, dst) } -func float64AssignTo(srcVal float64, srcValid bool, dst interface{}) error { +func float64AssignTo(srcVal float64, srcValid bool, dst any) error { if srcValid { switch v := dst.(type) { case *float32: @@ -368,7 +368,7 @@ func float64AssignTo(srcVal float64, srcValid bool, dst interface{}) error { return fmt.Errorf("cannot assign %v %v into %T", srcVal, srcValid, dst) } -func NullAssignTo(dst interface{}) error { +func NullAssignTo(dst any) error { dstPtr := reflect.ValueOf(dst) // AssignTo dst must always be a pointer @@ -389,7 +389,7 @@ func NullAssignTo(dst interface{}) error { var kindTypes map[reflect.Kind]reflect.Type -func toInterface(dst reflect.Value, t reflect.Type) (interface{}, bool) { +func toInterface(dst reflect.Value, t reflect.Type) (any, bool) { nextDst := dst.Convert(t) return nextDst.Interface(), dst.Type() != nextDst.Type() } @@ -401,7 +401,7 @@ func toInterface(dst reflect.Value, t reflect.Type) (interface{}, bool) { // // GetAssignToDstType returns the converted dst and a bool representing if any // change was made. -func GetAssignToDstType(dst interface{}) (interface{}, bool) { +func GetAssignToDstType(dst any) (any, bool) { dstPtr := reflect.ValueOf(dst) // AssignTo dst must always be a pointer diff --git a/pgtype/date.go b/pgtype/date.go index db331e6c..78c5db92 100644 --- a/pgtype/date.go +++ b/pgtype/date.go @@ -40,7 +40,7 @@ const ( ) // Scan implements the database/sql Scanner interface. -func (dst *Date) Scan(src interface{}) error { +func (dst *Date) Scan(src any) error { if src == nil { *dst = Date{} return nil @@ -127,7 +127,7 @@ func (DateCodec) PreferredFormat() int16 { return BinaryFormatCode } -func (DateCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (DateCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { if _, ok := value.(DateValuer); !ok { return nil } @@ -144,7 +144,7 @@ func (DateCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) type encodePlanDateCodecBinary struct{} -func (encodePlanDateCodecBinary) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanDateCodecBinary) Encode(value any, buf []byte) (newBuf []byte, err error) { date, err := value.(DateValuer).DateValue() if err != nil { return nil, err @@ -173,7 +173,7 @@ func (encodePlanDateCodecBinary) Encode(value interface{}, buf []byte) (newBuf [ type encodePlanDateCodecText struct{} -func (encodePlanDateCodecText) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanDateCodecText) Encode(value any, buf []byte) (newBuf []byte, err error) { date, err := value.(DateValuer).DateValue() if err != nil { return nil, err @@ -211,7 +211,7 @@ func (encodePlanDateCodecText) Encode(value interface{}, buf []byte) (newBuf []b return buf, nil } -func (DateCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (DateCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: @@ -231,7 +231,7 @@ func (DateCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) type scanPlanBinaryDateToDateScanner struct{} -func (scanPlanBinaryDateToDateScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryDateToDateScanner) Scan(src []byte, dst any) error { scanner := (dst).(DateScanner) if src == nil { @@ -257,7 +257,7 @@ func (scanPlanBinaryDateToDateScanner) Scan(src []byte, dst interface{}) error { type scanPlanTextAnyToDateScanner struct{} -func (scanPlanTextAnyToDateScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToDateScanner) Scan(src []byte, dst any) error { scanner := (dst).(DateScanner) if src == nil { @@ -301,7 +301,7 @@ func (c DateCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, src return codecDecodeToTextFormat(c, m, oid, format, src) } -func (c DateCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c DateCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } diff --git a/pgtype/date_test.go b/pgtype/date_test.go index 25c6bfc2..de61fd72 100644 --- a/pgtype/date_test.go +++ b/pgtype/date_test.go @@ -9,8 +9,8 @@ import ( "github.com/jackc/pgx/v5/pgxtest" ) -func isExpectedEqTime(a interface{}) func(interface{}) bool { - return func(v interface{}) bool { +func isExpectedEqTime(a any) func(any) bool { + return func(v any) bool { at := a.(time.Time) vt := v.(time.Time) diff --git a/pgtype/enum_codec.go b/pgtype/enum_codec.go index ecad0d9f..93513111 100644 --- a/pgtype/enum_codec.go +++ b/pgtype/enum_codec.go @@ -20,7 +20,7 @@ func (EnumCodec) PreferredFormat() int16 { return TextFormatCode } -func (EnumCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (EnumCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { switch format { case TextFormatCode, BinaryFormatCode: switch value.(type) { @@ -38,7 +38,7 @@ func (EnumCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) return nil } -func (c *EnumCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (c *EnumCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case TextFormatCode, BinaryFormatCode: switch target.(type) { @@ -60,7 +60,7 @@ func (c *EnumCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, src return c.DecodeValue(m, oid, format, src) } -func (c *EnumCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c *EnumCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } @@ -87,7 +87,7 @@ type scanPlanTextAnyToEnumString struct { codec *EnumCodec } -func (plan *scanPlanTextAnyToEnumString) Scan(src []byte, dst interface{}) error { +func (plan *scanPlanTextAnyToEnumString) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -102,7 +102,7 @@ type scanPlanTextAnyToEnumTextScanner struct { codec *EnumCodec } -func (plan *scanPlanTextAnyToEnumTextScanner) Scan(src []byte, dst interface{}) error { +func (plan *scanPlanTextAnyToEnumTextScanner) Scan(src []byte, dst any) error { scanner := (dst).(TextScanner) if src == nil { diff --git a/pgtype/enum_codec_test.go b/pgtype/enum_codec_test.go index 633b610b..d064d49c 100644 --- a/pgtype/enum_codec_test.go +++ b/pgtype/enum_codec_test.go @@ -64,6 +64,6 @@ create type enum_test as enum ('foo', 'bar', 'baz');`) require.True(t, rows.Next()) values, err := rows.Values() require.NoError(t, err) - require.Equal(t, values, []interface{}{"foo"}) + require.Equal(t, values, []any{"foo"}) }) } diff --git a/pgtype/float4.go b/pgtype/float4.go index 2c628011..a68fa7b2 100644 --- a/pgtype/float4.go +++ b/pgtype/float4.go @@ -35,7 +35,7 @@ func (f Float4) Int64Value() (Int8, error) { } // Scan implements the database/sql Scanner interface. -func (f *Float4) Scan(src interface{}) error { +func (f *Float4) Scan(src any) error { if src == nil { *f = Float4{} return nil @@ -75,7 +75,7 @@ func (Float4Codec) PreferredFormat() int16 { return BinaryFormatCode } -func (Float4Codec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (Float4Codec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { switch format { case BinaryFormatCode: switch value.(type) { @@ -102,21 +102,21 @@ func (Float4Codec) PlanEncode(m *Map, oid uint32, format int16, value interface{ type encodePlanFloat4CodecBinaryFloat32 struct{} -func (encodePlanFloat4CodecBinaryFloat32) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanFloat4CodecBinaryFloat32) Encode(value any, buf []byte) (newBuf []byte, err error) { n := value.(float32) return pgio.AppendUint32(buf, math.Float32bits(n)), nil } type encodePlanTextFloat32 struct{} -func (encodePlanTextFloat32) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanTextFloat32) Encode(value any, buf []byte) (newBuf []byte, err error) { n := value.(float32) return append(buf, strconv.FormatFloat(float64(n), 'f', -1, 32)...), nil } type encodePlanFloat4CodecBinaryFloat64Valuer struct{} -func (encodePlanFloat4CodecBinaryFloat64Valuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanFloat4CodecBinaryFloat64Valuer) Encode(value any, buf []byte) (newBuf []byte, err error) { n, err := value.(Float64Valuer).Float64Value() if err != nil { return nil, err @@ -131,7 +131,7 @@ func (encodePlanFloat4CodecBinaryFloat64Valuer) Encode(value interface{}, buf [] type encodePlanFloat4CodecBinaryInt64Valuer struct{} -func (encodePlanFloat4CodecBinaryInt64Valuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanFloat4CodecBinaryInt64Valuer) Encode(value any, buf []byte) (newBuf []byte, err error) { n, err := value.(Int64Valuer).Int64Value() if err != nil { return nil, err @@ -145,7 +145,7 @@ func (encodePlanFloat4CodecBinaryInt64Valuer) Encode(value interface{}, buf []by return pgio.AppendUint32(buf, math.Float32bits(f)), nil } -func (Float4Codec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (Float4Codec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: @@ -175,7 +175,7 @@ func (Float4Codec) PlanScan(m *Map, oid uint32, format int16, target interface{} type scanPlanBinaryFloat4ToFloat32 struct{} -func (scanPlanBinaryFloat4ToFloat32) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryFloat4ToFloat32) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -193,7 +193,7 @@ func (scanPlanBinaryFloat4ToFloat32) Scan(src []byte, dst interface{}) error { type scanPlanBinaryFloat4ToFloat64Scanner struct{} -func (scanPlanBinaryFloat4ToFloat64Scanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryFloat4ToFloat64Scanner) Scan(src []byte, dst any) error { s := (dst).(Float64Scanner) if src == nil { @@ -210,7 +210,7 @@ func (scanPlanBinaryFloat4ToFloat64Scanner) Scan(src []byte, dst interface{}) er type scanPlanBinaryFloat4ToInt64Scanner struct{} -func (scanPlanBinaryFloat4ToInt64Scanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryFloat4ToInt64Scanner) Scan(src []byte, dst any) error { s := (dst).(Int64Scanner) if src == nil { @@ -233,7 +233,7 @@ func (scanPlanBinaryFloat4ToInt64Scanner) Scan(src []byte, dst interface{}) erro type scanPlanBinaryFloat4ToTextScanner struct{} -func (scanPlanBinaryFloat4ToTextScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryFloat4ToTextScanner) Scan(src []byte, dst any) error { s := (dst).(TextScanner) if src == nil { @@ -252,7 +252,7 @@ func (scanPlanBinaryFloat4ToTextScanner) Scan(src []byte, dst interface{}) error type scanPlanTextAnyToFloat32 struct{} -func (scanPlanTextAnyToFloat32) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToFloat32) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -281,7 +281,7 @@ func (c Float4Codec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, sr return n, nil } -func (c Float4Codec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c Float4Codec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } diff --git a/pgtype/float8.go b/pgtype/float8.go index b7c6177e..98334dc6 100644 --- a/pgtype/float8.go +++ b/pgtype/float8.go @@ -43,7 +43,7 @@ func (f Float8) Int64Value() (Int8, error) { } // Scan implements the database/sql Scanner interface. -func (f *Float8) Scan(src interface{}) error { +func (f *Float8) Scan(src any) error { if src == nil { *f = Float8{} return nil @@ -83,7 +83,7 @@ func (Float8Codec) PreferredFormat() int16 { return BinaryFormatCode } -func (Float8Codec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (Float8Codec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { switch format { case BinaryFormatCode: switch value.(type) { @@ -110,21 +110,21 @@ func (Float8Codec) PlanEncode(m *Map, oid uint32, format int16, value interface{ type encodePlanFloat8CodecBinaryFloat64 struct{} -func (encodePlanFloat8CodecBinaryFloat64) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanFloat8CodecBinaryFloat64) Encode(value any, buf []byte) (newBuf []byte, err error) { n := value.(float64) return pgio.AppendUint64(buf, math.Float64bits(n)), nil } type encodePlanTextFloat64 struct{} -func (encodePlanTextFloat64) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanTextFloat64) Encode(value any, buf []byte) (newBuf []byte, err error) { n := value.(float64) return append(buf, strconv.FormatFloat(n, 'f', -1, 64)...), nil } type encodePlanFloat8CodecBinaryFloat64Valuer struct{} -func (encodePlanFloat8CodecBinaryFloat64Valuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanFloat8CodecBinaryFloat64Valuer) Encode(value any, buf []byte) (newBuf []byte, err error) { n, err := value.(Float64Valuer).Float64Value() if err != nil { return nil, err @@ -139,7 +139,7 @@ func (encodePlanFloat8CodecBinaryFloat64Valuer) Encode(value interface{}, buf [] type encodePlanTextFloat64Valuer struct{} -func (encodePlanTextFloat64Valuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanTextFloat64Valuer) Encode(value any, buf []byte) (newBuf []byte, err error) { n, err := value.(Float64Valuer).Float64Value() if err != nil { return nil, err @@ -154,7 +154,7 @@ func (encodePlanTextFloat64Valuer) Encode(value interface{}, buf []byte) (newBuf type encodePlanFloat8CodecBinaryInt64Valuer struct{} -func (encodePlanFloat8CodecBinaryInt64Valuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanFloat8CodecBinaryInt64Valuer) Encode(value any, buf []byte) (newBuf []byte, err error) { n, err := value.(Int64Valuer).Int64Value() if err != nil { return nil, err @@ -170,7 +170,7 @@ func (encodePlanFloat8CodecBinaryInt64Valuer) Encode(value interface{}, buf []by type encodePlanTextInt64Valuer struct{} -func (encodePlanTextInt64Valuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanTextInt64Valuer) Encode(value any, buf []byte) (newBuf []byte, err error) { n, err := value.(Int64Valuer).Int64Value() if err != nil { return nil, err @@ -183,7 +183,7 @@ func (encodePlanTextInt64Valuer) Encode(value interface{}, buf []byte) (newBuf [ return append(buf, strconv.FormatInt(n.Int64, 10)...), nil } -func (Float8Codec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (Float8Codec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: @@ -213,7 +213,7 @@ func (Float8Codec) PlanScan(m *Map, oid uint32, format int16, target interface{} type scanPlanBinaryFloat8ToFloat64 struct{} -func (scanPlanBinaryFloat8ToFloat64) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryFloat8ToFloat64) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -231,7 +231,7 @@ func (scanPlanBinaryFloat8ToFloat64) Scan(src []byte, dst interface{}) error { type scanPlanBinaryFloat8ToFloat64Scanner struct{} -func (scanPlanBinaryFloat8ToFloat64Scanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryFloat8ToFloat64Scanner) Scan(src []byte, dst any) error { s := (dst).(Float64Scanner) if src == nil { @@ -248,7 +248,7 @@ func (scanPlanBinaryFloat8ToFloat64Scanner) Scan(src []byte, dst interface{}) er type scanPlanBinaryFloat8ToInt64Scanner struct{} -func (scanPlanBinaryFloat8ToInt64Scanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryFloat8ToInt64Scanner) Scan(src []byte, dst any) error { s := (dst).(Int64Scanner) if src == nil { @@ -271,7 +271,7 @@ func (scanPlanBinaryFloat8ToInt64Scanner) Scan(src []byte, dst interface{}) erro type scanPlanBinaryFloat8ToTextScanner struct{} -func (scanPlanBinaryFloat8ToTextScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryFloat8ToTextScanner) Scan(src []byte, dst any) error { s := (dst).(TextScanner) if src == nil { @@ -290,7 +290,7 @@ func (scanPlanBinaryFloat8ToTextScanner) Scan(src []byte, dst interface{}) error type scanPlanTextAnyToFloat64 struct{} -func (scanPlanTextAnyToFloat64) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToFloat64) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -308,7 +308,7 @@ func (scanPlanTextAnyToFloat64) Scan(src []byte, dst interface{}) error { type scanPlanTextAnyToFloat64Scanner struct{} -func (scanPlanTextAnyToFloat64Scanner) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToFloat64Scanner) Scan(src []byte, dst any) error { s := (dst).(Float64Scanner) if src == nil { @@ -327,7 +327,7 @@ func (c Float8Codec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, sr return c.DecodeValue(m, oid, format, src) } -func (c Float8Codec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c Float8Codec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } diff --git a/pgtype/hstore.go b/pgtype/hstore.go index 7f0fa8c2..4743643e 100644 --- a/pgtype/hstore.go +++ b/pgtype/hstore.go @@ -35,7 +35,7 @@ func (h Hstore) HstoreValue() (Hstore, error) { } // Scan implements the database/sql Scanner interface. -func (h *Hstore) Scan(src interface{}) error { +func (h *Hstore) Scan(src any) error { if src == nil { *h = nil return nil @@ -72,7 +72,7 @@ func (HstoreCodec) PreferredFormat() int16 { return BinaryFormatCode } -func (HstoreCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (HstoreCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { if _, ok := value.(HstoreValuer); !ok { return nil } @@ -89,7 +89,7 @@ func (HstoreCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{ type encodePlanHstoreCodecBinary struct{} -func (encodePlanHstoreCodecBinary) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanHstoreCodecBinary) Encode(value any, buf []byte) (newBuf []byte, err error) { hstore, err := value.(HstoreValuer).HstoreValue() if err != nil { return nil, err @@ -118,7 +118,7 @@ func (encodePlanHstoreCodecBinary) Encode(value interface{}, buf []byte) (newBuf type encodePlanHstoreCodecText struct{} -func (encodePlanHstoreCodecText) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanHstoreCodecText) Encode(value any, buf []byte) (newBuf []byte, err error) { hstore, err := value.(HstoreValuer).HstoreValue() if err != nil { return nil, err @@ -150,7 +150,7 @@ func (encodePlanHstoreCodecText) Encode(value interface{}, buf []byte) (newBuf [ return buf, nil } -func (HstoreCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (HstoreCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: @@ -170,7 +170,7 @@ func (HstoreCodec) PlanScan(m *Map, oid uint32, format int16, target interface{} type scanPlanBinaryHstoreToHstoreScanner struct{} -func (scanPlanBinaryHstoreToHstoreScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryHstoreToHstoreScanner) Scan(src []byte, dst any) error { scanner := (dst).(HstoreScanner) if src == nil { @@ -230,7 +230,7 @@ func (scanPlanBinaryHstoreToHstoreScanner) Scan(src []byte, dst interface{}) err type scanPlanTextAnyToHstoreScanner struct{} -func (scanPlanTextAnyToHstoreScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToHstoreScanner) Scan(src []byte, dst any) error { scanner := (dst).(HstoreScanner) if src == nil { @@ -258,7 +258,7 @@ func (c HstoreCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, sr return codecDecodeToTextFormat(c, m, oid, format, src) } -func (c HstoreCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c HstoreCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } diff --git a/pgtype/hstore_test.go b/pgtype/hstore_test.go index fb0cc27b..f8684bf7 100644 --- a/pgtype/hstore_test.go +++ b/pgtype/hstore_test.go @@ -9,8 +9,8 @@ import ( "github.com/jackc/pgx/v5/pgxtest" ) -func isExpectedEqMapStringString(a interface{}) func(interface{}) bool { - return func(v interface{}) bool { +func isExpectedEqMapStringString(a any) func(any) bool { + return func(v any) bool { am := a.(map[string]string) vm := v.(map[string]string) @@ -28,8 +28,8 @@ func isExpectedEqMapStringString(a interface{}) func(interface{}) bool { } } -func isExpectedEqMapStringPointerString(a interface{}) func(interface{}) bool { - return func(v interface{}) bool { +func isExpectedEqMapStringPointerString(a any) func(any) bool { + return func(v any) bool { am := a.(map[string]*string) vm := v.(map[string]*string) diff --git a/pgtype/inet.go b/pgtype/inet.go index a272e00b..f8abeef8 100644 --- a/pgtype/inet.go +++ b/pgtype/inet.go @@ -38,7 +38,7 @@ func (inet Inet) InetValue() (Inet, error) { } // Scan implements the database/sql Scanner interface. -func (dst *Inet) Scan(src interface{}) error { +func (dst *Inet) Scan(src any) error { if src == nil { *dst = Inet{} return nil @@ -75,7 +75,7 @@ func (InetCodec) PreferredFormat() int16 { return BinaryFormatCode } -func (InetCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (InetCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { if _, ok := value.(InetValuer); !ok { return nil } @@ -92,7 +92,7 @@ func (InetCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) type encodePlanInetCodecBinary struct{} -func (encodePlanInetCodecBinary) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanInetCodecBinary) Encode(value any, buf []byte) (newBuf []byte, err error) { inet, err := value.(InetValuer).InetValue() if err != nil { return nil, err @@ -127,7 +127,7 @@ func (encodePlanInetCodecBinary) Encode(value interface{}, buf []byte) (newBuf [ type encodePlanInetCodecText struct{} -func (encodePlanInetCodecText) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanInetCodecText) Encode(value any, buf []byte) (newBuf []byte, err error) { inet, err := value.(InetValuer).InetValue() if err != nil { return nil, err @@ -140,7 +140,7 @@ func (encodePlanInetCodecText) Encode(value interface{}, buf []byte) (newBuf []b return append(buf, inet.IPNet.String()...), nil } -func (InetCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (InetCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: @@ -162,7 +162,7 @@ func (c InetCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, src return codecDecodeToTextFormat(c, m, oid, format, src) } -func (c InetCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c InetCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } @@ -182,7 +182,7 @@ func (c InetCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (in type scanPlanBinaryInetToInetScanner struct{} -func (scanPlanBinaryInetToInetScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInetToInetScanner) Scan(src []byte, dst any) error { scanner := (dst).(InetScanner) if src == nil { @@ -211,7 +211,7 @@ func (scanPlanBinaryInetToInetScanner) Scan(src []byte, dst interface{}) error { type scanPlanTextAnyToInetScanner struct{} -func (scanPlanTextAnyToInetScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToInetScanner) Scan(src []byte, dst any) error { scanner := (dst).(InetScanner) if src == nil { diff --git a/pgtype/inet_test.go b/pgtype/inet_test.go index 8bf11a76..0a174e1a 100644 --- a/pgtype/inet_test.go +++ b/pgtype/inet_test.go @@ -9,8 +9,8 @@ import ( "github.com/jackc/pgx/v5/pgxtest" ) -func isExpectedEqIPNet(a interface{}) func(interface{}) bool { - return func(v interface{}) bool { +func isExpectedEqIPNet(a any) func(any) bool { + return func(v any) bool { ap := a.(*net.IPNet) vp := v.(net.IPNet) diff --git a/pgtype/int.go b/pgtype/int.go index b3eabceb..147a3656 100644 --- a/pgtype/int.go +++ b/pgtype/int.go @@ -48,7 +48,7 @@ func (n Int2) Int64Value() (Int8, error) { } // Scan implements the database/sql Scanner interface. -func (dst *Int2) Scan(src interface{}) error { +func (dst *Int2) Scan(src any) error { if src == nil { *dst = Int2{} return nil @@ -127,7 +127,7 @@ func (Int2Codec) PreferredFormat() int16 { return BinaryFormatCode } -func (Int2Codec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (Int2Codec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { switch format { case BinaryFormatCode: switch value.(type) { @@ -150,21 +150,21 @@ func (Int2Codec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) type encodePlanInt2CodecBinaryInt16 struct{} -func (encodePlanInt2CodecBinaryInt16) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanInt2CodecBinaryInt16) Encode(value any, buf []byte) (newBuf []byte, err error) { n := value.(int16) return pgio.AppendInt16(buf, int16(n)), nil } type encodePlanInt2CodecTextInt16 struct{} -func (encodePlanInt2CodecTextInt16) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanInt2CodecTextInt16) Encode(value any, buf []byte) (newBuf []byte, err error) { n := value.(int16) return append(buf, strconv.FormatInt(int64(n), 10)...), nil } type encodePlanInt2CodecBinaryInt64Valuer struct{} -func (encodePlanInt2CodecBinaryInt64Valuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanInt2CodecBinaryInt64Valuer) Encode(value any, buf []byte) (newBuf []byte, err error) { n, err := value.(Int64Valuer).Int64Value() if err != nil { return nil, err @@ -186,7 +186,7 @@ func (encodePlanInt2CodecBinaryInt64Valuer) Encode(value interface{}, buf []byte type encodePlanInt2CodecTextInt64Valuer struct{} -func (encodePlanInt2CodecTextInt64Valuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanInt2CodecTextInt64Valuer) Encode(value any, buf []byte) (newBuf []byte, err error) { n, err := value.(Int64Valuer).Int64Value() if err != nil { return nil, err @@ -206,7 +206,7 @@ func (encodePlanInt2CodecTextInt64Valuer) Encode(value interface{}, buf []byte) return append(buf, strconv.FormatInt(n.Int64, 10)...), nil } -func (Int2Codec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (Int2Codec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: @@ -279,7 +279,7 @@ func (c Int2Codec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, src return n, nil } -func (c Int2Codec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c Int2Codec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } @@ -294,7 +294,7 @@ func (c Int2Codec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (in type scanPlanBinaryInt2ToInt8 struct{} -func (scanPlanBinaryInt2ToInt8) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt2ToInt8) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -322,7 +322,7 @@ func (scanPlanBinaryInt2ToInt8) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt2ToUint8 struct{} -func (scanPlanBinaryInt2ToUint8) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt2ToUint8) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -352,7 +352,7 @@ func (scanPlanBinaryInt2ToUint8) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt2ToInt16 struct{} -func (scanPlanBinaryInt2ToInt16) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt2ToInt16) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -373,7 +373,7 @@ func (scanPlanBinaryInt2ToInt16) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt2ToUint16 struct{} -func (scanPlanBinaryInt2ToUint16) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt2ToUint16) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -399,7 +399,7 @@ func (scanPlanBinaryInt2ToUint16) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt2ToInt32 struct{} -func (scanPlanBinaryInt2ToInt32) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt2ToInt32) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -420,7 +420,7 @@ func (scanPlanBinaryInt2ToInt32) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt2ToUint32 struct{} -func (scanPlanBinaryInt2ToUint32) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt2ToUint32) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -446,7 +446,7 @@ func (scanPlanBinaryInt2ToUint32) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt2ToInt64 struct{} -func (scanPlanBinaryInt2ToInt64) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt2ToInt64) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -467,7 +467,7 @@ func (scanPlanBinaryInt2ToInt64) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt2ToUint64 struct{} -func (scanPlanBinaryInt2ToUint64) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt2ToUint64) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -493,7 +493,7 @@ func (scanPlanBinaryInt2ToUint64) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt2ToInt struct{} -func (scanPlanBinaryInt2ToInt) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt2ToInt) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -514,7 +514,7 @@ func (scanPlanBinaryInt2ToInt) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt2ToUint struct{} -func (scanPlanBinaryInt2ToUint) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt2ToUint) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -540,7 +540,7 @@ func (scanPlanBinaryInt2ToUint) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt2ToInt64Scanner struct{} -func (scanPlanBinaryInt2ToInt64Scanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt2ToInt64Scanner) Scan(src []byte, dst any) error { s, ok := (dst).(Int64Scanner) if !ok { return ErrScanTargetTypeChanged @@ -561,7 +561,7 @@ func (scanPlanBinaryInt2ToInt64Scanner) Scan(src []byte, dst interface{}) error type scanPlanBinaryInt2ToTextScanner struct{} -func (scanPlanBinaryInt2ToTextScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt2ToTextScanner) Scan(src []byte, dst any) error { s, ok := (dst).(TextScanner) if !ok { return ErrScanTargetTypeChanged @@ -608,7 +608,7 @@ func (n Int4) Int64Value() (Int8, error) { } // Scan implements the database/sql Scanner interface. -func (dst *Int4) Scan(src interface{}) error { +func (dst *Int4) Scan(src any) error { if src == nil { *dst = Int4{} return nil @@ -687,7 +687,7 @@ func (Int4Codec) PreferredFormat() int16 { return BinaryFormatCode } -func (Int4Codec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (Int4Codec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { switch format { case BinaryFormatCode: switch value.(type) { @@ -710,21 +710,21 @@ func (Int4Codec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) type encodePlanInt4CodecBinaryInt32 struct{} -func (encodePlanInt4CodecBinaryInt32) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanInt4CodecBinaryInt32) Encode(value any, buf []byte) (newBuf []byte, err error) { n := value.(int32) return pgio.AppendInt32(buf, int32(n)), nil } type encodePlanInt4CodecTextInt32 struct{} -func (encodePlanInt4CodecTextInt32) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanInt4CodecTextInt32) Encode(value any, buf []byte) (newBuf []byte, err error) { n := value.(int32) return append(buf, strconv.FormatInt(int64(n), 10)...), nil } type encodePlanInt4CodecBinaryInt64Valuer struct{} -func (encodePlanInt4CodecBinaryInt64Valuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanInt4CodecBinaryInt64Valuer) Encode(value any, buf []byte) (newBuf []byte, err error) { n, err := value.(Int64Valuer).Int64Value() if err != nil { return nil, err @@ -746,7 +746,7 @@ func (encodePlanInt4CodecBinaryInt64Valuer) Encode(value interface{}, buf []byte type encodePlanInt4CodecTextInt64Valuer struct{} -func (encodePlanInt4CodecTextInt64Valuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanInt4CodecTextInt64Valuer) Encode(value any, buf []byte) (newBuf []byte, err error) { n, err := value.(Int64Valuer).Int64Value() if err != nil { return nil, err @@ -766,7 +766,7 @@ func (encodePlanInt4CodecTextInt64Valuer) Encode(value interface{}, buf []byte) return append(buf, strconv.FormatInt(n.Int64, 10)...), nil } -func (Int4Codec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (Int4Codec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: @@ -839,7 +839,7 @@ func (c Int4Codec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, src return n, nil } -func (c Int4Codec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c Int4Codec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } @@ -854,7 +854,7 @@ func (c Int4Codec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (in type scanPlanBinaryInt4ToInt8 struct{} -func (scanPlanBinaryInt4ToInt8) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt4ToInt8) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -882,7 +882,7 @@ func (scanPlanBinaryInt4ToInt8) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt4ToUint8 struct{} -func (scanPlanBinaryInt4ToUint8) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt4ToUint8) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -912,7 +912,7 @@ func (scanPlanBinaryInt4ToUint8) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt4ToInt16 struct{} -func (scanPlanBinaryInt4ToInt16) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt4ToInt16) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -940,7 +940,7 @@ func (scanPlanBinaryInt4ToInt16) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt4ToUint16 struct{} -func (scanPlanBinaryInt4ToUint16) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt4ToUint16) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -970,7 +970,7 @@ func (scanPlanBinaryInt4ToUint16) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt4ToInt32 struct{} -func (scanPlanBinaryInt4ToInt32) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt4ToInt32) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -991,7 +991,7 @@ func (scanPlanBinaryInt4ToInt32) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt4ToUint32 struct{} -func (scanPlanBinaryInt4ToUint32) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt4ToUint32) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -1017,7 +1017,7 @@ func (scanPlanBinaryInt4ToUint32) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt4ToInt64 struct{} -func (scanPlanBinaryInt4ToInt64) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt4ToInt64) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -1038,7 +1038,7 @@ func (scanPlanBinaryInt4ToInt64) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt4ToUint64 struct{} -func (scanPlanBinaryInt4ToUint64) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt4ToUint64) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -1064,7 +1064,7 @@ func (scanPlanBinaryInt4ToUint64) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt4ToInt struct{} -func (scanPlanBinaryInt4ToInt) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt4ToInt) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -1085,7 +1085,7 @@ func (scanPlanBinaryInt4ToInt) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt4ToUint struct{} -func (scanPlanBinaryInt4ToUint) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt4ToUint) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -1111,7 +1111,7 @@ func (scanPlanBinaryInt4ToUint) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt4ToInt64Scanner struct{} -func (scanPlanBinaryInt4ToInt64Scanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt4ToInt64Scanner) Scan(src []byte, dst any) error { s, ok := (dst).(Int64Scanner) if !ok { return ErrScanTargetTypeChanged @@ -1132,7 +1132,7 @@ func (scanPlanBinaryInt4ToInt64Scanner) Scan(src []byte, dst interface{}) error type scanPlanBinaryInt4ToTextScanner struct{} -func (scanPlanBinaryInt4ToTextScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt4ToTextScanner) Scan(src []byte, dst any) error { s, ok := (dst).(TextScanner) if !ok { return ErrScanTargetTypeChanged @@ -1179,7 +1179,7 @@ func (n Int8) Int64Value() (Int8, error) { } // Scan implements the database/sql Scanner interface. -func (dst *Int8) Scan(src interface{}) error { +func (dst *Int8) Scan(src any) error { if src == nil { *dst = Int8{} return nil @@ -1258,7 +1258,7 @@ func (Int8Codec) PreferredFormat() int16 { return BinaryFormatCode } -func (Int8Codec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (Int8Codec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { switch format { case BinaryFormatCode: switch value.(type) { @@ -1281,21 +1281,21 @@ func (Int8Codec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) type encodePlanInt8CodecBinaryInt64 struct{} -func (encodePlanInt8CodecBinaryInt64) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanInt8CodecBinaryInt64) Encode(value any, buf []byte) (newBuf []byte, err error) { n := value.(int64) return pgio.AppendInt64(buf, int64(n)), nil } type encodePlanInt8CodecTextInt64 struct{} -func (encodePlanInt8CodecTextInt64) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanInt8CodecTextInt64) Encode(value any, buf []byte) (newBuf []byte, err error) { n := value.(int64) return append(buf, strconv.FormatInt(int64(n), 10)...), nil } type encodePlanInt8CodecBinaryInt64Valuer struct{} -func (encodePlanInt8CodecBinaryInt64Valuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanInt8CodecBinaryInt64Valuer) Encode(value any, buf []byte) (newBuf []byte, err error) { n, err := value.(Int64Valuer).Int64Value() if err != nil { return nil, err @@ -1317,7 +1317,7 @@ func (encodePlanInt8CodecBinaryInt64Valuer) Encode(value interface{}, buf []byte type encodePlanInt8CodecTextInt64Valuer struct{} -func (encodePlanInt8CodecTextInt64Valuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanInt8CodecTextInt64Valuer) Encode(value any, buf []byte) (newBuf []byte, err error) { n, err := value.(Int64Valuer).Int64Value() if err != nil { return nil, err @@ -1337,7 +1337,7 @@ func (encodePlanInt8CodecTextInt64Valuer) Encode(value interface{}, buf []byte) return append(buf, strconv.FormatInt(n.Int64, 10)...), nil } -func (Int8Codec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (Int8Codec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: @@ -1410,7 +1410,7 @@ func (c Int8Codec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, src return n, nil } -func (c Int8Codec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c Int8Codec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } @@ -1425,7 +1425,7 @@ func (c Int8Codec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (in type scanPlanBinaryInt8ToInt8 struct{} -func (scanPlanBinaryInt8ToInt8) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt8ToInt8) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -1453,7 +1453,7 @@ func (scanPlanBinaryInt8ToInt8) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt8ToUint8 struct{} -func (scanPlanBinaryInt8ToUint8) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt8ToUint8) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -1483,7 +1483,7 @@ func (scanPlanBinaryInt8ToUint8) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt8ToInt16 struct{} -func (scanPlanBinaryInt8ToInt16) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt8ToInt16) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -1511,7 +1511,7 @@ func (scanPlanBinaryInt8ToInt16) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt8ToUint16 struct{} -func (scanPlanBinaryInt8ToUint16) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt8ToUint16) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -1541,7 +1541,7 @@ func (scanPlanBinaryInt8ToUint16) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt8ToInt32 struct{} -func (scanPlanBinaryInt8ToInt32) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt8ToInt32) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -1569,7 +1569,7 @@ func (scanPlanBinaryInt8ToInt32) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt8ToUint32 struct{} -func (scanPlanBinaryInt8ToUint32) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt8ToUint32) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -1599,7 +1599,7 @@ func (scanPlanBinaryInt8ToUint32) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt8ToInt64 struct{} -func (scanPlanBinaryInt8ToInt64) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt8ToInt64) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -1620,7 +1620,7 @@ func (scanPlanBinaryInt8ToInt64) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt8ToUint64 struct{} -func (scanPlanBinaryInt8ToUint64) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt8ToUint64) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -1646,7 +1646,7 @@ func (scanPlanBinaryInt8ToUint64) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt8ToInt struct{} -func (scanPlanBinaryInt8ToInt) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt8ToInt) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -1674,7 +1674,7 @@ func (scanPlanBinaryInt8ToInt) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt8ToUint struct{} -func (scanPlanBinaryInt8ToUint) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt8ToUint) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -1704,7 +1704,7 @@ func (scanPlanBinaryInt8ToUint) Scan(src []byte, dst interface{}) error { type scanPlanBinaryInt8ToInt64Scanner struct{} -func (scanPlanBinaryInt8ToInt64Scanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt8ToInt64Scanner) Scan(src []byte, dst any) error { s, ok := (dst).(Int64Scanner) if !ok { return ErrScanTargetTypeChanged @@ -1725,7 +1725,7 @@ func (scanPlanBinaryInt8ToInt64Scanner) Scan(src []byte, dst interface{}) error type scanPlanBinaryInt8ToTextScanner struct{} -func (scanPlanBinaryInt8ToTextScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt8ToTextScanner) Scan(src []byte, dst any) error { s, ok := (dst).(TextScanner) if !ok { return ErrScanTargetTypeChanged @@ -1746,7 +1746,7 @@ func (scanPlanBinaryInt8ToTextScanner) Scan(src []byte, dst interface{}) error { type scanPlanTextAnyToInt8 struct{} -func (scanPlanTextAnyToInt8) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToInt8) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -1767,7 +1767,7 @@ func (scanPlanTextAnyToInt8) Scan(src []byte, dst interface{}) error { type scanPlanTextAnyToUint8 struct{} -func (scanPlanTextAnyToUint8) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToUint8) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -1788,7 +1788,7 @@ func (scanPlanTextAnyToUint8) Scan(src []byte, dst interface{}) error { type scanPlanTextAnyToInt16 struct{} -func (scanPlanTextAnyToInt16) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToInt16) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -1809,7 +1809,7 @@ func (scanPlanTextAnyToInt16) Scan(src []byte, dst interface{}) error { type scanPlanTextAnyToUint16 struct{} -func (scanPlanTextAnyToUint16) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToUint16) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -1830,7 +1830,7 @@ func (scanPlanTextAnyToUint16) Scan(src []byte, dst interface{}) error { type scanPlanTextAnyToInt32 struct{} -func (scanPlanTextAnyToInt32) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToInt32) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -1851,7 +1851,7 @@ func (scanPlanTextAnyToInt32) Scan(src []byte, dst interface{}) error { type scanPlanTextAnyToUint32 struct{} -func (scanPlanTextAnyToUint32) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToUint32) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -1872,7 +1872,7 @@ func (scanPlanTextAnyToUint32) Scan(src []byte, dst interface{}) error { type scanPlanTextAnyToInt64 struct{} -func (scanPlanTextAnyToInt64) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToInt64) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -1893,7 +1893,7 @@ func (scanPlanTextAnyToInt64) Scan(src []byte, dst interface{}) error { type scanPlanTextAnyToUint64 struct{} -func (scanPlanTextAnyToUint64) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToUint64) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -1914,7 +1914,7 @@ func (scanPlanTextAnyToUint64) Scan(src []byte, dst interface{}) error { type scanPlanTextAnyToInt struct{} -func (scanPlanTextAnyToInt) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToInt) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -1935,7 +1935,7 @@ func (scanPlanTextAnyToInt) Scan(src []byte, dst interface{}) error { type scanPlanTextAnyToUint struct{} -func (scanPlanTextAnyToUint) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToUint) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -1956,7 +1956,7 @@ func (scanPlanTextAnyToUint) Scan(src []byte, dst interface{}) error { type scanPlanTextAnyToInt64Scanner struct{} -func (scanPlanTextAnyToInt64Scanner) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToInt64Scanner) Scan(src []byte, dst any) error { s, ok := (dst).(Int64Scanner) if !ok { return ErrScanTargetTypeChanged diff --git a/pgtype/int.go.erb b/pgtype/int.go.erb index aa1db7fc..f46a1dc3 100644 --- a/pgtype/int.go.erb +++ b/pgtype/int.go.erb @@ -49,7 +49,7 @@ func (n Int<%= pg_byte_size %>) Int64Value() (Int8, error) { } // Scan implements the database/sql Scanner interface. -func (dst *Int<%= pg_byte_size %>) Scan(src interface{}) error { +func (dst *Int<%= pg_byte_size %>) Scan(src any) error { if src == nil { *dst = Int<%= pg_byte_size %>{} return nil @@ -128,7 +128,7 @@ func (Int<%= pg_byte_size %>Codec) PreferredFormat() int16 { return BinaryFormatCode } -func (Int<%= pg_byte_size %>Codec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (Int<%= pg_byte_size %>Codec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { switch format { case BinaryFormatCode: switch value.(type) { @@ -151,21 +151,21 @@ func (Int<%= pg_byte_size %>Codec) PlanEncode(m *Map, oid uint32, format int16, type encodePlanInt<%= pg_byte_size %>CodecBinaryInt<%= pg_bit_size %> struct{} -func (encodePlanInt<%= pg_byte_size %>CodecBinaryInt<%= pg_bit_size %>) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanInt<%= pg_byte_size %>CodecBinaryInt<%= pg_bit_size %>) Encode(value any, buf []byte) (newBuf []byte, err error) { n := value.(int<%= pg_bit_size %>) return pgio.AppendInt<%= pg_bit_size %>(buf, int<%= pg_bit_size %>(n)), nil } type encodePlanInt<%= pg_byte_size %>CodecTextInt<%= pg_bit_size %> struct{} -func (encodePlanInt<%= pg_byte_size %>CodecTextInt<%= pg_bit_size %>) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanInt<%= pg_byte_size %>CodecTextInt<%= pg_bit_size %>) Encode(value any, buf []byte) (newBuf []byte, err error) { n := value.(int<%= pg_bit_size %>) return append(buf, strconv.FormatInt(int64(n), 10)...), nil } type encodePlanInt<%= pg_byte_size %>CodecBinaryInt64Valuer struct{} -func (encodePlanInt<%= pg_byte_size %>CodecBinaryInt64Valuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanInt<%= pg_byte_size %>CodecBinaryInt64Valuer) Encode(value any, buf []byte) (newBuf []byte, err error) { n, err := value.(Int64Valuer).Int64Value() if err != nil { return nil, err @@ -187,7 +187,7 @@ func (encodePlanInt<%= pg_byte_size %>CodecBinaryInt64Valuer) Encode(value inter type encodePlanInt<%= pg_byte_size %>CodecTextInt64Valuer struct{} -func (encodePlanInt<%= pg_byte_size %>CodecTextInt64Valuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanInt<%= pg_byte_size %>CodecTextInt64Valuer) Encode(value any, buf []byte) (newBuf []byte, err error) { n, err := value.(Int64Valuer).Int64Value() if err != nil { return nil, err @@ -207,7 +207,7 @@ func (encodePlanInt<%= pg_byte_size %>CodecTextInt64Valuer) Encode(value interfa return append(buf, strconv.FormatInt(n.Int64, 10)...), nil } -func (Int<%= pg_byte_size %>Codec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (Int<%= pg_byte_size %>Codec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: @@ -280,7 +280,7 @@ func (c Int<%= pg_byte_size %>Codec) DecodeDatabaseSQLValue(m *Map, oid uint32, return n, nil } -func (c Int<%= pg_byte_size %>Codec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c Int<%= pg_byte_size %>Codec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } @@ -297,7 +297,7 @@ func (c Int<%= pg_byte_size %>Codec) DecodeValue(m *Map, oid uint32, format int1 <% [8, 16, 32, 64].each do |dst_bit_size| %> type scanPlanBinaryInt<%= pg_byte_size %>ToInt<%= dst_bit_size %> struct{} -func (scanPlanBinaryInt<%= pg_byte_size %>ToInt<%= dst_bit_size %>) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt<%= pg_byte_size %>ToInt<%= dst_bit_size %>) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -331,7 +331,7 @@ func (scanPlanBinaryInt<%= pg_byte_size %>ToInt<%= dst_bit_size %>) Scan(src []b type scanPlanBinaryInt<%= pg_byte_size %>ToUint<%= dst_bit_size %> struct{} -func (scanPlanBinaryInt<%= pg_byte_size %>ToUint<%= dst_bit_size %>) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt<%= pg_byte_size %>ToUint<%= dst_bit_size %>) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -363,7 +363,7 @@ func (scanPlanBinaryInt<%= pg_byte_size %>ToUint<%= dst_bit_size %>) Scan(src [] <%# PostgreSQL binary format integer to Go machine integers %> type scanPlanBinaryInt<%= pg_byte_size %>ToInt struct{} -func (scanPlanBinaryInt<%= pg_byte_size %>ToInt) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt<%= pg_byte_size %>ToInt) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -395,7 +395,7 @@ func (scanPlanBinaryInt<%= pg_byte_size %>ToInt) Scan(src []byte, dst interface{ type scanPlanBinaryInt<%= pg_byte_size %>ToUint struct{} -func (scanPlanBinaryInt<%= pg_byte_size %>ToUint) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt<%= pg_byte_size %>ToUint) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -426,7 +426,7 @@ func (scanPlanBinaryInt<%= pg_byte_size %>ToUint) Scan(src []byte, dst interface <%# PostgreSQL binary format integer to Go Int64Scanner %> type scanPlanBinaryInt<%= pg_byte_size %>ToInt64Scanner struct{} -func (scanPlanBinaryInt<%= pg_byte_size %>ToInt64Scanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt<%= pg_byte_size %>ToInt64Scanner) Scan(src []byte, dst any) error { s, ok := (dst).(Int64Scanner) if !ok { return ErrScanTargetTypeChanged @@ -449,7 +449,7 @@ func (scanPlanBinaryInt<%= pg_byte_size %>ToInt64Scanner) Scan(src []byte, dst i <%# PostgreSQL binary format integer to Go TextScanner %> type scanPlanBinaryInt<%= pg_byte_size %>ToTextScanner struct{} -func (scanPlanBinaryInt<%= pg_byte_size %>ToTextScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryInt<%= pg_byte_size %>ToTextScanner) Scan(src []byte, dst any) error { s, ok := (dst).(TextScanner) if !ok { return ErrScanTargetTypeChanged @@ -480,7 +480,7 @@ func (scanPlanBinaryInt<%= pg_byte_size %>ToTextScanner) Scan(src []byte, dst in ].each do |type_suffix, bit_size| %> type scanPlanTextAnyToInt<%= type_suffix %> struct{} -func (scanPlanTextAnyToInt<%= type_suffix %>) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToInt<%= type_suffix %>) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -501,7 +501,7 @@ func (scanPlanTextAnyToInt<%= type_suffix %>) Scan(src []byte, dst interface{}) type scanPlanTextAnyToUint<%= type_suffix %> struct{} -func (scanPlanTextAnyToUint<%= type_suffix %>) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToUint<%= type_suffix %>) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -523,7 +523,7 @@ func (scanPlanTextAnyToUint<%= type_suffix %>) Scan(src []byte, dst interface{}) type scanPlanTextAnyToInt64Scanner struct{} -func (scanPlanTextAnyToInt64Scanner) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToInt64Scanner) Scan(src []byte, dst any) error { s, ok := (dst).(Int64Scanner) if !ok { return ErrScanTargetTypeChanged diff --git a/pgtype/integration_benchmark_test.go b/pgtype/integration_benchmark_test.go index 66758d07..624c29ea 100644 --- a/pgtype/integration_benchmark_test.go +++ b/pgtype/integration_benchmark_test.go @@ -17,8 +17,8 @@ func BenchmarkQueryTextFormatDecode_PG_int4_to_Go_int16_1_rows_1_columns(b *test _, err := conn.QueryFunc( ctx, `select n::int4 + 0 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -36,8 +36,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_int4_to_Go_int16_1_rows_1_columns(b *te _, err := conn.QueryFunc( ctx, `select n::int4 + 0 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -55,8 +55,8 @@ func BenchmarkQueryTextFormatDecode_PG_int4_to_Go_int16_1_rows_10_columns(b *tes _, err := conn.QueryFunc( ctx, `select n::int4 + 0, n::int4 + 1, n::int4 + 2, n::int4 + 3, n::int4 + 4, n::int4 + 5, n::int4 + 6, n::int4 + 7, n::int4 + 8, n::int4 + 9 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -74,8 +74,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_int4_to_Go_int16_1_rows_10_columns(b *t _, err := conn.QueryFunc( ctx, `select n::int4 + 0, n::int4 + 1, n::int4 + 2, n::int4 + 3, n::int4 + 4, n::int4 + 5, n::int4 + 6, n::int4 + 7, n::int4 + 8, n::int4 + 9 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -93,8 +93,8 @@ func BenchmarkQueryTextFormatDecode_PG_int4_to_Go_int16_10_rows_1_columns(b *tes _, err := conn.QueryFunc( ctx, `select n::int4 + 0 from generate_series(1, 10) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -112,8 +112,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_int4_to_Go_int16_10_rows_1_columns(b *t _, err := conn.QueryFunc( ctx, `select n::int4 + 0 from generate_series(1, 10) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -131,8 +131,8 @@ func BenchmarkQueryTextFormatDecode_PG_int4_to_Go_int16_100_rows_10_columns(b *t _, err := conn.QueryFunc( ctx, `select n::int4 + 0, n::int4 + 1, n::int4 + 2, n::int4 + 3, n::int4 + 4, n::int4 + 5, n::int4 + 6, n::int4 + 7, n::int4 + 8, n::int4 + 9 from generate_series(1, 100) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -150,8 +150,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_int4_to_Go_int16_100_rows_10_columns(b _, err := conn.QueryFunc( ctx, `select n::int4 + 0, n::int4 + 1, n::int4 + 2, n::int4 + 3, n::int4 + 4, n::int4 + 5, n::int4 + 6, n::int4 + 7, n::int4 + 8, n::int4 + 9 from generate_series(1, 100) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -169,8 +169,8 @@ func BenchmarkQueryTextFormatDecode_PG_int4_to_Go_int32_1_rows_1_columns(b *test _, err := conn.QueryFunc( ctx, `select n::int4 + 0 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -188,8 +188,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_int4_to_Go_int32_1_rows_1_columns(b *te _, err := conn.QueryFunc( ctx, `select n::int4 + 0 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -207,8 +207,8 @@ func BenchmarkQueryTextFormatDecode_PG_int4_to_Go_int32_1_rows_10_columns(b *tes _, err := conn.QueryFunc( ctx, `select n::int4 + 0, n::int4 + 1, n::int4 + 2, n::int4 + 3, n::int4 + 4, n::int4 + 5, n::int4 + 6, n::int4 + 7, n::int4 + 8, n::int4 + 9 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -226,8 +226,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_int4_to_Go_int32_1_rows_10_columns(b *t _, err := conn.QueryFunc( ctx, `select n::int4 + 0, n::int4 + 1, n::int4 + 2, n::int4 + 3, n::int4 + 4, n::int4 + 5, n::int4 + 6, n::int4 + 7, n::int4 + 8, n::int4 + 9 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -245,8 +245,8 @@ func BenchmarkQueryTextFormatDecode_PG_int4_to_Go_int32_10_rows_1_columns(b *tes _, err := conn.QueryFunc( ctx, `select n::int4 + 0 from generate_series(1, 10) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -264,8 +264,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_int4_to_Go_int32_10_rows_1_columns(b *t _, err := conn.QueryFunc( ctx, `select n::int4 + 0 from generate_series(1, 10) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -283,8 +283,8 @@ func BenchmarkQueryTextFormatDecode_PG_int4_to_Go_int32_100_rows_10_columns(b *t _, err := conn.QueryFunc( ctx, `select n::int4 + 0, n::int4 + 1, n::int4 + 2, n::int4 + 3, n::int4 + 4, n::int4 + 5, n::int4 + 6, n::int4 + 7, n::int4 + 8, n::int4 + 9 from generate_series(1, 100) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -302,8 +302,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_int4_to_Go_int32_100_rows_10_columns(b _, err := conn.QueryFunc( ctx, `select n::int4 + 0, n::int4 + 1, n::int4 + 2, n::int4 + 3, n::int4 + 4, n::int4 + 5, n::int4 + 6, n::int4 + 7, n::int4 + 8, n::int4 + 9 from generate_series(1, 100) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -321,8 +321,8 @@ func BenchmarkQueryTextFormatDecode_PG_int4_to_Go_int64_1_rows_1_columns(b *test _, err := conn.QueryFunc( ctx, `select n::int4 + 0 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -340,8 +340,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_int4_to_Go_int64_1_rows_1_columns(b *te _, err := conn.QueryFunc( ctx, `select n::int4 + 0 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -359,8 +359,8 @@ func BenchmarkQueryTextFormatDecode_PG_int4_to_Go_int64_1_rows_10_columns(b *tes _, err := conn.QueryFunc( ctx, `select n::int4 + 0, n::int4 + 1, n::int4 + 2, n::int4 + 3, n::int4 + 4, n::int4 + 5, n::int4 + 6, n::int4 + 7, n::int4 + 8, n::int4 + 9 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -378,8 +378,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_int4_to_Go_int64_1_rows_10_columns(b *t _, err := conn.QueryFunc( ctx, `select n::int4 + 0, n::int4 + 1, n::int4 + 2, n::int4 + 3, n::int4 + 4, n::int4 + 5, n::int4 + 6, n::int4 + 7, n::int4 + 8, n::int4 + 9 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -397,8 +397,8 @@ func BenchmarkQueryTextFormatDecode_PG_int4_to_Go_int64_10_rows_1_columns(b *tes _, err := conn.QueryFunc( ctx, `select n::int4 + 0 from generate_series(1, 10) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -416,8 +416,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_int4_to_Go_int64_10_rows_1_columns(b *t _, err := conn.QueryFunc( ctx, `select n::int4 + 0 from generate_series(1, 10) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -435,8 +435,8 @@ func BenchmarkQueryTextFormatDecode_PG_int4_to_Go_int64_100_rows_10_columns(b *t _, err := conn.QueryFunc( ctx, `select n::int4 + 0, n::int4 + 1, n::int4 + 2, n::int4 + 3, n::int4 + 4, n::int4 + 5, n::int4 + 6, n::int4 + 7, n::int4 + 8, n::int4 + 9 from generate_series(1, 100) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -454,8 +454,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_int4_to_Go_int64_100_rows_10_columns(b _, err := conn.QueryFunc( ctx, `select n::int4 + 0, n::int4 + 1, n::int4 + 2, n::int4 + 3, n::int4 + 4, n::int4 + 5, n::int4 + 6, n::int4 + 7, n::int4 + 8, n::int4 + 9 from generate_series(1, 100) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -473,8 +473,8 @@ func BenchmarkQueryTextFormatDecode_PG_int4_to_Go_uint64_1_rows_1_columns(b *tes _, err := conn.QueryFunc( ctx, `select n::int4 + 0 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -492,8 +492,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_int4_to_Go_uint64_1_rows_1_columns(b *t _, err := conn.QueryFunc( ctx, `select n::int4 + 0 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -511,8 +511,8 @@ func BenchmarkQueryTextFormatDecode_PG_int4_to_Go_uint64_1_rows_10_columns(b *te _, err := conn.QueryFunc( ctx, `select n::int4 + 0, n::int4 + 1, n::int4 + 2, n::int4 + 3, n::int4 + 4, n::int4 + 5, n::int4 + 6, n::int4 + 7, n::int4 + 8, n::int4 + 9 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -530,8 +530,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_int4_to_Go_uint64_1_rows_10_columns(b * _, err := conn.QueryFunc( ctx, `select n::int4 + 0, n::int4 + 1, n::int4 + 2, n::int4 + 3, n::int4 + 4, n::int4 + 5, n::int4 + 6, n::int4 + 7, n::int4 + 8, n::int4 + 9 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -549,8 +549,8 @@ func BenchmarkQueryTextFormatDecode_PG_int4_to_Go_uint64_10_rows_1_columns(b *te _, err := conn.QueryFunc( ctx, `select n::int4 + 0 from generate_series(1, 10) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -568,8 +568,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_int4_to_Go_uint64_10_rows_1_columns(b * _, err := conn.QueryFunc( ctx, `select n::int4 + 0 from generate_series(1, 10) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -587,8 +587,8 @@ func BenchmarkQueryTextFormatDecode_PG_int4_to_Go_uint64_100_rows_10_columns(b * _, err := conn.QueryFunc( ctx, `select n::int4 + 0, n::int4 + 1, n::int4 + 2, n::int4 + 3, n::int4 + 4, n::int4 + 5, n::int4 + 6, n::int4 + 7, n::int4 + 8, n::int4 + 9 from generate_series(1, 100) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -606,8 +606,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_int4_to_Go_uint64_100_rows_10_columns(b _, err := conn.QueryFunc( ctx, `select n::int4 + 0, n::int4 + 1, n::int4 + 2, n::int4 + 3, n::int4 + 4, n::int4 + 5, n::int4 + 6, n::int4 + 7, n::int4 + 8, n::int4 + 9 from generate_series(1, 100) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -625,8 +625,8 @@ func BenchmarkQueryTextFormatDecode_PG_int4_to_Go_pgtype_Int4_1_rows_1_columns(b _, err := conn.QueryFunc( ctx, `select n::int4 + 0 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -644,8 +644,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_int4_to_Go_pgtype_Int4_1_rows_1_columns _, err := conn.QueryFunc( ctx, `select n::int4 + 0 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -663,8 +663,8 @@ func BenchmarkQueryTextFormatDecode_PG_int4_to_Go_pgtype_Int4_1_rows_10_columns( _, err := conn.QueryFunc( ctx, `select n::int4 + 0, n::int4 + 1, n::int4 + 2, n::int4 + 3, n::int4 + 4, n::int4 + 5, n::int4 + 6, n::int4 + 7, n::int4 + 8, n::int4 + 9 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -682,8 +682,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_int4_to_Go_pgtype_Int4_1_rows_10_column _, err := conn.QueryFunc( ctx, `select n::int4 + 0, n::int4 + 1, n::int4 + 2, n::int4 + 3, n::int4 + 4, n::int4 + 5, n::int4 + 6, n::int4 + 7, n::int4 + 8, n::int4 + 9 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -701,8 +701,8 @@ func BenchmarkQueryTextFormatDecode_PG_int4_to_Go_pgtype_Int4_10_rows_1_columns( _, err := conn.QueryFunc( ctx, `select n::int4 + 0 from generate_series(1, 10) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -720,8 +720,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_int4_to_Go_pgtype_Int4_10_rows_1_column _, err := conn.QueryFunc( ctx, `select n::int4 + 0 from generate_series(1, 10) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -739,8 +739,8 @@ func BenchmarkQueryTextFormatDecode_PG_int4_to_Go_pgtype_Int4_100_rows_10_column _, err := conn.QueryFunc( ctx, `select n::int4 + 0, n::int4 + 1, n::int4 + 2, n::int4 + 3, n::int4 + 4, n::int4 + 5, n::int4 + 6, n::int4 + 7, n::int4 + 8, n::int4 + 9 from generate_series(1, 100) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -758,8 +758,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_int4_to_Go_pgtype_Int4_100_rows_10_colu _, err := conn.QueryFunc( ctx, `select n::int4 + 0, n::int4 + 1, n::int4 + 2, n::int4 + 3, n::int4 + 4, n::int4 + 5, n::int4 + 6, n::int4 + 7, n::int4 + 8, n::int4 + 9 from generate_series(1, 100) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -777,8 +777,8 @@ func BenchmarkQueryTextFormatDecode_PG_numeric_to_Go_int64_1_rows_1_columns(b *t _, err := conn.QueryFunc( ctx, `select n::numeric + 0 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -796,8 +796,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_numeric_to_Go_int64_1_rows_1_columns(b _, err := conn.QueryFunc( ctx, `select n::numeric + 0 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -815,8 +815,8 @@ func BenchmarkQueryTextFormatDecode_PG_numeric_to_Go_int64_1_rows_10_columns(b * _, err := conn.QueryFunc( ctx, `select n::numeric + 0, n::numeric + 1, n::numeric + 2, n::numeric + 3, n::numeric + 4, n::numeric + 5, n::numeric + 6, n::numeric + 7, n::numeric + 8, n::numeric + 9 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -834,8 +834,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_numeric_to_Go_int64_1_rows_10_columns(b _, err := conn.QueryFunc( ctx, `select n::numeric + 0, n::numeric + 1, n::numeric + 2, n::numeric + 3, n::numeric + 4, n::numeric + 5, n::numeric + 6, n::numeric + 7, n::numeric + 8, n::numeric + 9 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -853,8 +853,8 @@ func BenchmarkQueryTextFormatDecode_PG_numeric_to_Go_int64_10_rows_1_columns(b * _, err := conn.QueryFunc( ctx, `select n::numeric + 0 from generate_series(1, 10) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -872,8 +872,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_numeric_to_Go_int64_10_rows_1_columns(b _, err := conn.QueryFunc( ctx, `select n::numeric + 0 from generate_series(1, 10) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -891,8 +891,8 @@ func BenchmarkQueryTextFormatDecode_PG_numeric_to_Go_int64_100_rows_10_columns(b _, err := conn.QueryFunc( ctx, `select n::numeric + 0, n::numeric + 1, n::numeric + 2, n::numeric + 3, n::numeric + 4, n::numeric + 5, n::numeric + 6, n::numeric + 7, n::numeric + 8, n::numeric + 9 from generate_series(1, 100) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -910,8 +910,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_numeric_to_Go_int64_100_rows_10_columns _, err := conn.QueryFunc( ctx, `select n::numeric + 0, n::numeric + 1, n::numeric + 2, n::numeric + 3, n::numeric + 4, n::numeric + 5, n::numeric + 6, n::numeric + 7, n::numeric + 8, n::numeric + 9 from generate_series(1, 100) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -929,8 +929,8 @@ func BenchmarkQueryTextFormatDecode_PG_numeric_to_Go_float64_1_rows_1_columns(b _, err := conn.QueryFunc( ctx, `select n::numeric + 0 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -948,8 +948,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_numeric_to_Go_float64_1_rows_1_columns( _, err := conn.QueryFunc( ctx, `select n::numeric + 0 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -967,8 +967,8 @@ func BenchmarkQueryTextFormatDecode_PG_numeric_to_Go_float64_1_rows_10_columns(b _, err := conn.QueryFunc( ctx, `select n::numeric + 0, n::numeric + 1, n::numeric + 2, n::numeric + 3, n::numeric + 4, n::numeric + 5, n::numeric + 6, n::numeric + 7, n::numeric + 8, n::numeric + 9 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -986,8 +986,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_numeric_to_Go_float64_1_rows_10_columns _, err := conn.QueryFunc( ctx, `select n::numeric + 0, n::numeric + 1, n::numeric + 2, n::numeric + 3, n::numeric + 4, n::numeric + 5, n::numeric + 6, n::numeric + 7, n::numeric + 8, n::numeric + 9 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -1005,8 +1005,8 @@ func BenchmarkQueryTextFormatDecode_PG_numeric_to_Go_float64_10_rows_1_columns(b _, err := conn.QueryFunc( ctx, `select n::numeric + 0 from generate_series(1, 10) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -1024,8 +1024,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_numeric_to_Go_float64_10_rows_1_columns _, err := conn.QueryFunc( ctx, `select n::numeric + 0 from generate_series(1, 10) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -1043,8 +1043,8 @@ func BenchmarkQueryTextFormatDecode_PG_numeric_to_Go_float64_100_rows_10_columns _, err := conn.QueryFunc( ctx, `select n::numeric + 0, n::numeric + 1, n::numeric + 2, n::numeric + 3, n::numeric + 4, n::numeric + 5, n::numeric + 6, n::numeric + 7, n::numeric + 8, n::numeric + 9 from generate_series(1, 100) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -1062,8 +1062,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_numeric_to_Go_float64_100_rows_10_colum _, err := conn.QueryFunc( ctx, `select n::numeric + 0, n::numeric + 1, n::numeric + 2, n::numeric + 3, n::numeric + 4, n::numeric + 5, n::numeric + 6, n::numeric + 7, n::numeric + 8, n::numeric + 9 from generate_series(1, 100) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -1081,8 +1081,8 @@ func BenchmarkQueryTextFormatDecode_PG_numeric_to_Go_pgtype_Numeric_1_rows_1_col _, err := conn.QueryFunc( ctx, `select n::numeric + 0 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -1100,8 +1100,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_numeric_to_Go_pgtype_Numeric_1_rows_1_c _, err := conn.QueryFunc( ctx, `select n::numeric + 0 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -1119,8 +1119,8 @@ func BenchmarkQueryTextFormatDecode_PG_numeric_to_Go_pgtype_Numeric_1_rows_10_co _, err := conn.QueryFunc( ctx, `select n::numeric + 0, n::numeric + 1, n::numeric + 2, n::numeric + 3, n::numeric + 4, n::numeric + 5, n::numeric + 6, n::numeric + 7, n::numeric + 8, n::numeric + 9 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -1138,8 +1138,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_numeric_to_Go_pgtype_Numeric_1_rows_10_ _, err := conn.QueryFunc( ctx, `select n::numeric + 0, n::numeric + 1, n::numeric + 2, n::numeric + 3, n::numeric + 4, n::numeric + 5, n::numeric + 6, n::numeric + 7, n::numeric + 8, n::numeric + 9 from generate_series(1, 1) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -1157,8 +1157,8 @@ func BenchmarkQueryTextFormatDecode_PG_numeric_to_Go_pgtype_Numeric_10_rows_1_co _, err := conn.QueryFunc( ctx, `select n::numeric + 0 from generate_series(1, 10) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -1176,8 +1176,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_numeric_to_Go_pgtype_Numeric_10_rows_1_ _, err := conn.QueryFunc( ctx, `select n::numeric + 0 from generate_series(1, 10) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -1195,8 +1195,8 @@ func BenchmarkQueryTextFormatDecode_PG_numeric_to_Go_pgtype_Numeric_100_rows_10_ _, err := conn.QueryFunc( ctx, `select n::numeric + 0, n::numeric + 1, n::numeric + 2, n::numeric + 3, n::numeric + 4, n::numeric + 5, n::numeric + 6, n::numeric + 7, n::numeric + 8, n::numeric + 9 from generate_series(1, 100) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -1214,8 +1214,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_numeric_to_Go_pgtype_Numeric_100_rows_1 _, err := conn.QueryFunc( ctx, `select n::numeric + 0, n::numeric + 1, n::numeric + 2, n::numeric + 3, n::numeric + 4, n::numeric + 5, n::numeric + 6, n::numeric + 7, n::numeric + 8, n::numeric + 9 from generate_series(1, 100) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8], &v[9]}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -1233,8 +1233,8 @@ func BenchmarkQueryTextFormatDecode_PG_Int4Array_With_Go_Int4Array_10(b *testing _, err := conn.QueryFunc( ctx, `select array_agg(n) from generate_series(1, 10) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -1252,8 +1252,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_Int4Array_With_Go_Int4Array_10(b *testi _, err := conn.QueryFunc( ctx, `select array_agg(n) from generate_series(1, 10) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -1271,8 +1271,8 @@ func BenchmarkQueryTextFormatDecode_PG_Int4Array_With_Go_Int4Array_100(b *testin _, err := conn.QueryFunc( ctx, `select array_agg(n) from generate_series(1, 100) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -1290,8 +1290,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_Int4Array_With_Go_Int4Array_100(b *test _, err := conn.QueryFunc( ctx, `select array_agg(n) from generate_series(1, 100) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -1309,8 +1309,8 @@ func BenchmarkQueryTextFormatDecode_PG_Int4Array_With_Go_Int4Array_1000(b *testi _, err := conn.QueryFunc( ctx, `select array_agg(n) from generate_series(1, 1000) n`, - []interface{}{pgx.QueryResultFormats{pgx.TextFormatCode}}, - []interface{}{&v}, + []any{pgx.QueryResultFormats{pgx.TextFormatCode}}, + []any{&v}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -1328,8 +1328,8 @@ func BenchmarkQueryBinaryFormatDecode_PG_Int4Array_With_Go_Int4Array_1000(b *tes _, err := conn.QueryFunc( ctx, `select array_agg(n) from generate_series(1, 1000) n`, - []interface{}{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, - []interface{}{&v}, + []any{pgx.QueryResultFormats{pgx.BinaryFormatCode}}, + []any{&v}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { diff --git a/pgtype/integration_benchmark_test.go.erb b/pgtype/integration_benchmark_test.go.erb index b122c606..3459f0cb 100644 --- a/pgtype/integration_benchmark_test.go.erb +++ b/pgtype/integration_benchmark_test.go.erb @@ -25,8 +25,8 @@ func BenchmarkQuery<%= format_name %>FormatDecode_PG_<%= pg_type %>_to_Go_<%= go _, err := conn.QueryFunc( ctx, `select <% columns.times do |col_idx| %><% if col_idx != 0 %>, <% end %>n::<%= pg_type %> + <%= col_idx%><% end %> from generate_series(1, <%= rows %>) n`, - []interface{}{pgx.QueryResultFormats{<%= format_code %>}}, - []interface{}{<% columns.times do |col_idx| %><% if col_idx != 0 %>, <% end %>&v[<%= col_idx%>]<% end %>}, + []any{pgx.QueryResultFormats{<%= format_code %>}}, + []any{<% columns.times do |col_idx| %><% if col_idx != 0 %>, <% end %>&v[<%= col_idx%>]<% end %>}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { @@ -50,8 +50,8 @@ func BenchmarkQuery<%= format_name %>FormatDecode_PG_Int4Array_With_Go_Int4Array _, err := conn.QueryFunc( ctx, `select array_agg(n) from generate_series(1, <%= array_size %>) n`, - []interface{}{pgx.QueryResultFormats{<%= format_code %>}}, - []interface{}{&v}, + []any{pgx.QueryResultFormats{<%= format_code %>}}, + []any{&v}, func(pgx.QueryFuncRow) error { return nil }, ) if err != nil { diff --git a/pgtype/interval.go b/pgtype/interval.go index 882fd6d6..a172ecdb 100644 --- a/pgtype/interval.go +++ b/pgtype/interval.go @@ -43,7 +43,7 @@ func (interval Interval) IntervalValue() (Interval, error) { } // Scan implements the database/sql Scanner interface. -func (interval *Interval) Scan(src interface{}) error { +func (interval *Interval) Scan(src any) error { if src == nil { *interval = Interval{} return nil @@ -80,7 +80,7 @@ func (IntervalCodec) PreferredFormat() int16 { return BinaryFormatCode } -func (IntervalCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (IntervalCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { if _, ok := value.(IntervalValuer); !ok { return nil } @@ -97,7 +97,7 @@ func (IntervalCodec) PlanEncode(m *Map, oid uint32, format int16, value interfac type encodePlanIntervalCodecBinary struct{} -func (encodePlanIntervalCodecBinary) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanIntervalCodecBinary) Encode(value any, buf []byte) (newBuf []byte, err error) { interval, err := value.(IntervalValuer).IntervalValue() if err != nil { return nil, err @@ -115,7 +115,7 @@ func (encodePlanIntervalCodecBinary) Encode(value interface{}, buf []byte) (newB type encodePlanIntervalCodecText struct{} -func (encodePlanIntervalCodecText) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanIntervalCodecText) Encode(value any, buf []byte) (newBuf []byte, err error) { interval, err := value.(IntervalValuer).IntervalValue() if err != nil { return nil, err @@ -151,7 +151,7 @@ func (encodePlanIntervalCodecText) Encode(value interface{}, buf []byte) (newBuf return buf, nil } -func (IntervalCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (IntervalCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: @@ -171,7 +171,7 @@ func (IntervalCodec) PlanScan(m *Map, oid uint32, format int16, target interface type scanPlanBinaryIntervalToIntervalScanner struct{} -func (scanPlanBinaryIntervalToIntervalScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryIntervalToIntervalScanner) Scan(src []byte, dst any) error { scanner := (dst).(IntervalScanner) if src == nil { @@ -191,7 +191,7 @@ func (scanPlanBinaryIntervalToIntervalScanner) Scan(src []byte, dst interface{}) type scanPlanTextAnyToIntervalScanner struct{} -func (scanPlanTextAnyToIntervalScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToIntervalScanner) Scan(src []byte, dst any) error { scanner := (dst).(IntervalScanner) if src == nil { @@ -278,7 +278,7 @@ func (c IntervalCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, return codecDecodeToTextFormat(c, m, oid, format, src) } -func (c IntervalCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c IntervalCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } diff --git a/pgtype/json.go b/pgtype/json.go index 4d8cf4c4..de2f08df 100644 --- a/pgtype/json.go +++ b/pgtype/json.go @@ -16,7 +16,7 @@ func (JSONCodec) PreferredFormat() int16 { return TextFormatCode } -func (c JSONCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (c JSONCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { switch value.(type) { case string: return encodePlanJSONCodecEitherFormatString{} @@ -43,7 +43,7 @@ func (c JSONCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{ type encodePlanJSONCodecEitherFormatString struct{} -func (encodePlanJSONCodecEitherFormatString) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanJSONCodecEitherFormatString) Encode(value any, buf []byte) (newBuf []byte, err error) { jsonString := value.(string) buf = append(buf, jsonString...) return buf, nil @@ -51,7 +51,7 @@ func (encodePlanJSONCodecEitherFormatString) Encode(value interface{}, buf []byt type encodePlanJSONCodecEitherFormatByteSlice struct{} -func (encodePlanJSONCodecEitherFormatByteSlice) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanJSONCodecEitherFormatByteSlice) Encode(value any, buf []byte) (newBuf []byte, err error) { jsonBytes := value.([]byte) if jsonBytes == nil { return nil, nil @@ -63,7 +63,7 @@ func (encodePlanJSONCodecEitherFormatByteSlice) Encode(value interface{}, buf [] type encodePlanJSONCodecEitherFormatMarshal struct{} -func (encodePlanJSONCodecEitherFormatMarshal) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanJSONCodecEitherFormatMarshal) Encode(value any, buf []byte) (newBuf []byte, err error) { jsonBytes, err := json.Marshal(value) if err != nil { return nil, err @@ -73,7 +73,7 @@ func (encodePlanJSONCodecEitherFormatMarshal) Encode(value interface{}, buf []by return buf, nil } -func (JSONCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (JSONCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch target.(type) { case *string: return scanPlanAnyToString{} @@ -89,7 +89,7 @@ func (JSONCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) type scanPlanAnyToString struct{} -func (scanPlanAnyToString) Scan(src []byte, dst interface{}) error { +func (scanPlanAnyToString) Scan(src []byte, dst any) error { p := dst.(*string) *p = string(src) return nil @@ -97,7 +97,7 @@ func (scanPlanAnyToString) Scan(src []byte, dst interface{}) error { type scanPlanJSONToByteSlice struct{} -func (scanPlanJSONToByteSlice) Scan(src []byte, dst interface{}) error { +func (scanPlanJSONToByteSlice) Scan(src []byte, dst any) error { dstBuf := dst.(*[]byte) if src == nil { *dstBuf = nil @@ -111,14 +111,14 @@ func (scanPlanJSONToByteSlice) Scan(src []byte, dst interface{}) error { type scanPlanJSONToBytesScanner struct{} -func (scanPlanJSONToBytesScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanJSONToBytesScanner) Scan(src []byte, dst any) error { scanner := (dst).(BytesScanner) return scanner.ScanBytes(src) } type scanPlanJSONToJSONUnmarshal struct{} -func (scanPlanJSONToJSONUnmarshal) Scan(src []byte, dst interface{}) error { +func (scanPlanJSONToJSONUnmarshal) Scan(src []byte, dst any) error { if src == nil { dstValue := reflect.ValueOf(dst) if dstValue.Kind() == reflect.Ptr { @@ -144,12 +144,12 @@ func (c JSONCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, src return dstBuf, nil } -func (c JSONCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c JSONCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } - var dst interface{} + var dst any err := json.Unmarshal(src, &dst) return dst, err } diff --git a/pgtype/json_test.go b/pgtype/json_test.go index 0275b1e6..c349fa24 100644 --- a/pgtype/json_test.go +++ b/pgtype/json_test.go @@ -7,10 +7,10 @@ import ( "github.com/jackc/pgx/v5/pgxtest" ) -func isExpectedEqMap(a interface{}) func(interface{}) bool { - return func(v interface{}) bool { - aa := a.(map[string]interface{}) - bb := v.(map[string]interface{}) +func isExpectedEqMap(a any) func(any) bool { + return func(v any) bool { + aa := a.(map[string]any) + bb := v.(map[string]any) if (aa == nil) != (bb == nil) { return false @@ -42,8 +42,8 @@ func TestJSONCodec(t *testing.T) { pgxtest.RunValueRoundTripTests(context.Background(), t, defaultConnTestRunner, nil, "json", []pgxtest.ValueRoundTripTest{ {nil, new(*jsonStruct), isExpectedEq((*jsonStruct)(nil))}, - {map[string]interface{}(nil), new(*string), isExpectedEq((*string)(nil))}, - {map[string]interface{}(nil), new([]byte), isExpectedEqBytes([]byte(nil))}, + {map[string]any(nil), new(*string), isExpectedEq((*string)(nil))}, + {map[string]any(nil), new([]byte), isExpectedEqBytes([]byte(nil))}, {[]byte(nil), new([]byte), isExpectedEqBytes([]byte(nil))}, {nil, new([]byte), isExpectedEqBytes([]byte(nil))}, }) @@ -54,7 +54,7 @@ func TestJSONCodec(t *testing.T) { {[]byte("42"), new([]byte), isExpectedEqBytes([]byte("42"))}, {[]byte(`"hello"`), new([]byte), isExpectedEqBytes([]byte(`"hello"`))}, {[]byte(`"hello"`), new(string), isExpectedEq(`"hello"`)}, - {map[string]interface{}{"foo": "bar"}, new(map[string]interface{}), isExpectedEqMap(map[string]interface{}{"foo": "bar"})}, + {map[string]any{"foo": "bar"}, new(map[string]any), isExpectedEqMap(map[string]any{"foo": "bar"})}, {jsonStruct{Name: "Adam", Age: 10}, new(jsonStruct), isExpectedEq(jsonStruct{Name: "Adam", Age: 10})}, }) } diff --git a/pgtype/jsonb.go b/pgtype/jsonb.go index 7e3d3f8d..25555e7f 100644 --- a/pgtype/jsonb.go +++ b/pgtype/jsonb.go @@ -16,7 +16,7 @@ func (JSONBCodec) PreferredFormat() int16 { return TextFormatCode } -func (JSONBCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (JSONBCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { switch format { case BinaryFormatCode: plan := JSONCodec{}.PlanEncode(m, oid, TextFormatCode, value) @@ -34,12 +34,12 @@ type encodePlanJSONBCodecBinaryWrapper struct { textPlan EncodePlan } -func (plan *encodePlanJSONBCodecBinaryWrapper) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *encodePlanJSONBCodecBinaryWrapper) Encode(value any, buf []byte) (newBuf []byte, err error) { buf = append(buf, 1) return plan.textPlan.Encode(value, buf) } -func (JSONBCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (JSONBCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: plan := JSONCodec{}.PlanScan(m, oid, TextFormatCode, target) @@ -57,7 +57,7 @@ type scanPlanJSONBCodecBinaryUnwrapper struct { textPlan ScanPlan } -func (plan *scanPlanJSONBCodecBinaryUnwrapper) Scan(src []byte, dst interface{}) error { +func (plan *scanPlanJSONBCodecBinaryUnwrapper) Scan(src []byte, dst any) error { if src == nil { return plan.textPlan.Scan(src, dst) } @@ -100,7 +100,7 @@ func (c JSONBCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, src } } -func (c JSONBCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c JSONBCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } @@ -121,7 +121,7 @@ func (c JSONBCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (i return nil, fmt.Errorf("unknown format code: %v", format) } - var dst interface{} + var dst any err := json.Unmarshal(src, &dst) return dst, err } diff --git a/pgtype/jsonb_test.go b/pgtype/jsonb_test.go index 4a9f7a35..7dadc6c5 100644 --- a/pgtype/jsonb_test.go +++ b/pgtype/jsonb_test.go @@ -15,8 +15,8 @@ func TestJSONBTranscode(t *testing.T) { pgxtest.RunValueRoundTripTests(context.Background(), t, defaultConnTestRunner, nil, "jsonb", []pgxtest.ValueRoundTripTest{ {nil, new(*jsonStruct), isExpectedEq((*jsonStruct)(nil))}, - {map[string]interface{}(nil), new(*string), isExpectedEq((*string)(nil))}, - {map[string]interface{}(nil), new([]byte), isExpectedEqBytes([]byte(nil))}, + {map[string]any(nil), new(*string), isExpectedEq((*string)(nil))}, + {map[string]any(nil), new([]byte), isExpectedEqBytes([]byte(nil))}, {[]byte(nil), new([]byte), isExpectedEqBytes([]byte(nil))}, {nil, new([]byte), isExpectedEqBytes([]byte(nil))}, }) @@ -27,7 +27,7 @@ func TestJSONBTranscode(t *testing.T) { {[]byte("42"), new([]byte), isExpectedEqBytes([]byte("42"))}, {[]byte(`"hello"`), new([]byte), isExpectedEqBytes([]byte(`"hello"`))}, {[]byte(`"hello"`), new(string), isExpectedEq(`"hello"`)}, - {map[string]interface{}{"foo": "bar"}, new(map[string]interface{}), isExpectedEqMap(map[string]interface{}{"foo": "bar"})}, + {map[string]any{"foo": "bar"}, new(map[string]any), isExpectedEqMap(map[string]any{"foo": "bar"})}, {jsonStruct{Name: "Adam", Age: 10}, new(jsonStruct), isExpectedEq(jsonStruct{Name: "Adam", Age: 10})}, }) } diff --git a/pgtype/line.go b/pgtype/line.go index 087c7688..4ae8003e 100644 --- a/pgtype/line.go +++ b/pgtype/line.go @@ -33,12 +33,12 @@ func (line Line) LineValue() (Line, error) { return line, nil } -func (line *Line) Set(src interface{}) error { +func (line *Line) Set(src any) error { return fmt.Errorf("cannot convert %v to Line", src) } // Scan implements the database/sql Scanner interface. -func (line *Line) Scan(src interface{}) error { +func (line *Line) Scan(src any) error { if src == nil { *line = Line{} return nil @@ -75,7 +75,7 @@ func (LineCodec) PreferredFormat() int16 { return BinaryFormatCode } -func (LineCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (LineCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { if _, ok := value.(LineValuer); !ok { return nil } @@ -92,7 +92,7 @@ func (LineCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) type encodePlanLineCodecBinary struct{} -func (encodePlanLineCodecBinary) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanLineCodecBinary) Encode(value any, buf []byte) (newBuf []byte, err error) { line, err := value.(LineValuer).LineValue() if err != nil { return nil, err @@ -110,7 +110,7 @@ func (encodePlanLineCodecBinary) Encode(value interface{}, buf []byte) (newBuf [ type encodePlanLineCodecText struct{} -func (encodePlanLineCodecText) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanLineCodecText) Encode(value any, buf []byte) (newBuf []byte, err error) { line, err := value.(LineValuer).LineValue() if err != nil { return nil, err @@ -128,7 +128,7 @@ func (encodePlanLineCodecText) Encode(value interface{}, buf []byte) (newBuf []b return buf, nil } -func (LineCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (LineCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: @@ -148,7 +148,7 @@ func (LineCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) type scanPlanBinaryLineToLineScanner struct{} -func (scanPlanBinaryLineToLineScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryLineToLineScanner) Scan(src []byte, dst any) error { scanner := (dst).(LineScanner) if src == nil { @@ -173,7 +173,7 @@ func (scanPlanBinaryLineToLineScanner) Scan(src []byte, dst interface{}) error { type scanPlanTextAnyToLineScanner struct{} -func (scanPlanTextAnyToLineScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToLineScanner) Scan(src []byte, dst any) error { scanner := (dst).(LineScanner) if src == nil { @@ -211,7 +211,7 @@ func (c LineCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, src return codecDecodeToTextFormat(c, m, oid, format, src) } -func (c LineCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c LineCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } diff --git a/pgtype/lseg.go b/pgtype/lseg.go index f5cf888e..97f130dc 100644 --- a/pgtype/lseg.go +++ b/pgtype/lseg.go @@ -34,7 +34,7 @@ func (lseg Lseg) LsegValue() (Lseg, error) { } // Scan implements the database/sql Scanner interface. -func (lseg *Lseg) Scan(src interface{}) error { +func (lseg *Lseg) Scan(src any) error { if src == nil { *lseg = Lseg{} return nil @@ -71,7 +71,7 @@ func (LsegCodec) PreferredFormat() int16 { return BinaryFormatCode } -func (LsegCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (LsegCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { if _, ok := value.(LsegValuer); !ok { return nil } @@ -88,7 +88,7 @@ func (LsegCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) type encodePlanLsegCodecBinary struct{} -func (encodePlanLsegCodecBinary) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanLsegCodecBinary) Encode(value any, buf []byte) (newBuf []byte, err error) { lseg, err := value.(LsegValuer).LsegValue() if err != nil { return nil, err @@ -107,7 +107,7 @@ func (encodePlanLsegCodecBinary) Encode(value interface{}, buf []byte) (newBuf [ type encodePlanLsegCodecText struct{} -func (encodePlanLsegCodecText) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanLsegCodecText) Encode(value any, buf []byte) (newBuf []byte, err error) { lseg, err := value.(LsegValuer).LsegValue() if err != nil { return nil, err @@ -126,7 +126,7 @@ func (encodePlanLsegCodecText) Encode(value interface{}, buf []byte) (newBuf []b return buf, nil } -func (LsegCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (LsegCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: @@ -146,7 +146,7 @@ func (LsegCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) type scanPlanBinaryLsegToLsegScanner struct{} -func (scanPlanBinaryLsegToLsegScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryLsegToLsegScanner) Scan(src []byte, dst any) error { scanner := (dst).(LsegScanner) if src == nil { @@ -173,7 +173,7 @@ func (scanPlanBinaryLsegToLsegScanner) Scan(src []byte, dst interface{}) error { type scanPlanTextAnyToLsegScanner struct{} -func (scanPlanTextAnyToLsegScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToLsegScanner) Scan(src []byte, dst any) error { scanner := (dst).(LsegScanner) if src == nil { @@ -224,7 +224,7 @@ func (c LsegCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, src return codecDecodeToTextFormat(c, m, oid, format, src) } -func (c LsegCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c LsegCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } diff --git a/pgtype/macaddr.go b/pgtype/macaddr.go index 686e759a..e913ec90 100644 --- a/pgtype/macaddr.go +++ b/pgtype/macaddr.go @@ -15,7 +15,7 @@ func (MacaddrCodec) PreferredFormat() int16 { return BinaryFormatCode } -func (MacaddrCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (MacaddrCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { switch format { case BinaryFormatCode: switch value.(type) { @@ -39,7 +39,7 @@ func (MacaddrCodec) PlanEncode(m *Map, oid uint32, format int16, value interface type encodePlanMacaddrCodecBinaryHardwareAddr struct{} -func (encodePlanMacaddrCodecBinaryHardwareAddr) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanMacaddrCodecBinaryHardwareAddr) Encode(value any, buf []byte) (newBuf []byte, err error) { addr := value.(net.HardwareAddr) if addr == nil { return nil, nil @@ -50,7 +50,7 @@ func (encodePlanMacaddrCodecBinaryHardwareAddr) Encode(value interface{}, buf [] type encodePlanMacAddrCodecTextValuer struct{} -func (encodePlanMacAddrCodecTextValuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanMacAddrCodecTextValuer) Encode(value any, buf []byte) (newBuf []byte, err error) { t, err := value.(TextValuer).TextValue() if err != nil { return nil, err @@ -69,7 +69,7 @@ func (encodePlanMacAddrCodecTextValuer) Encode(value interface{}, buf []byte) (n type encodePlanMacaddrCodecTextHardwareAddr struct{} -func (encodePlanMacaddrCodecTextHardwareAddr) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanMacaddrCodecTextHardwareAddr) Encode(value any, buf []byte) (newBuf []byte, err error) { addr := value.(net.HardwareAddr) if addr == nil { return nil, nil @@ -78,7 +78,7 @@ func (encodePlanMacaddrCodecTextHardwareAddr) Encode(value interface{}, buf []by return append(buf, addr.String()...), nil } -func (MacaddrCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (MacaddrCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: switch target.(type) { @@ -101,7 +101,7 @@ func (MacaddrCodec) PlanScan(m *Map, oid uint32, format int16, target interface{ type scanPlanBinaryMacaddrToHardwareAddr struct{} -func (scanPlanBinaryMacaddrToHardwareAddr) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryMacaddrToHardwareAddr) Scan(src []byte, dst any) error { dstBuf := dst.(*net.HardwareAddr) if src == nil { *dstBuf = nil @@ -115,7 +115,7 @@ func (scanPlanBinaryMacaddrToHardwareAddr) Scan(src []byte, dst interface{}) err type scanPlanBinaryMacaddrToTextScanner struct{} -func (scanPlanBinaryMacaddrToTextScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryMacaddrToTextScanner) Scan(src []byte, dst any) error { scanner := (dst).(TextScanner) if src == nil { return scanner.ScanText(Text{}) @@ -126,7 +126,7 @@ func (scanPlanBinaryMacaddrToTextScanner) Scan(src []byte, dst interface{}) erro type scanPlanTextMacaddrToHardwareAddr struct{} -func (scanPlanTextMacaddrToHardwareAddr) Scan(src []byte, dst interface{}) error { +func (scanPlanTextMacaddrToHardwareAddr) Scan(src []byte, dst any) error { p := dst.(*net.HardwareAddr) if src == nil { @@ -148,7 +148,7 @@ func (c MacaddrCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, s return codecDecodeToTextFormat(c, m, oid, format, src) } -func (c MacaddrCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c MacaddrCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } diff --git a/pgtype/macaddr_test.go b/pgtype/macaddr_test.go index e2463271..ef6dae00 100644 --- a/pgtype/macaddr_test.go +++ b/pgtype/macaddr_test.go @@ -9,8 +9,8 @@ import ( "github.com/jackc/pgx/v5/pgxtest" ) -func isExpectedEqHardwareAddr(a interface{}) func(interface{}) bool { - return func(v interface{}) bool { +func isExpectedEqHardwareAddr(a any) func(any) bool { + return func(v any) bool { aa := a.(net.HardwareAddr) vv := v.(net.HardwareAddr) diff --git a/pgtype/numeric.go b/pgtype/numeric.go index 5ca7d077..a5f4ed3a 100644 --- a/pgtype/numeric.go +++ b/pgtype/numeric.go @@ -201,7 +201,7 @@ func nbaseDigitsToInt64(src []byte) (accum int64, bytesRead, digitsRead int) { } // Scan implements the database/sql Scanner interface. -func (n *Numeric) Scan(src interface{}) error { +func (n *Numeric) Scan(src any) error { if src == nil { *n = Numeric{} return nil @@ -281,7 +281,7 @@ func (NumericCodec) PreferredFormat() int16 { return BinaryFormatCode } -func (NumericCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (NumericCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { switch format { case BinaryFormatCode: switch value.(type) { @@ -308,7 +308,7 @@ func (NumericCodec) PlanEncode(m *Map, oid uint32, format int16, value interface type encodePlanNumericCodecBinaryNumericValuer struct{} -func (encodePlanNumericCodecBinaryNumericValuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanNumericCodecBinaryNumericValuer) Encode(value any, buf []byte) (newBuf []byte, err error) { n, err := value.(NumericValuer).NumericValue() if err != nil { return nil, err @@ -319,7 +319,7 @@ func (encodePlanNumericCodecBinaryNumericValuer) Encode(value interface{}, buf [ type encodePlanNumericCodecBinaryFloat64Valuer struct{} -func (encodePlanNumericCodecBinaryFloat64Valuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanNumericCodecBinaryFloat64Valuer) Encode(value any, buf []byte) (newBuf []byte, err error) { n, err := value.(Float64Valuer).Float64Value() if err != nil { return nil, err @@ -346,7 +346,7 @@ func (encodePlanNumericCodecBinaryFloat64Valuer) Encode(value interface{}, buf [ type encodePlanNumericCodecBinaryInt64Valuer struct{} -func (encodePlanNumericCodecBinaryInt64Valuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanNumericCodecBinaryInt64Valuer) Encode(value any, buf []byte) (newBuf []byte, err error) { n, err := value.(Int64Valuer).Int64Value() if err != nil { return nil, err @@ -460,7 +460,7 @@ func encodeNumericBinary(n Numeric, buf []byte) (newBuf []byte, err error) { type encodePlanNumericCodecTextNumericValuer struct{} -func (encodePlanNumericCodecTextNumericValuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanNumericCodecTextNumericValuer) Encode(value any, buf []byte) (newBuf []byte, err error) { n, err := value.(NumericValuer).NumericValue() if err != nil { return nil, err @@ -471,7 +471,7 @@ func (encodePlanNumericCodecTextNumericValuer) Encode(value interface{}, buf []b type encodePlanNumericCodecTextFloat64Valuer struct{} -func (encodePlanNumericCodecTextFloat64Valuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanNumericCodecTextFloat64Valuer) Encode(value any, buf []byte) (newBuf []byte, err error) { n, err := value.(Float64Valuer).Float64Value() if err != nil { return nil, err @@ -495,7 +495,7 @@ func (encodePlanNumericCodecTextFloat64Valuer) Encode(value interface{}, buf []b type encodePlanNumericCodecTextInt64Valuer struct{} -func (encodePlanNumericCodecTextInt64Valuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanNumericCodecTextInt64Valuer) Encode(value any, buf []byte) (newBuf []byte, err error) { n, err := value.(Int64Valuer).Int64Value() if err != nil { return nil, err @@ -530,7 +530,7 @@ func encodeNumericText(n Numeric, buf []byte) (newBuf []byte, err error) { return buf, nil } -func (NumericCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (NumericCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: @@ -560,7 +560,7 @@ func (NumericCodec) PlanScan(m *Map, oid uint32, format int16, target interface{ type scanPlanBinaryNumericToNumericScanner struct{} -func (scanPlanBinaryNumericToNumericScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryNumericToNumericScanner) Scan(src []byte, dst any) error { scanner := (dst).(NumericScanner) if src == nil { @@ -666,7 +666,7 @@ func (scanPlanBinaryNumericToNumericScanner) Scan(src []byte, dst interface{}) e type scanPlanBinaryNumericToFloat64Scanner struct{} -func (scanPlanBinaryNumericToFloat64Scanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryNumericToFloat64Scanner) Scan(src []byte, dst any) error { scanner := (dst).(Float64Scanner) if src == nil { @@ -690,7 +690,7 @@ func (scanPlanBinaryNumericToFloat64Scanner) Scan(src []byte, dst interface{}) e type scanPlanBinaryNumericToInt64Scanner struct{} -func (scanPlanBinaryNumericToInt64Scanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryNumericToInt64Scanner) Scan(src []byte, dst any) error { scanner := (dst).(Int64Scanner) if src == nil { @@ -718,7 +718,7 @@ func (scanPlanBinaryNumericToInt64Scanner) Scan(src []byte, dst interface{}) err type scanPlanBinaryNumericToTextScanner struct{} -func (scanPlanBinaryNumericToTextScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryNumericToTextScanner) Scan(src []byte, dst any) error { scanner := (dst).(TextScanner) if src == nil { @@ -742,7 +742,7 @@ func (scanPlanBinaryNumericToTextScanner) Scan(src []byte, dst interface{}) erro type scanPlanTextAnyToNumericScanner struct{} -func (scanPlanTextAnyToNumericScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToNumericScanner) Scan(src []byte, dst any) error { scanner := (dst).(NumericScanner) if src == nil { @@ -787,7 +787,7 @@ func (c NumericCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, s return string(buf), nil } -func (c NumericCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c NumericCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } diff --git a/pgtype/numeric_test.go b/pgtype/numeric_test.go index d95deaa5..14225e92 100644 --- a/pgtype/numeric_test.go +++ b/pgtype/numeric_test.go @@ -24,8 +24,8 @@ func mustParseBigInt(t *testing.T, src string) *big.Int { return i } -func isExpectedEqNumeric(a interface{}) func(interface{}) bool { - return func(v interface{}) bool { +func isExpectedEqNumeric(a any) func(any) bool { + return func(v any) bool { aa := a.(pgtype.Numeric) vv := v.(pgtype.Numeric) @@ -101,8 +101,8 @@ func TestNumericCodec(t *testing.T) { {pgtype.Numeric{NaN: true, Valid: true}, new(pgtype.Numeric), isExpectedEqNumeric(pgtype.Numeric{NaN: true, Valid: true})}, {longestNumeric, new(pgtype.Numeric), isExpectedEqNumeric(longestNumeric)}, {mustParseNumeric(t, "1"), new(int64), isExpectedEq(int64(1))}, - {math.NaN(), new(float64), func(a interface{}) bool { return math.IsNaN(a.(float64)) }}, - {float32(math.NaN()), new(float32), func(a interface{}) bool { return math.IsNaN(float64(a.(float32))) }}, + {math.NaN(), new(float64), func(a any) bool { return math.IsNaN(a.(float64)) }}, + {float32(math.NaN()), new(float32), func(a any) bool { return math.IsNaN(float64(a.(float32))) }}, {int64(-1), new(pgtype.Numeric), isExpectedEqNumeric(mustParseNumeric(t, "-1"))}, {int64(0), new(pgtype.Numeric), isExpectedEqNumeric(mustParseNumeric(t, "0"))}, {int64(1), new(pgtype.Numeric), isExpectedEqNumeric(mustParseNumeric(t, "1"))}, diff --git a/pgtype/path.go b/pgtype/path.go index 10767404..73e0ec52 100644 --- a/pgtype/path.go +++ b/pgtype/path.go @@ -35,7 +35,7 @@ func (path Path) PathValue() (Path, error) { } // Scan implements the database/sql Scanner interface. -func (path *Path) Scan(src interface{}) error { +func (path *Path) Scan(src any) error { if src == nil { *path = Path{} return nil @@ -73,7 +73,7 @@ func (PathCodec) PreferredFormat() int16 { return BinaryFormatCode } -func (PathCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (PathCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { if _, ok := value.(PathValuer); !ok { return nil } @@ -90,7 +90,7 @@ func (PathCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) type encodePlanPathCodecBinary struct{} -func (encodePlanPathCodecBinary) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanPathCodecBinary) Encode(value any, buf []byte) (newBuf []byte, err error) { path, err := value.(PathValuer).PathValue() if err != nil { return nil, err @@ -118,7 +118,7 @@ func (encodePlanPathCodecBinary) Encode(value interface{}, buf []byte) (newBuf [ type encodePlanPathCodecText struct{} -func (encodePlanPathCodecText) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanPathCodecText) Encode(value any, buf []byte) (newBuf []byte, err error) { path, err := value.(PathValuer).PathValue() if err != nil { return nil, err @@ -153,7 +153,7 @@ func (encodePlanPathCodecText) Encode(value interface{}, buf []byte) (newBuf []b return buf, nil } -func (PathCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (PathCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: @@ -173,7 +173,7 @@ func (PathCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) type scanPlanBinaryPathToPathScanner struct{} -func (scanPlanBinaryPathToPathScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryPathToPathScanner) Scan(src []byte, dst any) error { scanner := (dst).(PathScanner) if src == nil { @@ -211,7 +211,7 @@ func (scanPlanBinaryPathToPathScanner) Scan(src []byte, dst interface{}) error { type scanPlanTextAnyToPathScanner struct{} -func (scanPlanTextAnyToPathScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToPathScanner) Scan(src []byte, dst any) error { scanner := (dst).(PathScanner) if src == nil { @@ -258,7 +258,7 @@ func (c PathCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, src return codecDecodeToTextFormat(c, m, oid, format, src) } -func (c PathCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c PathCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } diff --git a/pgtype/path_test.go b/pgtype/path_test.go index f9e13294..cfffd22a 100644 --- a/pgtype/path_test.go +++ b/pgtype/path_test.go @@ -8,8 +8,8 @@ import ( "github.com/jackc/pgx/v5/pgxtest" ) -func isExpectedEqPath(a interface{}) func(interface{}) bool { - return func(v interface{}) bool { +func isExpectedEqPath(a any) func(any) bool { + return func(v any) bool { ap := a.(pgtype.Path) vp := v.(pgtype.Path) diff --git a/pgtype/pgtype.go b/pgtype/pgtype.go index 94158cb8..ffdb7020 100644 --- a/pgtype/pgtype.go +++ b/pgtype/pgtype.go @@ -142,21 +142,21 @@ type Codec interface { // PlanEncode returns an EncodePlan for encoding value into PostgreSQL format for oid and format. If no plan can be // found then nil is returned. - PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan + PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan // PlanScan returns a ScanPlan for scanning a PostgreSQL value into a destination with the same type as target. If // no plan can be found then nil is returned. - PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan + PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan // DecodeDatabaseSQLValue returns src decoded into a value compatible with the sql.Scanner interface. DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, src []byte) (driver.Value, error) // DecodeValue returns src decoded into its default format. - DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) + DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) } type nullAssignmentError struct { - dst interface{} + dst any } func (e *nullAssignmentError) Error() string { @@ -316,7 +316,7 @@ func NewMap() *Map { m.RegisterType(&Type{Name: "_varchar", OID: VarcharArrayOID, Codec: &ArrayCodec{ElementType: m.oidToType[VarcharOID]}}) m.RegisterType(&Type{Name: "_xid", OID: XIDArrayOID, Codec: &ArrayCodec{ElementType: m.oidToType[XIDOID]}}) - registerDefaultPgTypeVariants := func(name, arrayName string, value interface{}) { + registerDefaultPgTypeVariants := func(name, arrayName string, value any) { // T m.RegisterDefaultPgType(value, name) @@ -416,7 +416,7 @@ func (m *Map) RegisterType(t *Type) { // RegisterDefaultPgType registers a mapping of a Go type to a PostgreSQL type name. Typically the data type to be // encoded or decoded is determined by the PostgreSQL OID. But if the OID of a value to be encoded or decoded is // unknown, this additional mapping will be used by TypeForValue to determine a suitable data type. -func (m *Map) RegisterDefaultPgType(value interface{}, name string) { +func (m *Map) RegisterDefaultPgType(value any, name string) { m.reflectTypeToName[reflect.TypeOf(value)] = name // Invalidated by type registration @@ -448,7 +448,7 @@ func (m *Map) buildReflectTypeToType() { // TypeForValue finds a data type suitable for v. Use RegisterType to register types that can encode and decode // themselves. Use RegisterDefaultPgType to register that can be handled by a registered data type. -func (m *Map) TypeForValue(v interface{}) (*Type, bool) { +func (m *Map) TypeForValue(v any) (*Type, bool) { if m.reflectTypeToType == nil { m.buildReflectTypeToType() } @@ -472,13 +472,13 @@ type EncodePlan interface { // Encode appends the encoded bytes of value to buf. If value is the SQL value NULL then append nothing and return // (nil, nil). The caller of Encode is responsible for writing the correct NULL value or the length of the data // written. - Encode(value interface{}, buf []byte) (newBuf []byte, err error) + Encode(value any, buf []byte) (newBuf []byte, err error) } // ScanPlan is a precompiled plan to scan into a type of destination. type ScanPlan interface { // Scan scans src into target. - Scan(src []byte, target interface{}) error + Scan(src []byte, target any) error } type scanPlanCodecSQLScanner struct { @@ -488,7 +488,7 @@ type scanPlanCodecSQLScanner struct { formatCode int16 } -func (plan *scanPlanCodecSQLScanner) Scan(src []byte, dst interface{}) error { +func (plan *scanPlanCodecSQLScanner) Scan(src []byte, dst any) error { value, err := plan.c.DecodeDatabaseSQLValue(plan.m, plan.oid, plan.formatCode, src) if err != nil { return err @@ -502,7 +502,7 @@ type scanPlanSQLScanner struct { formatCode int16 } -func (plan *scanPlanSQLScanner) Scan(src []byte, dst interface{}) error { +func (plan *scanPlanSQLScanner) Scan(src []byte, dst any) error { scanner := dst.(sql.Scanner) if src == nil { // This is necessary because interface value []byte:nil does not equal nil:nil for the binary format path and the @@ -517,7 +517,7 @@ func (plan *scanPlanSQLScanner) Scan(src []byte, dst interface{}) error { type scanPlanString struct{} -func (scanPlanString) Scan(src []byte, dst interface{}) error { +func (scanPlanString) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -529,7 +529,7 @@ func (scanPlanString) Scan(src []byte, dst interface{}) error { type scanPlanAnyTextToBytes struct{} -func (scanPlanAnyTextToBytes) Scan(src []byte, dst interface{}) error { +func (scanPlanAnyTextToBytes) Scan(src []byte, dst any) error { dstBuf := dst.(*[]byte) if src == nil { *dstBuf = nil @@ -546,7 +546,7 @@ type scanPlanFail struct { formatCode int16 } -func (plan *scanPlanFail) Scan(src []byte, dst interface{}) error { +func (plan *scanPlanFail) Scan(src []byte, dst any) error { var format string switch plan.formatCode { case TextFormatCode: @@ -564,7 +564,7 @@ func (plan *scanPlanFail) Scan(src []byte, dst interface{}) error { // that will convert the target passed to Scan and then call the next plan. nextTarget is target as it will be converted // by plan. It must be used to find another suitable ScanPlan. When it is found SetNext must be called on plan for it // to be usabled. ok indicates if a suitable wrapper was found. -type TryWrapScanPlanFunc func(target interface{}) (plan WrappedScanPlanNextSetter, nextTarget interface{}, ok bool) +type TryWrapScanPlanFunc func(target any) (plan WrappedScanPlanNextSetter, nextTarget any, ok bool) type pointerPointerScanPlan struct { dstType reflect.Type @@ -573,7 +573,7 @@ type pointerPointerScanPlan struct { func (plan *pointerPointerScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *pointerPointerScanPlan) Scan(src []byte, dst interface{}) error { +func (plan *pointerPointerScanPlan) Scan(src []byte, dst any) error { el := reflect.ValueOf(dst).Elem() if src == nil { el.Set(reflect.Zero(el.Type())) @@ -586,7 +586,7 @@ func (plan *pointerPointerScanPlan) Scan(src []byte, dst interface{}) error { // TryPointerPointerScanPlan handles a pointer to a pointer by setting the target to nil for SQL NULL and allocating and // scanning for non-NULL. -func TryPointerPointerScanPlan(target interface{}) (plan WrappedScanPlanNextSetter, nextTarget interface{}, ok bool) { +func TryPointerPointerScanPlan(target any) (plan WrappedScanPlanNextSetter, nextTarget any, ok bool) { if dstValue := reflect.ValueOf(target); dstValue.Kind() == reflect.Ptr { elemValue := dstValue.Elem() if elemValue.Kind() == reflect.Ptr { @@ -627,13 +627,13 @@ type underlyingTypeScanPlan struct { func (plan *underlyingTypeScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *underlyingTypeScanPlan) Scan(src []byte, dst interface{}) error { +func (plan *underlyingTypeScanPlan) Scan(src []byte, dst any) error { return plan.next.Scan(src, reflect.ValueOf(dst).Convert(plan.nextDstType).Interface()) } // TryFindUnderlyingTypeScanPlan tries to convert to a Go builtin type. e.g. If value was of type MyString and // MyString was defined as a string then a wrapper plan would be returned that converts MyString to string. -func TryFindUnderlyingTypeScanPlan(dst interface{}) (plan WrappedScanPlanNextSetter, nextDst interface{}, ok bool) { +func TryFindUnderlyingTypeScanPlan(dst any) (plan WrappedScanPlanNextSetter, nextDst any, ok bool) { if _, ok := dst.(SkipUnderlyingTypePlanner); ok { return nil, nil, false } @@ -667,7 +667,7 @@ type WrappedScanPlanNextSetter interface { // TryWrapBuiltinTypeScanPlan tries to wrap a builtin type with a wrapper that provides additional methods. e.g. If // value was of type int32 then a wrapper plan would be returned that converts target to a value that implements // Int64Scanner. -func TryWrapBuiltinTypeScanPlan(target interface{}) (plan WrappedScanPlanNextSetter, nextDst interface{}, ok bool) { +func TryWrapBuiltinTypeScanPlan(target any) (plan WrappedScanPlanNextSetter, nextDst any, ok bool) { switch target := target.(type) { case *int8: return &wrapInt8ScanPlan{}, (*int8Wrapper)(target), true @@ -722,7 +722,7 @@ type wrapInt8ScanPlan struct { func (plan *wrapInt8ScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *wrapInt8ScanPlan) Scan(src []byte, dst interface{}) error { +func (plan *wrapInt8ScanPlan) Scan(src []byte, dst any) error { return plan.next.Scan(src, (*int8Wrapper)(dst.(*int8))) } @@ -732,7 +732,7 @@ type wrapInt16ScanPlan struct { func (plan *wrapInt16ScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *wrapInt16ScanPlan) Scan(src []byte, dst interface{}) error { +func (plan *wrapInt16ScanPlan) Scan(src []byte, dst any) error { return plan.next.Scan(src, (*int16Wrapper)(dst.(*int16))) } @@ -742,7 +742,7 @@ type wrapInt32ScanPlan struct { func (plan *wrapInt32ScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *wrapInt32ScanPlan) Scan(src []byte, dst interface{}) error { +func (plan *wrapInt32ScanPlan) Scan(src []byte, dst any) error { return plan.next.Scan(src, (*int32Wrapper)(dst.(*int32))) } @@ -752,7 +752,7 @@ type wrapInt64ScanPlan struct { func (plan *wrapInt64ScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *wrapInt64ScanPlan) Scan(src []byte, dst interface{}) error { +func (plan *wrapInt64ScanPlan) Scan(src []byte, dst any) error { return plan.next.Scan(src, (*int64Wrapper)(dst.(*int64))) } @@ -762,7 +762,7 @@ type wrapIntScanPlan struct { func (plan *wrapIntScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *wrapIntScanPlan) Scan(src []byte, dst interface{}) error { +func (plan *wrapIntScanPlan) Scan(src []byte, dst any) error { return plan.next.Scan(src, (*intWrapper)(dst.(*int))) } @@ -772,7 +772,7 @@ type wrapUint8ScanPlan struct { func (plan *wrapUint8ScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *wrapUint8ScanPlan) Scan(src []byte, dst interface{}) error { +func (plan *wrapUint8ScanPlan) Scan(src []byte, dst any) error { return plan.next.Scan(src, (*uint8Wrapper)(dst.(*uint8))) } @@ -782,7 +782,7 @@ type wrapUint16ScanPlan struct { func (plan *wrapUint16ScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *wrapUint16ScanPlan) Scan(src []byte, dst interface{}) error { +func (plan *wrapUint16ScanPlan) Scan(src []byte, dst any) error { return plan.next.Scan(src, (*uint16Wrapper)(dst.(*uint16))) } @@ -792,7 +792,7 @@ type wrapUint32ScanPlan struct { func (plan *wrapUint32ScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *wrapUint32ScanPlan) Scan(src []byte, dst interface{}) error { +func (plan *wrapUint32ScanPlan) Scan(src []byte, dst any) error { return plan.next.Scan(src, (*uint32Wrapper)(dst.(*uint32))) } @@ -802,7 +802,7 @@ type wrapUint64ScanPlan struct { func (plan *wrapUint64ScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *wrapUint64ScanPlan) Scan(src []byte, dst interface{}) error { +func (plan *wrapUint64ScanPlan) Scan(src []byte, dst any) error { return plan.next.Scan(src, (*uint64Wrapper)(dst.(*uint64))) } @@ -812,7 +812,7 @@ type wrapUintScanPlan struct { func (plan *wrapUintScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *wrapUintScanPlan) Scan(src []byte, dst interface{}) error { +func (plan *wrapUintScanPlan) Scan(src []byte, dst any) error { return plan.next.Scan(src, (*uintWrapper)(dst.(*uint))) } @@ -822,7 +822,7 @@ type wrapFloat32ScanPlan struct { func (plan *wrapFloat32ScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *wrapFloat32ScanPlan) Scan(src []byte, dst interface{}) error { +func (plan *wrapFloat32ScanPlan) Scan(src []byte, dst any) error { return plan.next.Scan(src, (*float32Wrapper)(dst.(*float32))) } @@ -832,7 +832,7 @@ type wrapFloat64ScanPlan struct { func (plan *wrapFloat64ScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *wrapFloat64ScanPlan) Scan(src []byte, dst interface{}) error { +func (plan *wrapFloat64ScanPlan) Scan(src []byte, dst any) error { return plan.next.Scan(src, (*float64Wrapper)(dst.(*float64))) } @@ -842,7 +842,7 @@ type wrapStringScanPlan struct { func (plan *wrapStringScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *wrapStringScanPlan) Scan(src []byte, dst interface{}) error { +func (plan *wrapStringScanPlan) Scan(src []byte, dst any) error { return plan.next.Scan(src, (*stringWrapper)(dst.(*string))) } @@ -852,7 +852,7 @@ type wrapTimeScanPlan struct { func (plan *wrapTimeScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *wrapTimeScanPlan) Scan(src []byte, dst interface{}) error { +func (plan *wrapTimeScanPlan) Scan(src []byte, dst any) error { return plan.next.Scan(src, (*timeWrapper)(dst.(*time.Time))) } @@ -862,7 +862,7 @@ type wrapDurationScanPlan struct { func (plan *wrapDurationScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *wrapDurationScanPlan) Scan(src []byte, dst interface{}) error { +func (plan *wrapDurationScanPlan) Scan(src []byte, dst any) error { return plan.next.Scan(src, (*durationWrapper)(dst.(*time.Duration))) } @@ -872,7 +872,7 @@ type wrapNetIPNetScanPlan struct { func (plan *wrapNetIPNetScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *wrapNetIPNetScanPlan) Scan(src []byte, dst interface{}) error { +func (plan *wrapNetIPNetScanPlan) Scan(src []byte, dst any) error { return plan.next.Scan(src, (*netIPNetWrapper)(dst.(*net.IPNet))) } @@ -882,7 +882,7 @@ type wrapNetIPScanPlan struct { func (plan *wrapNetIPScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *wrapNetIPScanPlan) Scan(src []byte, dst interface{}) error { +func (plan *wrapNetIPScanPlan) Scan(src []byte, dst any) error { return plan.next.Scan(src, (*netIPWrapper)(dst.(*net.IP))) } @@ -892,7 +892,7 @@ type wrapMapStringToPointerStringScanPlan struct { func (plan *wrapMapStringToPointerStringScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *wrapMapStringToPointerStringScanPlan) Scan(src []byte, dst interface{}) error { +func (plan *wrapMapStringToPointerStringScanPlan) Scan(src []byte, dst any) error { return plan.next.Scan(src, (*mapStringToPointerStringWrapper)(dst.(*map[string]*string))) } @@ -902,7 +902,7 @@ type wrapMapStringToStringScanPlan struct { func (plan *wrapMapStringToStringScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *wrapMapStringToStringScanPlan) Scan(src []byte, dst interface{}) error { +func (plan *wrapMapStringToStringScanPlan) Scan(src []byte, dst any) error { return plan.next.Scan(src, (*mapStringToStringWrapper)(dst.(*map[string]string))) } @@ -912,7 +912,7 @@ type wrapByte16ScanPlan struct { func (plan *wrapByte16ScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *wrapByte16ScanPlan) Scan(src []byte, dst interface{}) error { +func (plan *wrapByte16ScanPlan) Scan(src []byte, dst any) error { return plan.next.Scan(src, (*byte16Wrapper)(dst.(*[16]byte))) } @@ -922,7 +922,7 @@ type wrapByteSliceScanPlan struct { func (plan *wrapByteSliceScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *wrapByteSliceScanPlan) Scan(src []byte, dst interface{}) error { +func (plan *wrapByteSliceScanPlan) Scan(src []byte, dst any) error { return plan.next.Scan(src, (*byteSliceWrapper)(dst.(*[]byte))) } @@ -933,20 +933,20 @@ type pointerEmptyInterfaceScanPlan struct { formatCode int16 } -func (plan *pointerEmptyInterfaceScanPlan) Scan(src []byte, dst interface{}) error { +func (plan *pointerEmptyInterfaceScanPlan) Scan(src []byte, dst any) error { value, err := plan.codec.DecodeValue(plan.m, plan.oid, plan.formatCode, src) if err != nil { return err } - ptrAny := dst.(*interface{}) + ptrAny := dst.(*any) *ptrAny = value return nil } // TryWrapStructPlan tries to wrap a struct with a wrapper that implements CompositeIndexGetter. -func TryWrapStructScanPlan(target interface{}) (plan WrappedScanPlanNextSetter, nextValue interface{}, ok bool) { +func TryWrapStructScanPlan(target any) (plan WrappedScanPlanNextSetter, nextValue any, ok bool) { targetValue := reflect.ValueOf(target) if targetValue.Kind() != reflect.Ptr { return nil, nil, false @@ -982,7 +982,7 @@ type wrapAnyPtrStructScanPlan struct { func (plan *wrapAnyPtrStructScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *wrapAnyPtrStructScanPlan) Scan(src []byte, target interface{}) error { +func (plan *wrapAnyPtrStructScanPlan) Scan(src []byte, target any) error { w := ptrStructWrapper{ s: target, exportedFields: getExportedFieldValues(reflect.ValueOf(target).Elem()), @@ -992,7 +992,7 @@ func (plan *wrapAnyPtrStructScanPlan) Scan(src []byte, target interface{}) error } // TryWrapPtrSliceScanPlan tries to wrap a pointer to a single dimension slice. -func TryWrapPtrSliceScanPlan(target interface{}) (plan WrappedScanPlanNextSetter, nextValue interface{}, ok bool) { +func TryWrapPtrSliceScanPlan(target any) (plan WrappedScanPlanNextSetter, nextValue any, ok bool) { targetValue := reflect.ValueOf(target) if targetValue.Kind() != reflect.Ptr { return nil, nil, false @@ -1012,12 +1012,12 @@ type wrapPtrSliceScanPlan struct { func (plan *wrapPtrSliceScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *wrapPtrSliceScanPlan) Scan(src []byte, target interface{}) error { +func (plan *wrapPtrSliceScanPlan) Scan(src []byte, target any) error { return plan.next.Scan(src, &anySliceArray{slice: reflect.ValueOf(target).Elem()}) } // TryWrapPtrMultiDimSliceScanPlan tries to wrap a pointer to a multi-dimension slice. -func TryWrapPtrMultiDimSliceScanPlan(target interface{}) (plan WrappedScanPlanNextSetter, nextValue interface{}, ok bool) { +func TryWrapPtrMultiDimSliceScanPlan(target any) (plan WrappedScanPlanNextSetter, nextValue any, ok bool) { targetValue := reflect.ValueOf(target) if targetValue.Kind() != reflect.Ptr { return nil, nil, false @@ -1043,12 +1043,12 @@ type wrapPtrMultiDimSliceScanPlan struct { func (plan *wrapPtrMultiDimSliceScanPlan) SetNext(next ScanPlan) { plan.next = next } -func (plan *wrapPtrMultiDimSliceScanPlan) Scan(src []byte, target interface{}) error { +func (plan *wrapPtrMultiDimSliceScanPlan) Scan(src []byte, target any) error { return plan.next.Scan(src, &anyMultiDimSliceArray{slice: reflect.ValueOf(target).Elem()}) } // PlanScan prepares a plan to scan a value into target. -func (m *Map) PlanScan(oid uint32, formatCode int16, target interface{}) ScanPlan { +func (m *Map) PlanScan(oid uint32, formatCode int16, target any) ScanPlan { oidMemo := m.memoizedScanPlans[oid] if oidMemo == nil { oidMemo = make(map[reflect.Type][2]ScanPlan) @@ -1066,7 +1066,7 @@ func (m *Map) PlanScan(oid uint32, formatCode int16, target interface{}) ScanPla return plan } -func (m *Map) planScan(oid uint32, formatCode int16, target interface{}) ScanPlan { +func (m *Map) planScan(oid uint32, formatCode int16, target any) ScanPlan { if _, ok := target.(*UndecodedBytes); ok { return scanPlanAnyToUndecodedBytes{} } @@ -1120,7 +1120,7 @@ func (m *Map) planScan(oid uint32, formatCode int16, target interface{}) ScanPla } if dt != nil { - if _, ok := target.(*interface{}); ok { + if _, ok := target.(*any); ok { return &pointerEmptyInterfaceScanPlan{codec: dt.Codec, m: m, oid: oid, formatCode: formatCode} } @@ -1136,7 +1136,7 @@ func (m *Map) planScan(oid uint32, formatCode int16, target interface{}) ScanPla return &scanPlanFail{oid: oid, formatCode: formatCode} } -func (m *Map) Scan(oid uint32, formatCode int16, src []byte, dst interface{}) error { +func (m *Map) Scan(oid uint32, formatCode int16, src []byte, dst any) error { if dst == nil { return nil } @@ -1145,7 +1145,7 @@ func (m *Map) Scan(oid uint32, formatCode int16, src []byte, dst interface{}) er return plan.Scan(src, dst) } -func scanUnknownType(oid uint32, formatCode int16, buf []byte, dest interface{}) error { +func scanUnknownType(oid uint32, formatCode int16, buf []byte, dest any) error { switch dest := dest.(type) { case *string: if formatCode == BinaryFormatCode { @@ -1166,7 +1166,7 @@ func scanUnknownType(oid uint32, formatCode int16, buf []byte, dest interface{}) var ErrScanTargetTypeChanged = errors.New("scan target type changed") -func codecScan(codec Codec, m *Map, oid uint32, format int16, src []byte, dst interface{}) error { +func codecScan(codec Codec, m *Map, oid uint32, format int16, src []byte, dst any) error { scanPlan := codec.PlanScan(m, oid, format, dst) if scanPlan == nil { return fmt.Errorf("PlanScan did not find a plan") @@ -1196,7 +1196,7 @@ func codecDecodeToTextFormat(codec Codec, m *Map, oid uint32, format int16, src // PlanEncode returns an Encode plan for encoding value into PostgreSQL format for oid and format. If no plan can be // found then nil is returned. -func (m *Map) PlanEncode(oid uint32, format int16, value interface{}) EncodePlan { +func (m *Map) PlanEncode(oid uint32, format int16, value any) EncodePlan { if format == TextFormatCode { switch value.(type) { case string: @@ -1239,14 +1239,14 @@ func (m *Map) PlanEncode(oid uint32, format int16, value interface{}) EncodePlan type encodePlanStringToAnyTextFormat struct{} -func (encodePlanStringToAnyTextFormat) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanStringToAnyTextFormat) Encode(value any, buf []byte) (newBuf []byte, err error) { s := value.(string) return append(buf, s...), nil } type encodePlanTextValuerToAnyTextFormat struct{} -func (encodePlanTextValuerToAnyTextFormat) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanTextValuerToAnyTextFormat) Encode(value any, buf []byte) (newBuf []byte, err error) { t, err := value.(TextValuer).TextValue() if err != nil { return nil, err @@ -1262,7 +1262,7 @@ func (encodePlanTextValuerToAnyTextFormat) Encode(value interface{}, buf []byte) // that will convert the value passed to Encode and then call the next plan. nextValue is value as it will be converted // by plan. It must be used to find another suitable EncodePlan. When it is found SetNext must be called on plan for it // to be usabled. ok indicates if a suitable wrapper was found. -type TryWrapEncodePlanFunc func(value interface{}) (plan WrappedEncodePlanNextSetter, nextValue interface{}, ok bool) +type TryWrapEncodePlanFunc func(value any) (plan WrappedEncodePlanNextSetter, nextValue any, ok bool) type derefPointerEncodePlan struct { next EncodePlan @@ -1270,7 +1270,7 @@ type derefPointerEncodePlan struct { func (plan *derefPointerEncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *derefPointerEncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *derefPointerEncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { ptr := reflect.ValueOf(value) if ptr.IsNil() { @@ -1282,7 +1282,7 @@ func (plan *derefPointerEncodePlan) Encode(value interface{}, buf []byte) (newBu // TryWrapDerefPointerEncodePlan tries to dereference a pointer. e.g. If value was of type *string then a wrapper plan // would be returned that derefences the value. -func TryWrapDerefPointerEncodePlan(value interface{}) (plan WrappedEncodePlanNextSetter, nextValue interface{}, ok bool) { +func TryWrapDerefPointerEncodePlan(value any) (plan WrappedEncodePlanNextSetter, nextValue any, ok bool) { if valueType := reflect.TypeOf(value); valueType.Kind() == reflect.Ptr { return &derefPointerEncodePlan{}, reflect.New(valueType.Elem()).Elem().Interface(), true } @@ -1313,13 +1313,13 @@ type underlyingTypeEncodePlan struct { func (plan *underlyingTypeEncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *underlyingTypeEncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *underlyingTypeEncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { return plan.next.Encode(reflect.ValueOf(value).Convert(plan.nextValueType).Interface(), buf) } // TryWrapFindUnderlyingTypeEncodePlan tries to convert to a Go builtin type. e.g. If value was of type MyString and // MyString was defined as a string then a wrapper plan would be returned that converts MyString to string. -func TryWrapFindUnderlyingTypeEncodePlan(value interface{}) (plan WrappedEncodePlanNextSetter, nextValue interface{}, ok bool) { +func TryWrapFindUnderlyingTypeEncodePlan(value any) (plan WrappedEncodePlanNextSetter, nextValue any, ok bool) { if _, ok := value.(SkipUnderlyingTypePlanner); ok { return nil, nil, false } @@ -1342,7 +1342,7 @@ type WrappedEncodePlanNextSetter interface { // TryWrapBuiltinTypeEncodePlan tries to wrap a builtin type with a wrapper that provides additional methods. e.g. If // value was of type int32 then a wrapper plan would be returned that converts value to a type that implements // Int64Valuer. -func TryWrapBuiltinTypeEncodePlan(value interface{}) (plan WrappedEncodePlanNextSetter, nextValue interface{}, ok bool) { +func TryWrapBuiltinTypeEncodePlan(value any) (plan WrappedEncodePlanNextSetter, nextValue any, ok bool) { switch value := value.(type) { case int8: return &wrapInt8EncodePlan{}, int8Wrapper(value), true @@ -1399,7 +1399,7 @@ type wrapInt8EncodePlan struct { func (plan *wrapInt8EncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *wrapInt8EncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *wrapInt8EncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { return plan.next.Encode(int8Wrapper(value.(int8)), buf) } @@ -1409,7 +1409,7 @@ type wrapInt16EncodePlan struct { func (plan *wrapInt16EncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *wrapInt16EncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *wrapInt16EncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { return plan.next.Encode(int16Wrapper(value.(int16)), buf) } @@ -1419,7 +1419,7 @@ type wrapInt32EncodePlan struct { func (plan *wrapInt32EncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *wrapInt32EncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *wrapInt32EncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { return plan.next.Encode(int32Wrapper(value.(int32)), buf) } @@ -1429,7 +1429,7 @@ type wrapInt64EncodePlan struct { func (plan *wrapInt64EncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *wrapInt64EncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *wrapInt64EncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { return plan.next.Encode(int64Wrapper(value.(int64)), buf) } @@ -1439,7 +1439,7 @@ type wrapIntEncodePlan struct { func (plan *wrapIntEncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *wrapIntEncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *wrapIntEncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { return plan.next.Encode(intWrapper(value.(int)), buf) } @@ -1449,7 +1449,7 @@ type wrapUint8EncodePlan struct { func (plan *wrapUint8EncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *wrapUint8EncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *wrapUint8EncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { return plan.next.Encode(uint8Wrapper(value.(uint8)), buf) } @@ -1459,7 +1459,7 @@ type wrapUint16EncodePlan struct { func (plan *wrapUint16EncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *wrapUint16EncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *wrapUint16EncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { return plan.next.Encode(uint16Wrapper(value.(uint16)), buf) } @@ -1469,7 +1469,7 @@ type wrapUint32EncodePlan struct { func (plan *wrapUint32EncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *wrapUint32EncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *wrapUint32EncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { return plan.next.Encode(uint32Wrapper(value.(uint32)), buf) } @@ -1479,7 +1479,7 @@ type wrapUint64EncodePlan struct { func (plan *wrapUint64EncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *wrapUint64EncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *wrapUint64EncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { return plan.next.Encode(uint64Wrapper(value.(uint64)), buf) } @@ -1489,7 +1489,7 @@ type wrapUintEncodePlan struct { func (plan *wrapUintEncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *wrapUintEncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *wrapUintEncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { return plan.next.Encode(uintWrapper(value.(uint)), buf) } @@ -1499,7 +1499,7 @@ type wrapFloat32EncodePlan struct { func (plan *wrapFloat32EncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *wrapFloat32EncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *wrapFloat32EncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { return plan.next.Encode(float32Wrapper(value.(float32)), buf) } @@ -1509,7 +1509,7 @@ type wrapFloat64EncodePlan struct { func (plan *wrapFloat64EncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *wrapFloat64EncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *wrapFloat64EncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { return plan.next.Encode(float64Wrapper(value.(float64)), buf) } @@ -1519,7 +1519,7 @@ type wrapStringEncodePlan struct { func (plan *wrapStringEncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *wrapStringEncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *wrapStringEncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { return plan.next.Encode(stringWrapper(value.(string)), buf) } @@ -1529,7 +1529,7 @@ type wrapTimeEncodePlan struct { func (plan *wrapTimeEncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *wrapTimeEncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *wrapTimeEncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { return plan.next.Encode(timeWrapper(value.(time.Time)), buf) } @@ -1539,7 +1539,7 @@ type wrapDurationEncodePlan struct { func (plan *wrapDurationEncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *wrapDurationEncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *wrapDurationEncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { return plan.next.Encode(durationWrapper(value.(time.Duration)), buf) } @@ -1549,7 +1549,7 @@ type wrapNetIPNetEncodePlan struct { func (plan *wrapNetIPNetEncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *wrapNetIPNetEncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *wrapNetIPNetEncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { return plan.next.Encode(netIPNetWrapper(value.(net.IPNet)), buf) } @@ -1559,7 +1559,7 @@ type wrapNetIPEncodePlan struct { func (plan *wrapNetIPEncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *wrapNetIPEncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *wrapNetIPEncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { return plan.next.Encode(netIPWrapper(value.(net.IP)), buf) } @@ -1569,7 +1569,7 @@ type wrapMapStringToPointerStringEncodePlan struct { func (plan *wrapMapStringToPointerStringEncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *wrapMapStringToPointerStringEncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *wrapMapStringToPointerStringEncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { return plan.next.Encode(mapStringToPointerStringWrapper(value.(map[string]*string)), buf) } @@ -1579,7 +1579,7 @@ type wrapMapStringToStringEncodePlan struct { func (plan *wrapMapStringToStringEncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *wrapMapStringToStringEncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *wrapMapStringToStringEncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { return plan.next.Encode(mapStringToStringWrapper(value.(map[string]string)), buf) } @@ -1589,7 +1589,7 @@ type wrapByte16EncodePlan struct { func (plan *wrapByte16EncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *wrapByte16EncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *wrapByte16EncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { return plan.next.Encode(byte16Wrapper(value.([16]byte)), buf) } @@ -1599,7 +1599,7 @@ type wrapByteSliceEncodePlan struct { func (plan *wrapByteSliceEncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *wrapByteSliceEncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *wrapByteSliceEncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { return plan.next.Encode(byteSliceWrapper(value.([]byte)), buf) } @@ -1609,12 +1609,12 @@ type wrapFmtStringerEncodePlan struct { func (plan *wrapFmtStringerEncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *wrapFmtStringerEncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *wrapFmtStringerEncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { return plan.next.Encode(fmtStringerWrapper{value.(fmt.Stringer)}, buf) } // TryWrapStructPlan tries to wrap a struct with a wrapper that implements CompositeIndexGetter. -func TryWrapStructEncodePlan(value interface{}) (plan WrappedEncodePlanNextSetter, nextValue interface{}, ok bool) { +func TryWrapStructEncodePlan(value any) (plan WrappedEncodePlanNextSetter, nextValue any, ok bool) { if reflect.TypeOf(value).Kind() == reflect.Struct { exportedFields := getExportedFieldValues(reflect.ValueOf(value)) if len(exportedFields) == 0 { @@ -1637,7 +1637,7 @@ type wrapAnyStructEncodePlan struct { func (plan *wrapAnyStructEncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *wrapAnyStructEncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *wrapAnyStructEncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { w := structWrapper{ s: value, exportedFields: getExportedFieldValues(reflect.ValueOf(value)), @@ -1659,7 +1659,7 @@ func getExportedFieldValues(structValue reflect.Value) []reflect.Value { return exportedFields } -func TryWrapSliceEncodePlan(value interface{}) (plan WrappedEncodePlanNextSetter, nextValue interface{}, ok bool) { +func TryWrapSliceEncodePlan(value any) (plan WrappedEncodePlanNextSetter, nextValue any, ok bool) { if reflect.TypeOf(value).Kind() == reflect.Slice { w := anySliceArray{ slice: reflect.ValueOf(value), @@ -1676,7 +1676,7 @@ type wrapSliceEncodePlan struct { func (plan *wrapSliceEncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *wrapSliceEncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *wrapSliceEncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { w := anySliceArray{ slice: reflect.ValueOf(value), } @@ -1684,7 +1684,7 @@ func (plan *wrapSliceEncodePlan) Encode(value interface{}, buf []byte) (newBuf [ return plan.next.Encode(w, buf) } -func TryWrapMultiDimSliceEncodePlan(value interface{}) (plan WrappedEncodePlanNextSetter, nextValue interface{}, ok bool) { +func TryWrapMultiDimSliceEncodePlan(value any) (plan WrappedEncodePlanNextSetter, nextValue any, ok bool) { sliceValue := reflect.ValueOf(value) if sliceValue.Kind() == reflect.Slice { valueElemType := sliceValue.Type().Elem() @@ -1708,7 +1708,7 @@ type wrapMultiDimSliceEncodePlan struct { func (plan *wrapMultiDimSliceEncodePlan) SetNext(next EncodePlan) { plan.next = next } -func (plan *wrapMultiDimSliceEncodePlan) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *wrapMultiDimSliceEncodePlan) Encode(value any, buf []byte) (newBuf []byte, err error) { w := anyMultiDimSliceArray{ slice: reflect.ValueOf(value), } @@ -1719,7 +1719,7 @@ func (plan *wrapMultiDimSliceEncodePlan) Encode(value interface{}, buf []byte) ( // Encode appends the encoded bytes of value to buf. If value is the SQL value NULL then append nothing and return // (nil, nil). The caller of Encode is responsible for writing the correct NULL value or the length of the data // written. -func (m *Map) Encode(oid uint32, formatCode int16, value interface{}, buf []byte) (newBuf []byte, err error) { +func (m *Map) Encode(oid uint32, formatCode int16, value any, buf []byte) (newBuf []byte, err error) { if value == nil { return nil, nil } diff --git a/pgtype/pgtype_test.go b/pgtype/pgtype_test.go index 9778c335..fa4c823b 100644 --- a/pgtype/pgtype_test.go +++ b/pgtype/pgtype_test.go @@ -125,7 +125,7 @@ func TestTypeMapScanNilIsNoOp(t *testing.T) { func TestTypeMapScanTextFormatInterfacePtr(t *testing.T) { m := pgtype.NewMap() - var got interface{} + var got any err := m.Scan(pgtype.TextOID, pgx.TextFormatCode, []byte("foo"), &got) require.NoError(t, err) assert.Equal(t, "foo", got) @@ -141,7 +141,7 @@ func TestTypeMapScanTextFormatNonByteaIntoByteSlice(t *testing.T) { func TestTypeMapScanBinaryFormatInterfacePtr(t *testing.T) { m := pgtype.NewMap() - var got interface{} + var got any err := m.Scan(pgtype.TextOID, pgx.BinaryFormatCode, []byte("foo"), &got) require.NoError(t, err) assert.Equal(t, "foo", got) @@ -273,8 +273,8 @@ func BenchmarkScanPlanScanInt4IntoGoInt32(b *testing.B) { } } -func isExpectedEq(a interface{}) func(interface{}) bool { - return func(v interface{}) bool { +func isExpectedEq(a any) func(any) bool { + return func(v any) bool { return a == v } } diff --git a/pgtype/point.go b/pgtype/point.go index d2ddaf2f..cfa5a9f1 100644 --- a/pgtype/point.go +++ b/pgtype/point.go @@ -69,7 +69,7 @@ func parsePoint(src []byte) (*Point, error) { } // Scan implements the database/sql Scanner interface. -func (dst *Point) Scan(src interface{}) error { +func (dst *Point) Scan(src any) error { if src == nil { *dst = Point{} return nil @@ -127,7 +127,7 @@ func (PointCodec) PreferredFormat() int16 { return BinaryFormatCode } -func (PointCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (PointCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { if _, ok := value.(PointValuer); !ok { return nil } @@ -144,7 +144,7 @@ func (PointCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{} type encodePlanPointCodecBinary struct{} -func (encodePlanPointCodecBinary) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanPointCodecBinary) Encode(value any, buf []byte) (newBuf []byte, err error) { point, err := value.(PointValuer).PointValue() if err != nil { return nil, err @@ -161,7 +161,7 @@ func (encodePlanPointCodecBinary) Encode(value interface{}, buf []byte) (newBuf type encodePlanPointCodecText struct{} -func (encodePlanPointCodecText) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanPointCodecText) Encode(value any, buf []byte) (newBuf []byte, err error) { point, err := value.(PointValuer).PointValue() if err != nil { return nil, err @@ -177,7 +177,7 @@ func (encodePlanPointCodecText) Encode(value interface{}, buf []byte) (newBuf [] )...), nil } -func (PointCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (PointCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: @@ -199,7 +199,7 @@ func (c PointCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, src return codecDecodeToTextFormat(c, m, oid, format, src) } -func (c PointCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c PointCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } @@ -214,7 +214,7 @@ func (c PointCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (i type scanPlanBinaryPointToPointScanner struct{} -func (scanPlanBinaryPointToPointScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryPointToPointScanner) Scan(src []byte, dst any) error { scanner := (dst).(PointScanner) if src == nil { @@ -236,7 +236,7 @@ func (scanPlanBinaryPointToPointScanner) Scan(src []byte, dst interface{}) error type scanPlanTextAnyToPointScanner struct{} -func (scanPlanTextAnyToPointScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToPointScanner) Scan(src []byte, dst any) error { scanner := (dst).(PointScanner) if src == nil { diff --git a/pgtype/polygon.go b/pgtype/polygon.go index a7a6d606..04b0ba6b 100644 --- a/pgtype/polygon.go +++ b/pgtype/polygon.go @@ -34,7 +34,7 @@ func (p Polygon) PolygonValue() (Polygon, error) { } // Scan implements the database/sql Scanner interface. -func (p *Polygon) Scan(src interface{}) error { +func (p *Polygon) Scan(src any) error { if src == nil { *p = Polygon{} return nil @@ -72,7 +72,7 @@ func (PolygonCodec) PreferredFormat() int16 { return BinaryFormatCode } -func (PolygonCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (PolygonCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { if _, ok := value.(PolygonValuer); !ok { return nil } @@ -89,7 +89,7 @@ func (PolygonCodec) PlanEncode(m *Map, oid uint32, format int16, value interface type encodePlanPolygonCodecBinary struct{} -func (encodePlanPolygonCodecBinary) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanPolygonCodecBinary) Encode(value any, buf []byte) (newBuf []byte, err error) { polygon, err := value.(PolygonValuer).PolygonValue() if err != nil { return nil, err @@ -111,7 +111,7 @@ func (encodePlanPolygonCodecBinary) Encode(value interface{}, buf []byte) (newBu type encodePlanPolygonCodecText struct{} -func (encodePlanPolygonCodecText) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanPolygonCodecText) Encode(value any, buf []byte) (newBuf []byte, err error) { polygon, err := value.(PolygonValuer).PolygonValue() if err != nil { return nil, err @@ -138,7 +138,7 @@ func (encodePlanPolygonCodecText) Encode(value interface{}, buf []byte) (newBuf return buf, nil } -func (PolygonCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (PolygonCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: @@ -158,7 +158,7 @@ func (PolygonCodec) PlanScan(m *Map, oid uint32, format int16, target interface{ type scanPlanBinaryPolygonToPolygonScanner struct{} -func (scanPlanBinaryPolygonToPolygonScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryPolygonToPolygonScanner) Scan(src []byte, dst any) error { scanner := (dst).(PolygonScanner) if src == nil { @@ -193,7 +193,7 @@ func (scanPlanBinaryPolygonToPolygonScanner) Scan(src []byte, dst interface{}) e type scanPlanTextAnyToPolygonScanner struct{} -func (scanPlanTextAnyToPolygonScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToPolygonScanner) Scan(src []byte, dst any) error { scanner := (dst).(PolygonScanner) if src == nil { @@ -239,7 +239,7 @@ func (c PolygonCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, s return codecDecodeToTextFormat(c, m, oid, format, src) } -func (c PolygonCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c PolygonCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } diff --git a/pgtype/polygon_test.go b/pgtype/polygon_test.go index a6a60de2..5ddbc166 100644 --- a/pgtype/polygon_test.go +++ b/pgtype/polygon_test.go @@ -8,8 +8,8 @@ import ( "github.com/jackc/pgx/v5/pgxtest" ) -func isExpectedEqPolygon(a interface{}) func(interface{}) bool { - return func(v interface{}) bool { +func isExpectedEqPolygon(a any) func(any) bool { + return func(v any) bool { ap := a.(pgtype.Polygon) vp := v.(pgtype.Polygon) diff --git a/pgtype/qchar.go b/pgtype/qchar.go index 677b9003..0e65041f 100644 --- a/pgtype/qchar.go +++ b/pgtype/qchar.go @@ -22,7 +22,7 @@ func (QCharCodec) PreferredFormat() int16 { return BinaryFormatCode } -func (QCharCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (QCharCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { switch format { case TextFormatCode, BinaryFormatCode: switch value.(type) { @@ -38,7 +38,7 @@ func (QCharCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{} type encodePlanQcharCodecByte struct{} -func (encodePlanQcharCodecByte) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanQcharCodecByte) Encode(value any, buf []byte) (newBuf []byte, err error) { b := value.(byte) buf = append(buf, b) return buf, nil @@ -46,7 +46,7 @@ func (encodePlanQcharCodecByte) Encode(value interface{}, buf []byte) (newBuf [] type encodePlanQcharCodecRune struct{} -func (encodePlanQcharCodecRune) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanQcharCodecRune) Encode(value any, buf []byte) (newBuf []byte, err error) { r := value.(rune) if r > math.MaxUint8 { return nil, fmt.Errorf(`%v cannot be encoded to "char"`, r) @@ -56,7 +56,7 @@ func (encodePlanQcharCodecRune) Encode(value interface{}, buf []byte) (newBuf [] return buf, nil } -func (QCharCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (QCharCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case TextFormatCode, BinaryFormatCode: switch target.(type) { @@ -72,7 +72,7 @@ func (QCharCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) type scanPlanQcharCodecByte struct{} -func (scanPlanQcharCodecByte) Scan(src []byte, dst interface{}) error { +func (scanPlanQcharCodecByte) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -94,7 +94,7 @@ func (scanPlanQcharCodecByte) Scan(src []byte, dst interface{}) error { type scanPlanQcharCodecRune struct{} -func (scanPlanQcharCodecRune) Scan(src []byte, dst interface{}) error { +func (scanPlanQcharCodecRune) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -127,7 +127,7 @@ func (c QCharCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, src return string(r), nil } -func (c QCharCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c QCharCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } diff --git a/pgtype/range_codec.go b/pgtype/range_codec.go index 207e3b39..6d62e7ff 100644 --- a/pgtype/range_codec.go +++ b/pgtype/range_codec.go @@ -16,7 +16,7 @@ type RangeValuer interface { BoundTypes() (lower, upper BoundType) // Bounds returns the lower and upper range values. - Bounds() (lower, upper interface{}) + Bounds() (lower, upper any) } // RangeScanner is a type can be scanned from a PostgreSQL range. @@ -26,7 +26,7 @@ type RangeScanner interface { // ScanBounds returns values usable as a scan target. The returned values may not be scanned if the range is empty or // the bound type is unbounded. - ScanBounds() (lowerTarget, upperTarget interface{}) + ScanBounds() (lowerTarget, upperTarget any) // SetBoundTypes sets the lower and upper bound types. ScanBounds will be called and the returned values scanned // (if appropriate) before SetBoundTypes is called. If the bound types are unbounded or empty this method must @@ -35,8 +35,8 @@ type RangeScanner interface { } type GenericRange struct { - Lower interface{} - Upper interface{} + Lower any + Upper any LowerType BoundType UpperType BoundType Valid bool @@ -50,7 +50,7 @@ func (r GenericRange) BoundTypes() (lower, upper BoundType) { return r.LowerType, r.UpperType } -func (r GenericRange) Bounds() (lower, upper interface{}) { +func (r GenericRange) Bounds() (lower, upper any) { return &r.Lower, &r.Upper } @@ -59,7 +59,7 @@ func (r *GenericRange) ScanNull() error { return nil } -func (r *GenericRange) ScanBounds() (lowerTarget, upperTarget interface{}) { +func (r *GenericRange) ScanBounds() (lowerTarget, upperTarget any) { return &r.Lower, &r.Upper } @@ -86,7 +86,7 @@ func (c *RangeCodec) PreferredFormat() int16 { return TextFormatCode } -func (c *RangeCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (c *RangeCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { if _, ok := value.(RangeValuer); !ok { return nil } @@ -106,7 +106,7 @@ type encodePlanRangeCodecRangeValuerToBinary struct { m *Map } -func (plan *encodePlanRangeCodecRangeValuerToBinary) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *encodePlanRangeCodecRangeValuerToBinary) Encode(value any, buf []byte) (newBuf []byte, err error) { getter := value.(RangeValuer) if getter.IsNull() { @@ -197,7 +197,7 @@ type encodePlanRangeCodecRangeValuerToText struct { m *Map } -func (plan *encodePlanRangeCodecRangeValuerToText) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (plan *encodePlanRangeCodecRangeValuerToText) Encode(value any, buf []byte) (newBuf []byte, err error) { getter := value.(RangeValuer) if getter.IsNull() { @@ -270,7 +270,7 @@ func (plan *encodePlanRangeCodecRangeValuerToText) Encode(value interface{}, buf return buf, nil } -func (c *RangeCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (c *RangeCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: switch target.(type) { @@ -292,7 +292,7 @@ type scanPlanBinaryRangeToRangeScanner struct { m *Map } -func (plan *scanPlanBinaryRangeToRangeScanner) Scan(src []byte, target interface{}) error { +func (plan *scanPlanBinaryRangeToRangeScanner) Scan(src []byte, target any) error { rangeScanner := (target).(RangeScanner) if src == nil { @@ -342,7 +342,7 @@ type scanPlanTextRangeToRangeScanner struct { m *Map } -func (plan *scanPlanTextRangeToRangeScanner) Scan(src []byte, target interface{}) error { +func (plan *scanPlanTextRangeToRangeScanner) Scan(src []byte, target any) error { rangeScanner := (target).(RangeScanner) if src == nil { @@ -404,7 +404,7 @@ func (c *RangeCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, sr } } -func (c *RangeCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c *RangeCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } diff --git a/pgtype/range_codec_test.go b/pgtype/range_codec_test.go index 8c1116a0..d467b750 100644 --- a/pgtype/range_codec_test.go +++ b/pgtype/range_codec_test.go @@ -132,7 +132,7 @@ func TestRangeCodecDecodeValue(t *testing.T) { for _, tt := range []struct { sql string - expected interface{} + expected any }{ { sql: `select '[1,5)'::int4range`, diff --git a/pgtype/range_types.go b/pgtype/range_types.go index 1496ca30..c101fbdc 100644 --- a/pgtype/range_types.go +++ b/pgtype/range_types.go @@ -17,7 +17,7 @@ func (r Int4range) BoundTypes() (lower, upper BoundType) { return r.LowerType, r.UpperType } -func (r Int4range) Bounds() (lower, upper interface{}) { +func (r Int4range) Bounds() (lower, upper any) { return &r.Lower, &r.Upper } @@ -26,7 +26,7 @@ func (r *Int4range) ScanNull() error { return nil } -func (r *Int4range) ScanBounds() (lowerTarget, upperTarget interface{}) { +func (r *Int4range) ScanBounds() (lowerTarget, upperTarget any) { return &r.Lower, &r.Upper } @@ -59,7 +59,7 @@ func (r Int8range) BoundTypes() (lower, upper BoundType) { return r.LowerType, r.UpperType } -func (r Int8range) Bounds() (lower, upper interface{}) { +func (r Int8range) Bounds() (lower, upper any) { return &r.Lower, &r.Upper } @@ -68,7 +68,7 @@ func (r *Int8range) ScanNull() error { return nil } -func (r *Int8range) ScanBounds() (lowerTarget, upperTarget interface{}) { +func (r *Int8range) ScanBounds() (lowerTarget, upperTarget any) { return &r.Lower, &r.Upper } @@ -101,7 +101,7 @@ func (r Numrange) BoundTypes() (lower, upper BoundType) { return r.LowerType, r.UpperType } -func (r Numrange) Bounds() (lower, upper interface{}) { +func (r Numrange) Bounds() (lower, upper any) { return &r.Lower, &r.Upper } @@ -110,7 +110,7 @@ func (r *Numrange) ScanNull() error { return nil } -func (r *Numrange) ScanBounds() (lowerTarget, upperTarget interface{}) { +func (r *Numrange) ScanBounds() (lowerTarget, upperTarget any) { return &r.Lower, &r.Upper } @@ -143,7 +143,7 @@ func (r Tsrange) BoundTypes() (lower, upper BoundType) { return r.LowerType, r.UpperType } -func (r Tsrange) Bounds() (lower, upper interface{}) { +func (r Tsrange) Bounds() (lower, upper any) { return &r.Lower, &r.Upper } @@ -152,7 +152,7 @@ func (r *Tsrange) ScanNull() error { return nil } -func (r *Tsrange) ScanBounds() (lowerTarget, upperTarget interface{}) { +func (r *Tsrange) ScanBounds() (lowerTarget, upperTarget any) { return &r.Lower, &r.Upper } @@ -185,7 +185,7 @@ func (r Tstzrange) BoundTypes() (lower, upper BoundType) { return r.LowerType, r.UpperType } -func (r Tstzrange) Bounds() (lower, upper interface{}) { +func (r Tstzrange) Bounds() (lower, upper any) { return &r.Lower, &r.Upper } @@ -194,7 +194,7 @@ func (r *Tstzrange) ScanNull() error { return nil } -func (r *Tstzrange) ScanBounds() (lowerTarget, upperTarget interface{}) { +func (r *Tstzrange) ScanBounds() (lowerTarget, upperTarget any) { return &r.Lower, &r.Upper } @@ -227,7 +227,7 @@ func (r Daterange) BoundTypes() (lower, upper BoundType) { return r.LowerType, r.UpperType } -func (r Daterange) Bounds() (lower, upper interface{}) { +func (r Daterange) Bounds() (lower, upper any) { return &r.Lower, &r.Upper } @@ -236,7 +236,7 @@ func (r *Daterange) ScanNull() error { return nil } -func (r *Daterange) ScanBounds() (lowerTarget, upperTarget interface{}) { +func (r *Daterange) ScanBounds() (lowerTarget, upperTarget any) { return &r.Lower, &r.Upper } @@ -269,7 +269,7 @@ func (r Float8range) BoundTypes() (lower, upper BoundType) { return r.LowerType, r.UpperType } -func (r Float8range) Bounds() (lower, upper interface{}) { +func (r Float8range) Bounds() (lower, upper any) { return &r.Lower, &r.Upper } @@ -278,7 +278,7 @@ func (r *Float8range) ScanNull() error { return nil } -func (r *Float8range) ScanBounds() (lowerTarget, upperTarget interface{}) { +func (r *Float8range) ScanBounds() (lowerTarget, upperTarget any) { return &r.Lower, &r.Upper } diff --git a/pgtype/range_types.go.erb b/pgtype/range_types.go.erb index 8b43f7f9..d181548c 100644 --- a/pgtype/range_types.go.erb +++ b/pgtype/range_types.go.erb @@ -27,7 +27,7 @@ func (r <%= range_type %>) BoundTypes() (lower, upper BoundType) { return r.LowerType, r.UpperType } -func (r <%= range_type %>) Bounds() (lower, upper interface{}) { +func (r <%= range_type %>) Bounds() (lower, upper any) { return &r.Lower, &r.Upper } @@ -36,7 +36,7 @@ func (r *<%= range_type %>) ScanNull() error { return nil } -func (r *<%= range_type %>) ScanBounds() (lowerTarget, upperTarget interface{}) { +func (r *<%= range_type %>) ScanBounds() (lowerTarget, upperTarget any) { return &r.Lower, &r.Upper } diff --git a/pgtype/record_codec.go b/pgtype/record_codec.go index a5c72aac..b3b16604 100644 --- a/pgtype/record_codec.go +++ b/pgtype/record_codec.go @@ -21,11 +21,11 @@ func (RecordCodec) PreferredFormat() int16 { return BinaryFormatCode } -func (RecordCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (RecordCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { return nil } -func (RecordCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (RecordCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { if format == BinaryFormatCode { switch target.(type) { case CompositeIndexScanner: @@ -40,7 +40,7 @@ type scanPlanBinaryRecordToCompositeIndexScanner struct { m *Map } -func (plan *scanPlanBinaryRecordToCompositeIndexScanner) Scan(src []byte, target interface{}) error { +func (plan *scanPlanBinaryRecordToCompositeIndexScanner) Scan(src []byte, target any) error { targetScanner := (target).(CompositeIndexScanner) if src == nil { @@ -87,7 +87,7 @@ func (RecordCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, src } } -func (RecordCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (RecordCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } @@ -97,9 +97,9 @@ func (RecordCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (in return string(src), nil case BinaryFormatCode: scanner := NewCompositeBinaryScanner(m, src) - values := make([]interface{}, scanner.FieldCount()) + values := make([]any, scanner.FieldCount()) for i := 0; scanner.Next(); i++ { - var v interface{} + var v any fieldPlan := m.PlanScan(scanner.OID(), BinaryFormatCode, &v) if fieldPlan == nil { return nil, fmt.Errorf("unable to scan OID %d in binary format into %v", scanner.OID(), v) diff --git a/pgtype/record_codec_test.go b/pgtype/record_codec_test.go index 57fa87ff..2189f99c 100644 --- a/pgtype/record_codec_test.go +++ b/pgtype/record_codec_test.go @@ -27,27 +27,27 @@ func TestRecordCodecDecodeValue(t *testing.T) { defaultConnTestRunner.RunTest(context.Background(), t, func(ctx context.Context, _ testing.TB, conn *pgx.Conn) { for _, tt := range []struct { sql string - expected interface{} + expected any }{ { sql: `select row()`, - expected: []interface{}{}, + expected: []any{}, }, { sql: `select row('foo'::text, 42::int4)`, - expected: []interface{}{"foo", int32(42)}, + expected: []any{"foo", int32(42)}, }, { sql: `select row(100.0::float4, 1.09::float4)`, - expected: []interface{}{float32(100), float32(1.09)}, + expected: []any{float32(100), float32(1.09)}, }, { sql: `select row('foo'::text, array[1, 2, null, 4]::int4[], 42::int4)`, - expected: []interface{}{"foo", []interface{}{int32(1), int32(2), nil, int32(4)}, int32(42)}, + expected: []any{"foo", []any{int32(1), int32(2), nil, int32(4)}, int32(42)}, }, { sql: `select row(null)`, - expected: []interface{}{nil}, + expected: []any{nil}, }, { sql: `select null::record`, diff --git a/pgtype/text.go b/pgtype/text.go index 53fcb368..0f9df7a6 100644 --- a/pgtype/text.go +++ b/pgtype/text.go @@ -30,7 +30,7 @@ func (t Text) TextValue() (Text, error) { } // Scan implements the database/sql Scanner interface. -func (dst *Text) Scan(src interface{}) error { +func (dst *Text) Scan(src any) error { if src == nil { *dst = Text{} return nil @@ -90,7 +90,7 @@ func (TextCodec) PreferredFormat() int16 { return TextFormatCode } -func (TextCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (TextCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { switch format { case TextFormatCode, BinaryFormatCode: switch value.(type) { @@ -110,7 +110,7 @@ func (TextCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) type encodePlanTextCodecString struct{} -func (encodePlanTextCodecString) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanTextCodecString) Encode(value any, buf []byte) (newBuf []byte, err error) { s := value.(string) buf = append(buf, s...) return buf, nil @@ -118,7 +118,7 @@ func (encodePlanTextCodecString) Encode(value interface{}, buf []byte) (newBuf [ type encodePlanTextCodecByteSlice struct{} -func (encodePlanTextCodecByteSlice) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanTextCodecByteSlice) Encode(value any, buf []byte) (newBuf []byte, err error) { s := value.([]byte) buf = append(buf, s...) return buf, nil @@ -126,7 +126,7 @@ func (encodePlanTextCodecByteSlice) Encode(value interface{}, buf []byte) (newBu type encodePlanTextCodecRune struct{} -func (encodePlanTextCodecRune) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanTextCodecRune) Encode(value any, buf []byte) (newBuf []byte, err error) { r := value.(rune) buf = append(buf, string(r)...) return buf, nil @@ -134,7 +134,7 @@ func (encodePlanTextCodecRune) Encode(value interface{}, buf []byte) (newBuf []b type encodePlanTextCodecStringer struct{} -func (encodePlanTextCodecStringer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanTextCodecStringer) Encode(value any, buf []byte) (newBuf []byte, err error) { s := value.(fmt.Stringer) buf = append(buf, s.String()...) return buf, nil @@ -142,7 +142,7 @@ func (encodePlanTextCodecStringer) Encode(value interface{}, buf []byte) (newBuf type encodePlanTextCodecTextValuer struct{} -func (encodePlanTextCodecTextValuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanTextCodecTextValuer) Encode(value any, buf []byte) (newBuf []byte, err error) { text, err := value.(TextValuer).TextValue() if err != nil { return nil, err @@ -156,7 +156,7 @@ func (encodePlanTextCodecTextValuer) Encode(value interface{}, buf []byte) (newB return buf, nil } -func (TextCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (TextCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case TextFormatCode, BinaryFormatCode: @@ -181,7 +181,7 @@ func (c TextCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, src return c.DecodeValue(m, oid, format, src) } -func (c TextCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c TextCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } @@ -191,7 +191,7 @@ func (c TextCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (in type scanPlanTextAnyToString struct{} -func (scanPlanTextAnyToString) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToString) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -204,7 +204,7 @@ func (scanPlanTextAnyToString) Scan(src []byte, dst interface{}) error { type scanPlanAnyToNewByteSlice struct{} -func (scanPlanAnyToNewByteSlice) Scan(src []byte, dst interface{}) error { +func (scanPlanAnyToNewByteSlice) Scan(src []byte, dst any) error { p := (dst).(*[]byte) if src == nil { *p = nil @@ -218,14 +218,14 @@ func (scanPlanAnyToNewByteSlice) Scan(src []byte, dst interface{}) error { type scanPlanAnyToByteScanner struct{} -func (scanPlanAnyToByteScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanAnyToByteScanner) Scan(src []byte, dst any) error { p := (dst).(BytesScanner) return p.ScanBytes(src) } type scanPlanTextAnyToRune struct{} -func (scanPlanTextAnyToRune) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToRune) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -243,7 +243,7 @@ func (scanPlanTextAnyToRune) Scan(src []byte, dst interface{}) error { type scanPlanTextAnyToTextScanner struct{} -func (scanPlanTextAnyToTextScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToTextScanner) Scan(src []byte, dst any) error { scanner := (dst).(TextScanner) if src == nil { diff --git a/pgtype/tid.go b/pgtype/tid.go index 6eefd34e..cb4a9ec4 100644 --- a/pgtype/tid.go +++ b/pgtype/tid.go @@ -45,7 +45,7 @@ func (b TID) TIDValue() (TID, error) { } // Scan implements the database/sql Scanner interface. -func (dst *TID) Scan(src interface{}) error { +func (dst *TID) Scan(src any) error { if src == nil { *dst = TID{} return nil @@ -82,7 +82,7 @@ func (TIDCodec) PreferredFormat() int16 { return BinaryFormatCode } -func (TIDCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (TIDCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { if _, ok := value.(TIDValuer); !ok { return nil } @@ -99,7 +99,7 @@ func (TIDCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) type encodePlanTIDCodecBinary struct{} -func (encodePlanTIDCodecBinary) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanTIDCodecBinary) Encode(value any, buf []byte) (newBuf []byte, err error) { tid, err := value.(TIDValuer).TIDValue() if err != nil { return nil, err @@ -116,7 +116,7 @@ func (encodePlanTIDCodecBinary) Encode(value interface{}, buf []byte) (newBuf [] type encodePlanTIDCodecText struct{} -func (encodePlanTIDCodecText) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanTIDCodecText) Encode(value any, buf []byte) (newBuf []byte, err error) { tid, err := value.(TIDValuer).TIDValue() if err != nil { return nil, err @@ -130,7 +130,7 @@ func (encodePlanTIDCodecText) Encode(value interface{}, buf []byte) (newBuf []by return buf, nil } -func (TIDCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (TIDCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: @@ -152,7 +152,7 @@ func (TIDCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) S type scanPlanBinaryTIDToTIDScanner struct{} -func (scanPlanBinaryTIDToTIDScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryTIDToTIDScanner) Scan(src []byte, dst any) error { scanner := (dst).(TIDScanner) if src == nil { @@ -172,7 +172,7 @@ func (scanPlanBinaryTIDToTIDScanner) Scan(src []byte, dst interface{}) error { type scanPlanBinaryTIDToTextScanner struct{} -func (scanPlanBinaryTIDToTextScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryTIDToTextScanner) Scan(src []byte, dst any) error { scanner := (dst).(TextScanner) if src == nil { @@ -194,7 +194,7 @@ func (scanPlanBinaryTIDToTextScanner) Scan(src []byte, dst interface{}) error { type scanPlanTextAnyToTIDScanner struct{} -func (scanPlanTextAnyToTIDScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToTIDScanner) Scan(src []byte, dst any) error { scanner := (dst).(TIDScanner) if src == nil { @@ -227,7 +227,7 @@ func (c TIDCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, src [ return codecDecodeToTextFormat(c, m, oid, format, src) } -func (c TIDCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c TIDCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } diff --git a/pgtype/time.go b/pgtype/time.go index 9005b848..2eb6ace2 100644 --- a/pgtype/time.go +++ b/pgtype/time.go @@ -37,7 +37,7 @@ func (t Time) TimeValue() (Time, error) { } // Scan implements the database/sql Scanner interface. -func (t *Time) Scan(src interface{}) error { +func (t *Time) Scan(src any) error { if src == nil { *t = Time{} return nil @@ -74,7 +74,7 @@ func (TimeCodec) PreferredFormat() int16 { return BinaryFormatCode } -func (TimeCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (TimeCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { if _, ok := value.(TimeValuer); !ok { return nil } @@ -91,7 +91,7 @@ func (TimeCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) type encodePlanTimeCodecBinary struct{} -func (encodePlanTimeCodecBinary) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanTimeCodecBinary) Encode(value any, buf []byte) (newBuf []byte, err error) { t, err := value.(TimeValuer).TimeValue() if err != nil { return nil, err @@ -106,7 +106,7 @@ func (encodePlanTimeCodecBinary) Encode(value interface{}, buf []byte) (newBuf [ type encodePlanTimeCodecText struct{} -func (encodePlanTimeCodecText) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanTimeCodecText) Encode(value any, buf []byte) (newBuf []byte, err error) { t, err := value.(TimeValuer).TimeValue() if err != nil { return nil, err @@ -129,7 +129,7 @@ func (encodePlanTimeCodecText) Encode(value interface{}, buf []byte) (newBuf []b return append(buf, s...), nil } -func (TimeCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (TimeCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: @@ -149,7 +149,7 @@ func (TimeCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) type scanPlanBinaryTimeToTimeScanner struct{} -func (scanPlanBinaryTimeToTimeScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryTimeToTimeScanner) Scan(src []byte, dst any) error { scanner := (dst).(TimeScanner) if src == nil { @@ -167,7 +167,7 @@ func (scanPlanBinaryTimeToTimeScanner) Scan(src []byte, dst interface{}) error { type scanPlanTextAnyToTimeScanner struct{} -func (scanPlanTextAnyToTimeScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToTimeScanner) Scan(src []byte, dst any) error { scanner := (dst).(TimeScanner) if src == nil { @@ -219,7 +219,7 @@ func (c TimeCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, src return codecDecodeToTextFormat(c, m, oid, format, src) } -func (c TimeCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c TimeCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } diff --git a/pgtype/timestamp.go b/pgtype/timestamp.go index 10525229..9f3de2c5 100644 --- a/pgtype/timestamp.go +++ b/pgtype/timestamp.go @@ -37,7 +37,7 @@ func (ts Timestamp) TimestampValue() (Timestamp, error) { } // Scan implements the database/sql Scanner interface. -func (ts *Timestamp) Scan(src interface{}) error { +func (ts *Timestamp) Scan(src any) error { if src == nil { *ts = Timestamp{} return nil @@ -76,7 +76,7 @@ func (TimestampCodec) PreferredFormat() int16 { return BinaryFormatCode } -func (TimestampCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (TimestampCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { if _, ok := value.(TimestampValuer); !ok { return nil } @@ -93,7 +93,7 @@ func (TimestampCodec) PlanEncode(m *Map, oid uint32, format int16, value interfa type encodePlanTimestampCodecBinary struct{} -func (encodePlanTimestampCodecBinary) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanTimestampCodecBinary) Encode(value any, buf []byte) (newBuf []byte, err error) { ts, err := value.(TimestampValuer).TimestampValue() if err != nil { return nil, err @@ -122,7 +122,7 @@ func (encodePlanTimestampCodecBinary) Encode(value interface{}, buf []byte) (new type encodePlanTimestampCodecText struct{} -func (encodePlanTimestampCodecText) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanTimestampCodecText) Encode(value any, buf []byte) (newBuf []byte, err error) { ts, err := value.(TimestampValuer).TimestampValue() if err != nil { return nil, err @@ -170,7 +170,7 @@ func discardTimeZone(t time.Time) time.Time { return t } -func (TimestampCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (TimestampCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: @@ -190,7 +190,7 @@ func (TimestampCodec) PlanScan(m *Map, oid uint32, format int16, target interfac type scanPlanBinaryTimestampToTimestampScanner struct{} -func (scanPlanBinaryTimestampToTimestampScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryTimestampToTimestampScanner) Scan(src []byte, dst any) error { scanner := (dst).(TimestampScanner) if src == nil { @@ -222,7 +222,7 @@ func (scanPlanBinaryTimestampToTimestampScanner) Scan(src []byte, dst interface{ type scanPlanTextTimestampToTimestampScanner struct{} -func (scanPlanTextTimestampToTimestampScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanTextTimestampToTimestampScanner) Scan(src []byte, dst any) error { scanner := (dst).(TimestampScanner) if src == nil { @@ -276,7 +276,7 @@ func (c TimestampCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, return ts.Time, nil } -func (c TimestampCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c TimestampCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } diff --git a/pgtype/timestamptz.go b/pgtype/timestamptz.go index 7709e0aa..f568fe30 100644 --- a/pgtype/timestamptz.go +++ b/pgtype/timestamptz.go @@ -46,7 +46,7 @@ func (tstz Timestamptz) TimestamptzValue() (Timestamptz, error) { } // Scan implements the database/sql Scanner interface. -func (tstz *Timestamptz) Scan(src interface{}) error { +func (tstz *Timestamptz) Scan(src any) error { if src == nil { *tstz = Timestamptz{} return nil @@ -134,7 +134,7 @@ func (TimestamptzCodec) PreferredFormat() int16 { return BinaryFormatCode } -func (TimestamptzCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (TimestamptzCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { if _, ok := value.(TimestamptzValuer); !ok { return nil } @@ -151,7 +151,7 @@ func (TimestamptzCodec) PlanEncode(m *Map, oid uint32, format int16, value inter type encodePlanTimestamptzCodecBinary struct{} -func (encodePlanTimestamptzCodecBinary) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanTimestamptzCodecBinary) Encode(value any, buf []byte) (newBuf []byte, err error) { ts, err := value.(TimestamptzValuer).TimestamptzValue() if err != nil { return nil, err @@ -179,7 +179,7 @@ func (encodePlanTimestamptzCodecBinary) Encode(value interface{}, buf []byte) (n type encodePlanTimestamptzCodecText struct{} -func (encodePlanTimestamptzCodecText) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanTimestamptzCodecText) Encode(value any, buf []byte) (newBuf []byte, err error) { ts, err := value.(TimestamptzValuer).TimestamptzValue() if err != nil { return nil, err @@ -220,7 +220,7 @@ func (encodePlanTimestamptzCodecText) Encode(value interface{}, buf []byte) (new return buf, nil } -func (TimestamptzCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (TimestamptzCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: @@ -240,7 +240,7 @@ func (TimestamptzCodec) PlanScan(m *Map, oid uint32, format int16, target interf type scanPlanBinaryTimestamptzToTimestamptzScanner struct{} -func (scanPlanBinaryTimestamptzToTimestamptzScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryTimestamptzToTimestamptzScanner) Scan(src []byte, dst any) error { scanner := (dst).(TimestamptzScanner) if src == nil { @@ -272,7 +272,7 @@ func (scanPlanBinaryTimestamptzToTimestamptzScanner) Scan(src []byte, dst interf type scanPlanTextTimestamptzToTimestamptzScanner struct{} -func (scanPlanTextTimestamptzToTimestamptzScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanTextTimestamptzToTimestamptzScanner) Scan(src []byte, dst any) error { scanner := (dst).(TimestamptzScanner) if src == nil { @@ -336,7 +336,7 @@ func (c TimestamptzCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int1 return tstz.Time, nil } -func (c TimestamptzCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c TimestamptzCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } diff --git a/pgtype/uint32.go b/pgtype/uint32.go index 25d2423a..37e0c65f 100644 --- a/pgtype/uint32.go +++ b/pgtype/uint32.go @@ -34,7 +34,7 @@ func (n Uint32) Uint32Value() (Uint32, error) { } // Scan implements the database/sql Scanner interface. -func (dst *Uint32) Scan(src interface{}) error { +func (dst *Uint32) Scan(src any) error { if src == nil { *dst = Uint32{} return nil @@ -85,7 +85,7 @@ func (Uint32Codec) PreferredFormat() int16 { return BinaryFormatCode } -func (Uint32Codec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (Uint32Codec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { switch format { case BinaryFormatCode: switch value.(type) { @@ -110,14 +110,14 @@ func (Uint32Codec) PlanEncode(m *Map, oid uint32, format int16, value interface{ type encodePlanUint32CodecBinaryUint32 struct{} -func (encodePlanUint32CodecBinaryUint32) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanUint32CodecBinaryUint32) Encode(value any, buf []byte) (newBuf []byte, err error) { v := value.(uint32) return pgio.AppendUint32(buf, v), nil } type encodePlanUint32CodecBinaryUint32Valuer struct{} -func (encodePlanUint32CodecBinaryUint32Valuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanUint32CodecBinaryUint32Valuer) Encode(value any, buf []byte) (newBuf []byte, err error) { v, err := value.(Uint32Valuer).Uint32Value() if err != nil { return nil, err @@ -132,7 +132,7 @@ func (encodePlanUint32CodecBinaryUint32Valuer) Encode(value interface{}, buf []b type encodePlanUint32CodecBinaryInt64Valuer struct{} -func (encodePlanUint32CodecBinaryInt64Valuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanUint32CodecBinaryInt64Valuer) Encode(value any, buf []byte) (newBuf []byte, err error) { v, err := value.(Int64Valuer).Int64Value() if err != nil { return nil, err @@ -154,14 +154,14 @@ func (encodePlanUint32CodecBinaryInt64Valuer) Encode(value interface{}, buf []by type encodePlanUint32CodecTextUint32 struct{} -func (encodePlanUint32CodecTextUint32) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanUint32CodecTextUint32) Encode(value any, buf []byte) (newBuf []byte, err error) { v := value.(uint32) return append(buf, strconv.FormatUint(uint64(v), 10)...), nil } type encodePlanUint32CodecTextUint32Valuer struct{} -func (encodePlanUint32CodecTextUint32Valuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanUint32CodecTextUint32Valuer) Encode(value any, buf []byte) (newBuf []byte, err error) { v, err := value.(Uint32Valuer).Uint32Value() if err != nil { return nil, err @@ -176,7 +176,7 @@ func (encodePlanUint32CodecTextUint32Valuer) Encode(value interface{}, buf []byt type encodePlanUint32CodecTextInt64Valuer struct{} -func (encodePlanUint32CodecTextInt64Valuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanUint32CodecTextInt64Valuer) Encode(value any, buf []byte) (newBuf []byte, err error) { v, err := value.(Int64Valuer).Int64Value() if err != nil { return nil, err @@ -196,7 +196,7 @@ func (encodePlanUint32CodecTextInt64Valuer) Encode(value interface{}, buf []byte return append(buf, strconv.FormatInt(v.Int64, 10)...), nil } -func (Uint32Codec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (Uint32Codec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: @@ -231,7 +231,7 @@ func (c Uint32Codec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, sr return int64(n), nil } -func (c Uint32Codec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c Uint32Codec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } @@ -246,7 +246,7 @@ func (c Uint32Codec) DecodeValue(m *Map, oid uint32, format int16, src []byte) ( type scanPlanBinaryUint32ToUint32 struct{} -func (scanPlanBinaryUint32ToUint32) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryUint32ToUint32) Scan(src []byte, dst any) error { if src == nil { return fmt.Errorf("cannot scan null into %T", dst) } @@ -263,7 +263,7 @@ func (scanPlanBinaryUint32ToUint32) Scan(src []byte, dst interface{}) error { type scanPlanBinaryUint32ToUint32Scanner struct{} -func (scanPlanBinaryUint32ToUint32Scanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryUint32ToUint32Scanner) Scan(src []byte, dst any) error { s, ok := (dst).(Uint32Scanner) if !ok { return ErrScanTargetTypeChanged @@ -284,7 +284,7 @@ func (scanPlanBinaryUint32ToUint32Scanner) Scan(src []byte, dst interface{}) err type scanPlanTextAnyToUint32Scanner struct{} -func (scanPlanTextAnyToUint32Scanner) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToUint32Scanner) Scan(src []byte, dst any) error { s, ok := (dst).(Uint32Scanner) if !ok { return ErrScanTargetTypeChanged diff --git a/pgtype/uuid.go b/pgtype/uuid.go index a561bed9..8c3bbba5 100644 --- a/pgtype/uuid.go +++ b/pgtype/uuid.go @@ -56,7 +56,7 @@ func encodeUUID(src [16]byte) string { } // Scan implements the database/sql Scanner interface. -func (dst *UUID) Scan(src interface{}) error { +func (dst *UUID) Scan(src any) error { if src == nil { *dst = UUID{} return nil @@ -122,7 +122,7 @@ func (UUIDCodec) PreferredFormat() int16 { return BinaryFormatCode } -func (UUIDCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) EncodePlan { +func (UUIDCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodePlan { if _, ok := value.(UUIDValuer); !ok { return nil } @@ -139,7 +139,7 @@ func (UUIDCodec) PlanEncode(m *Map, oid uint32, format int16, value interface{}) type encodePlanUUIDCodecBinaryUUIDValuer struct{} -func (encodePlanUUIDCodecBinaryUUIDValuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanUUIDCodecBinaryUUIDValuer) Encode(value any, buf []byte) (newBuf []byte, err error) { uuid, err := value.(UUIDValuer).UUIDValue() if err != nil { return nil, err @@ -154,7 +154,7 @@ func (encodePlanUUIDCodecBinaryUUIDValuer) Encode(value interface{}, buf []byte) type encodePlanUUIDCodecTextUUIDValuer struct{} -func (encodePlanUUIDCodecTextUUIDValuer) Encode(value interface{}, buf []byte) (newBuf []byte, err error) { +func (encodePlanUUIDCodecTextUUIDValuer) Encode(value any, buf []byte) (newBuf []byte, err error) { uuid, err := value.(UUIDValuer).UUIDValue() if err != nil { return nil, err @@ -167,7 +167,7 @@ func (encodePlanUUIDCodecTextUUIDValuer) Encode(value interface{}, buf []byte) ( return append(buf, encodeUUID(uuid.Bytes)...), nil } -func (UUIDCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) ScanPlan { +func (UUIDCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan { switch format { case BinaryFormatCode: switch target.(type) { @@ -186,7 +186,7 @@ func (UUIDCodec) PlanScan(m *Map, oid uint32, format int16, target interface{}) type scanPlanBinaryUUIDToUUIDScanner struct{} -func (scanPlanBinaryUUIDToUUIDScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanBinaryUUIDToUUIDScanner) Scan(src []byte, dst any) error { scanner := (dst).(UUIDScanner) if src == nil { @@ -205,7 +205,7 @@ func (scanPlanBinaryUUIDToUUIDScanner) Scan(src []byte, dst interface{}) error { type scanPlanTextAnyToUUIDScanner struct{} -func (scanPlanTextAnyToUUIDScanner) Scan(src []byte, dst interface{}) error { +func (scanPlanTextAnyToUUIDScanner) Scan(src []byte, dst any) error { scanner := (dst).(UUIDScanner) if src == nil { @@ -234,7 +234,7 @@ func (c UUIDCodec) DecodeDatabaseSQLValue(m *Map, oid uint32, format int16, src return encodeUUID(uuid.Bytes), nil } -func (c UUIDCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (interface{}, error) { +func (c UUIDCodec) DecodeValue(m *Map, oid uint32, format int16, src []byte) (any, error) { if src == nil { return nil, nil } diff --git a/pgtype/zeronull/float8.go b/pgtype/zeronull/float8.go index 7f3a06b4..08fa169e 100644 --- a/pgtype/zeronull/float8.go +++ b/pgtype/zeronull/float8.go @@ -30,7 +30,7 @@ func (f Float8) Float64Value() (pgtype.Float8, error) { } // Scan implements the database/sql Scanner interface. -func (f *Float8) Scan(src interface{}) error { +func (f *Float8) Scan(src any) error { if src == nil { *f = 0 return nil diff --git a/pgtype/zeronull/float8_test.go b/pgtype/zeronull/float8_test.go index a8c1b6a1..b3c818aa 100644 --- a/pgtype/zeronull/float8_test.go +++ b/pgtype/zeronull/float8_test.go @@ -8,8 +8,8 @@ import ( "github.com/jackc/pgx/v5/pgxtest" ) -func isExpectedEq(a interface{}) func(interface{}) bool { - return func(v interface{}) bool { +func isExpectedEq(a any) func(any) bool { + return func(v any) bool { return a == v } } @@ -28,7 +28,7 @@ func TestFloat8Transcode(t *testing.T) { }, { (zeronull.Float8)(0), - new(interface{}), + new(any), isExpectedEq(nil), }, }) diff --git a/pgtype/zeronull/int.go b/pgtype/zeronull/int.go index 9a40691f..4fec8a1a 100644 --- a/pgtype/zeronull/int.go +++ b/pgtype/zeronull/int.go @@ -32,7 +32,7 @@ func (dst *Int2) ScanInt64(n int64, valid bool) error { } // Scan implements the database/sql Scanner interface. -func (dst *Int2) Scan(src interface{}) error { +func (dst *Int2) Scan(src any) error { if src == nil { *dst = 0 return nil @@ -80,7 +80,7 @@ func (dst *Int4) ScanInt64(n int64, valid bool) error { } // Scan implements the database/sql Scanner interface. -func (dst *Int4) Scan(src interface{}) error { +func (dst *Int4) Scan(src any) error { if src == nil { *dst = 0 return nil @@ -128,7 +128,7 @@ func (dst *Int8) ScanInt64(n int64, valid bool) error { } // Scan implements the database/sql Scanner interface. -func (dst *Int8) Scan(src interface{}) error { +func (dst *Int8) Scan(src any) error { if src == nil { *dst = 0 return nil diff --git a/pgtype/zeronull/int.go.erb b/pgtype/zeronull/int.go.erb index cdae7597..b51cba12 100644 --- a/pgtype/zeronull/int.go.erb +++ b/pgtype/zeronull/int.go.erb @@ -33,7 +33,7 @@ func (dst *Int<%= pg_byte_size %>) ScanInt64(n int64, valid bool) error { } // Scan implements the database/sql Scanner interface. -func (dst *Int<%= pg_byte_size %>) Scan(src interface{}) error { +func (dst *Int<%= pg_byte_size %>) Scan(src any) error { if src == nil { *dst = 0 return nil diff --git a/pgtype/zeronull/int_test.go b/pgtype/zeronull/int_test.go index 30e4808f..7204cc88 100644 --- a/pgtype/zeronull/int_test.go +++ b/pgtype/zeronull/int_test.go @@ -23,7 +23,7 @@ func TestInt2Transcode(t *testing.T) { }, { (zeronull.Int2)(0), - new(interface{}), + new(any), isExpectedEq(nil), }, }) @@ -43,7 +43,7 @@ func TestInt4Transcode(t *testing.T) { }, { (zeronull.Int4)(0), - new(interface{}), + new(any), isExpectedEq(nil), }, }) @@ -63,7 +63,7 @@ func TestInt8Transcode(t *testing.T) { }, { (zeronull.Int8)(0), - new(interface{}), + new(any), isExpectedEq(nil), }, }) diff --git a/pgtype/zeronull/int_test.go.erb b/pgtype/zeronull/int_test.go.erb index 2c7ddc46..c0f72ef4 100644 --- a/pgtype/zeronull/int_test.go.erb +++ b/pgtype/zeronull/int_test.go.erb @@ -23,7 +23,7 @@ func TestInt<%= pg_byte_size %>Transcode(t *testing.T) { }, { (zeronull.Int<%= pg_byte_size %>)(0), - new(interface{}), + new(any), isExpectedEq(nil), }, }) diff --git a/pgtype/zeronull/text.go b/pgtype/zeronull/text.go index b768e308..4ba51fa9 100644 --- a/pgtype/zeronull/text.go +++ b/pgtype/zeronull/text.go @@ -23,7 +23,7 @@ func (dst *Text) ScanText(v pgtype.Text) error { } // Scan implements the database/sql Scanner interface. -func (dst *Text) Scan(src interface{}) error { +func (dst *Text) Scan(src any) error { if src == nil { *dst = "" return nil diff --git a/pgtype/zeronull/text_test.go b/pgtype/zeronull/text_test.go index e0d6ec43..5a60baf1 100644 --- a/pgtype/zeronull/text_test.go +++ b/pgtype/zeronull/text_test.go @@ -22,7 +22,7 @@ func TestTextTranscode(t *testing.T) { }, { (zeronull.Text)(""), - new(interface{}), + new(any), isExpectedEq(nil), }, }) diff --git a/pgtype/zeronull/timestamp.go b/pgtype/zeronull/timestamp.go index 163af041..1697c420 100644 --- a/pgtype/zeronull/timestamp.go +++ b/pgtype/zeronull/timestamp.go @@ -40,7 +40,7 @@ func (ts Timestamp) TimestampValue() (pgtype.Timestamp, error) { } // Scan implements the database/sql Scanner interface. -func (ts *Timestamp) Scan(src interface{}) error { +func (ts *Timestamp) Scan(src any) error { if src == nil { *ts = Timestamp{} return nil diff --git a/pgtype/zeronull/timestamp_test.go b/pgtype/zeronull/timestamp_test.go index 78393e9b..8a5a5796 100644 --- a/pgtype/zeronull/timestamp_test.go +++ b/pgtype/zeronull/timestamp_test.go @@ -9,8 +9,8 @@ import ( "github.com/jackc/pgx/v5/pgxtest" ) -func isExpectedEqTimestamp(a interface{}) func(interface{}) bool { - return func(v interface{}) bool { +func isExpectedEqTimestamp(a any) func(any) bool { + return func(v any) bool { at := time.Time(a.(zeronull.Timestamp)) vt := time.Time(v.(zeronull.Timestamp)) @@ -32,7 +32,7 @@ func TestTimestampTranscode(t *testing.T) { }, { (zeronull.Timestamp)(time.Time{}), - new(interface{}), + new(any), isExpectedEq(nil), }, }) diff --git a/pgtype/zeronull/timestamptz.go b/pgtype/zeronull/timestamptz.go index 6cd60c37..55bc0c8e 100644 --- a/pgtype/zeronull/timestamptz.go +++ b/pgtype/zeronull/timestamptz.go @@ -40,7 +40,7 @@ func (ts Timestamptz) TimestamptzValue() (pgtype.Timestamptz, error) { } // Scan implements the database/sql Scanner interface. -func (ts *Timestamptz) Scan(src interface{}) error { +func (ts *Timestamptz) Scan(src any) error { if src == nil { *ts = Timestamptz{} return nil diff --git a/pgtype/zeronull/timestamptz_test.go b/pgtype/zeronull/timestamptz_test.go index d8273258..0a6d380b 100644 --- a/pgtype/zeronull/timestamptz_test.go +++ b/pgtype/zeronull/timestamptz_test.go @@ -9,8 +9,8 @@ import ( "github.com/jackc/pgx/v5/pgxtest" ) -func isExpectedEqTimestamptz(a interface{}) func(interface{}) bool { - return func(v interface{}) bool { +func isExpectedEqTimestamptz(a any) func(any) bool { + return func(v any) bool { at := time.Time(a.(zeronull.Timestamptz)) vt := time.Time(v.(zeronull.Timestamptz)) @@ -32,7 +32,7 @@ func TestTimestamptzTranscode(t *testing.T) { }, { (zeronull.Timestamptz)(time.Time{}), - new(interface{}), + new(any), isExpectedEq(nil), }, }) diff --git a/pgtype/zeronull/uuid.go b/pgtype/zeronull/uuid.go index abe5049e..d88be84d 100644 --- a/pgtype/zeronull/uuid.go +++ b/pgtype/zeronull/uuid.go @@ -30,7 +30,7 @@ func (u UUID) UUIDValue() (pgtype.UUID, error) { } // Scan implements the database/sql Scanner interface. -func (u *UUID) Scan(src interface{}) error { +func (u *UUID) Scan(src any) error { if src == nil { *u = UUID{} return nil diff --git a/pgtype/zeronull/uuid_test.go b/pgtype/zeronull/uuid_test.go index 0cb169fa..c50cb300 100644 --- a/pgtype/zeronull/uuid_test.go +++ b/pgtype/zeronull/uuid_test.go @@ -22,7 +22,7 @@ func TestUUIDTranscode(t *testing.T) { }, { (zeronull.UUID)([16]byte{}), - new(interface{}), + new(any), isExpectedEq(nil), }, }) diff --git a/pgxpool/batch_results.go b/pgxpool/batch_results.go index aa1d609d..fcd10b37 100644 --- a/pgxpool/batch_results.go +++ b/pgxpool/batch_results.go @@ -17,7 +17,7 @@ func (br errBatchResults) Query() (pgx.Rows, error) { return errRows{err: br.err}, br.err } -func (br errBatchResults) QueryFunc(scans []interface{}, f func(pgx.QueryFuncRow) error) (pgconn.CommandTag, error) { +func (br errBatchResults) QueryFunc(scans []any, f func(pgx.QueryFuncRow) error) (pgconn.CommandTag, error) { return pgconn.CommandTag{}, br.err } @@ -42,7 +42,7 @@ func (br *poolBatchResults) Query() (pgx.Rows, error) { return br.br.Query() } -func (br *poolBatchResults) QueryFunc(scans []interface{}, f func(pgx.QueryFuncRow) error) (pgconn.CommandTag, error) { +func (br *poolBatchResults) QueryFunc(scans []any, f func(pgx.QueryFuncRow) error) (pgconn.CommandTag, error) { return br.br.QueryFunc(scans, f) } diff --git a/pgxpool/common_test.go b/pgxpool/common_test.go index c0ae07c4..c331b33b 100644 --- a/pgxpool/common_test.go +++ b/pgxpool/common_test.go @@ -21,7 +21,7 @@ func waitForReleaseToComplete() { } type execer interface { - Exec(ctx context.Context, sql string, arguments ...interface{}) (pgconn.CommandTag, error) + Exec(ctx context.Context, sql string, arguments ...any) (pgconn.CommandTag, error) } func testExec(t *testing.T, db execer) { @@ -31,7 +31,7 @@ func testExec(t *testing.T, db execer) { } type queryer interface { - Query(ctx context.Context, sql string, args ...interface{}) (pgx.Rows, error) + Query(ctx context.Context, sql string, args ...any) (pgx.Rows, error) } func testQuery(t *testing.T, db queryer) { @@ -53,7 +53,7 @@ func testQuery(t *testing.T, db queryer) { } type queryRower interface { - QueryRow(ctx context.Context, sql string, args ...interface{}) pgx.Row + QueryRow(ctx context.Context, sql string, args ...any) pgx.Row } func testQueryRow(t *testing.T, db queryRower) { @@ -103,7 +103,7 @@ func testCopyFrom(t *testing.T, db interface { tzedTime := time.Date(2010, 2, 3, 4, 5, 6, 0, time.Local) - inputRows := [][]interface{}{ + inputRows := [][]any{ {int16(0), int32(1), int64(2), "abc", "efg", time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC), tzedTime}, {nil, nil, nil, nil, nil, nil, nil}, } @@ -115,7 +115,7 @@ func testCopyFrom(t *testing.T, db interface { rows, err := db.Query(context.Background(), "select * from foo") assert.NoError(t, err) - var outputRows [][]interface{} + var outputRows [][]any for rows.Next() { row, err := rows.Values() if err != nil { diff --git a/pgxpool/conn.go b/pgxpool/conn.go index 8798db4b..d842779e 100644 --- a/pgxpool/conn.go +++ b/pgxpool/conn.go @@ -46,19 +46,19 @@ func (c *Conn) Release() { }() } -func (c *Conn) Exec(ctx context.Context, sql string, arguments ...interface{}) (pgconn.CommandTag, error) { +func (c *Conn) Exec(ctx context.Context, sql string, arguments ...any) (pgconn.CommandTag, error) { return c.Conn().Exec(ctx, sql, arguments...) } -func (c *Conn) Query(ctx context.Context, sql string, args ...interface{}) (pgx.Rows, error) { +func (c *Conn) Query(ctx context.Context, sql string, args ...any) (pgx.Rows, error) { return c.Conn().Query(ctx, sql, args...) } -func (c *Conn) QueryRow(ctx context.Context, sql string, args ...interface{}) pgx.Row { +func (c *Conn) QueryRow(ctx context.Context, sql string, args ...any) pgx.Row { return c.Conn().QueryRow(ctx, sql, args...) } -func (c *Conn) QueryFunc(ctx context.Context, sql string, args []interface{}, scans []interface{}, f func(pgx.QueryFuncRow) error) (pgconn.CommandTag, error) { +func (c *Conn) QueryFunc(ctx context.Context, sql string, args []any, scans []any, f func(pgx.QueryFuncRow) error) (pgconn.CommandTag, error) { return c.Conn().QueryFunc(ctx, sql, args, scans, f) } diff --git a/pgxpool/pool.go b/pgxpool/pool.go index 30d02879..c3abc51a 100644 --- a/pgxpool/pool.go +++ b/pgxpool/pool.go @@ -177,7 +177,7 @@ func ConnectConfig(ctx context.Context, config *Config) (*Pool, error) { } p.p = puddle.NewPool( - func(ctx context.Context) (interface{}, error) { + func(ctx context.Context) (any, error) { connConfig := p.config.ConnConfig if p.beforeConnect != nil { @@ -209,7 +209,7 @@ func ConnectConfig(ctx context.Context, config *Config) (*Pool, error) { return cr, nil }, - func(value interface{}) { + func(value any) { ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second) conn := value.(*connResource).conn conn.Close(ctx) @@ -467,7 +467,7 @@ func (p *Pool) Stat() *Stat { // SQL can be either a prepared statement name or an SQL string. // Arguments should be referenced positionally from the SQL string as $1, $2, etc. // The acquired connection is returned to the pool when the Exec function returns. -func (p *Pool) Exec(ctx context.Context, sql string, arguments ...interface{}) (pgconn.CommandTag, error) { +func (p *Pool) Exec(ctx context.Context, sql string, arguments ...any) (pgconn.CommandTag, error) { c, err := p.Acquire(ctx) if err != nil { return pgconn.CommandTag{}, err @@ -487,7 +487,7 @@ func (p *Pool) Exec(ctx context.Context, sql string, arguments ...interface{}) ( // For extra control over how the query is executed, the types QuerySimpleProtocol, QueryResultFormats, and // QueryResultFormatsByOID may be used as the first args to control exactly how the query is executed. This is rarely // needed. See the documentation for those types for details. -func (p *Pool) Query(ctx context.Context, sql string, args ...interface{}) (pgx.Rows, error) { +func (p *Pool) Query(ctx context.Context, sql string, args ...any) (pgx.Rows, error) { c, err := p.Acquire(ctx) if err != nil { return errRows{err: err}, err @@ -514,7 +514,7 @@ func (p *Pool) Query(ctx context.Context, sql string, args ...interface{}) (pgx. // For extra control over how the query is executed, the types QuerySimpleProtocol, QueryResultFormats, and // QueryResultFormatsByOID may be used as the first args to control exactly how the query is executed. This is rarely // needed. See the documentation for those types for details. -func (p *Pool) QueryRow(ctx context.Context, sql string, args ...interface{}) pgx.Row { +func (p *Pool) QueryRow(ctx context.Context, sql string, args ...any) pgx.Row { c, err := p.Acquire(ctx) if err != nil { return errRow{err: err} @@ -524,7 +524,7 @@ func (p *Pool) QueryRow(ctx context.Context, sql string, args ...interface{}) pg return c.getPoolRow(row) } -func (p *Pool) QueryFunc(ctx context.Context, sql string, args []interface{}, scans []interface{}, f func(pgx.QueryFuncRow) error) (pgconn.CommandTag, error) { +func (p *Pool) QueryFunc(ctx context.Context, sql string, args []any, scans []any, f func(pgx.QueryFuncRow) error) (pgconn.CommandTag, error) { c, err := p.Acquire(ctx) if err != nil { return pgconn.CommandTag{}, err diff --git a/pgxpool/pool_test.go b/pgxpool/pool_test.go index 427e0ea9..8a898720 100644 --- a/pgxpool/pool_test.go +++ b/pgxpool/pool_test.go @@ -514,7 +514,7 @@ func TestPoolCopyFrom(t *testing.T) { tzedTime := time.Date(2010, 2, 3, 4, 5, 6, 0, time.Local) - inputRows := [][]interface{}{ + inputRows := [][]any{ {int16(0), int32(1), int64(2), "abc", "efg", time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC), tzedTime}, {nil, nil, nil, nil, nil, nil, nil}, } @@ -526,7 +526,7 @@ func TestPoolCopyFrom(t *testing.T) { rows, err := pool.Query(ctx, "select * from poolcopyfromtest") assert.NoError(t, err) - var outputRows [][]interface{} + var outputRows [][]any for rows.Next() { row, err := rows.Values() if err != nil { diff --git a/pgxpool/rows.go b/pgxpool/rows.go index ff7ad80b..aeb65179 100644 --- a/pgxpool/rows.go +++ b/pgxpool/rows.go @@ -15,15 +15,15 @@ func (e errRows) Err() error { return e.err } func (errRows) CommandTag() pgconn.CommandTag { return pgconn.CommandTag{} } func (errRows) FieldDescriptions() []pgproto3.FieldDescription { return nil } func (errRows) Next() bool { return false } -func (e errRows) Scan(dest ...interface{}) error { return e.err } -func (e errRows) Values() ([]interface{}, error) { return nil, e.err } +func (e errRows) Scan(dest ...any) error { return e.err } +func (e errRows) Values() ([]any, error) { return nil, e.err } func (e errRows) RawValues() [][]byte { return nil } type errRow struct { err error } -func (e errRow) Scan(dest ...interface{}) error { return e.err } +func (e errRow) Scan(dest ...any) error { return e.err } type poolRows struct { r pgx.Rows @@ -66,7 +66,7 @@ func (rows *poolRows) Next() bool { return n } -func (rows *poolRows) Scan(dest ...interface{}) error { +func (rows *poolRows) Scan(dest ...any) error { err := rows.r.Scan(dest...) if err != nil { rows.Close() @@ -74,7 +74,7 @@ func (rows *poolRows) Scan(dest ...interface{}) error { return err } -func (rows *poolRows) Values() ([]interface{}, error) { +func (rows *poolRows) Values() ([]any, error) { values, err := rows.r.Values() if err != nil { rows.Close() @@ -92,7 +92,7 @@ type poolRow struct { err error } -func (row *poolRow) Scan(dest ...interface{}) error { +func (row *poolRow) Scan(dest ...any) error { if row.err != nil { return row.err } diff --git a/pgxpool/tx.go b/pgxpool/tx.go index a82b2176..79da567c 100644 --- a/pgxpool/tx.go +++ b/pgxpool/tx.go @@ -69,19 +69,19 @@ func (tx *Tx) Prepare(ctx context.Context, name, sql string) (*pgconn.StatementD return tx.t.Prepare(ctx, name, sql) } -func (tx *Tx) Exec(ctx context.Context, sql string, arguments ...interface{}) (pgconn.CommandTag, error) { +func (tx *Tx) Exec(ctx context.Context, sql string, arguments ...any) (pgconn.CommandTag, error) { return tx.t.Exec(ctx, sql, arguments...) } -func (tx *Tx) Query(ctx context.Context, sql string, args ...interface{}) (pgx.Rows, error) { +func (tx *Tx) Query(ctx context.Context, sql string, args ...any) (pgx.Rows, error) { return tx.t.Query(ctx, sql, args...) } -func (tx *Tx) QueryRow(ctx context.Context, sql string, args ...interface{}) pgx.Row { +func (tx *Tx) QueryRow(ctx context.Context, sql string, args ...any) pgx.Row { return tx.t.QueryRow(ctx, sql, args...) } -func (tx *Tx) QueryFunc(ctx context.Context, sql string, args []interface{}, scans []interface{}, f func(pgx.QueryFuncRow) error) (pgconn.CommandTag, error) { +func (tx *Tx) QueryFunc(ctx context.Context, sql string, args []any, scans []any, f func(pgx.QueryFuncRow) error) (pgconn.CommandTag, error) { return tx.t.QueryFunc(ctx, sql, args, scans, f) } diff --git a/pgxtest/pgxtest.go b/pgxtest/pgxtest.go index 3a416dc2..796f850d 100644 --- a/pgxtest/pgxtest.go +++ b/pgxtest/pgxtest.go @@ -101,9 +101,9 @@ func RunWithQueryExecModes(ctx context.Context, t *testing.T, ctr ConnTestRunner } type ValueRoundTripTest struct { - Param interface{} - Result interface{} - Test func(interface{}) bool + Param any + Result any + Test func(any) bool } func RunValueRoundTripTests( diff --git a/query_test.go b/query_test.go index 007d5256..0e310eef 100644 --- a/query_test.go +++ b/query_test.go @@ -109,7 +109,7 @@ func TestConnQueryScanWithManyColumns(t *testing.T) { defer rows.Close() for rows.Next() { - destPtrs := make([]interface{}, columnCount) + destPtrs := make([]any, columnCount) for i := range destPtrs { destPtrs[i] = &dest[i] } @@ -597,18 +597,18 @@ func TestQueryRowCoreTypes(t *testing.T) { tests := []struct { sql string - queryArgs []interface{} - scanArgs []interface{} + queryArgs []any + scanArgs []any expected allTypes }{ - {"select $1::text", []interface{}{"Jack"}, []interface{}{&actual.s}, allTypes{s: "Jack"}}, - {"select $1::float4", []interface{}{float32(1.23)}, []interface{}{&actual.f32}, allTypes{f32: 1.23}}, - {"select $1::float8", []interface{}{float64(1.23)}, []interface{}{&actual.f64}, allTypes{f64: 1.23}}, - {"select $1::bool", []interface{}{true}, []interface{}{&actual.b}, allTypes{b: true}}, - {"select $1::timestamptz", []interface{}{time.Unix(123, 5000)}, []interface{}{&actual.t}, allTypes{t: time.Unix(123, 5000)}}, - {"select $1::timestamp", []interface{}{time.Date(2010, 1, 2, 3, 4, 5, 0, time.UTC)}, []interface{}{&actual.t}, allTypes{t: time.Date(2010, 1, 2, 3, 4, 5, 0, time.UTC)}}, - {"select $1::date", []interface{}{time.Date(1987, 1, 2, 0, 0, 0, 0, time.UTC)}, []interface{}{&actual.t}, allTypes{t: time.Date(1987, 1, 2, 0, 0, 0, 0, time.UTC)}}, - {"select $1::oid", []interface{}{uint32(42)}, []interface{}{&actual.oid}, allTypes{oid: 42}}, + {"select $1::text", []any{"Jack"}, []any{&actual.s}, allTypes{s: "Jack"}}, + {"select $1::float4", []any{float32(1.23)}, []any{&actual.f32}, allTypes{f32: 1.23}}, + {"select $1::float8", []any{float64(1.23)}, []any{&actual.f64}, allTypes{f64: 1.23}}, + {"select $1::bool", []any{true}, []any{&actual.b}, allTypes{b: true}}, + {"select $1::timestamptz", []any{time.Unix(123, 5000)}, []any{&actual.t}, allTypes{t: time.Unix(123, 5000)}}, + {"select $1::timestamp", []any{time.Date(2010, 1, 2, 3, 4, 5, 0, time.UTC)}, []any{&actual.t}, allTypes{t: time.Date(2010, 1, 2, 3, 4, 5, 0, time.UTC)}}, + {"select $1::date", []any{time.Date(1987, 1, 2, 0, 0, 0, 0, time.UTC)}, []any{&actual.t}, allTypes{t: time.Date(1987, 1, 2, 0, 0, 0, 0, time.UTC)}}, + {"select $1::oid", []any{uint32(42)}, []any{&actual.oid}, allTypes{oid: 42}}, } for i, tt := range tests { @@ -658,8 +658,8 @@ func TestQueryRowCoreIntegerEncoding(t *testing.T) { successfulEncodeTests := []struct { sql string - queryArg interface{} - scanArg interface{} + queryArg any + scanArg any expected allTypes }{ // Check any integer type where value is within int2 range can be encoded @@ -717,7 +717,7 @@ func TestQueryRowCoreIntegerEncoding(t *testing.T) { failedEncodeTests := []struct { sql string - queryArg interface{} + queryArg any }{ // Check any integer type where value is outside pg:int2 range cannot be encoded {"select $1::int2", int(32769)}, @@ -773,7 +773,7 @@ func TestQueryRowCoreIntegerDecoding(t *testing.T) { successfulDecodeTests := []struct { sql string - scanArg interface{} + scanArg any expected allTypes }{ // Check any integer type where value is within Go:int range can be decoded @@ -860,7 +860,7 @@ func TestQueryRowCoreIntegerDecoding(t *testing.T) { failedDecodeTests := []struct { sql string - scanArg interface{} + scanArg any }{ // Check any integer type where value is outside Go:int8 range cannot be decoded {"select 128::int2", &actual.i8}, @@ -932,7 +932,7 @@ func TestQueryRowCoreByteSlice(t *testing.T) { tests := []struct { sql string - queryArg interface{} + queryArg any expected []byte }{ {"select $1::text", "Jack", []byte("Jack")}, @@ -977,14 +977,14 @@ func TestQueryRowErrors(t *testing.T) { tests := []struct { sql string - queryArgs []interface{} - scanArgs []interface{} + queryArgs []any + scanArgs []any err string }{ - {"select $1::badtype", []interface{}{"Jack"}, []interface{}{&actual.i16}, `type "badtype" does not exist`}, - {"SYNTAX ERROR", []interface{}{}, []interface{}{&actual.i16}, "SQLSTATE 42601"}, - {"select $1::text", []interface{}{"Jack"}, []interface{}{&actual.i16}, "cannot scan OID 25 in text format into *int16"}, - {"select $1::point", []interface{}{int(705)}, []interface{}{&actual.s}, "unable to encode 705 into format code 1 for OID 600"}, + {"select $1::badtype", []any{"Jack"}, []any{&actual.i16}, `type "badtype" does not exist`}, + {"SYNTAX ERROR", []any{}, []any{&actual.i16}, "SQLSTATE 42601"}, + {"select $1::text", []any{"Jack"}, []any{&actual.i16}, "cannot scan OID 25 in text format into *int16"}, + {"select $1::point", []any{int(705)}, []any{&actual.s}, "unable to encode 705 into format code 1 for OID 600"}, } for i, tt := range tests { @@ -1868,25 +1868,25 @@ func TestConnQueryFunc(t *testing.T) { t.Parallel() pgxtest.RunWithQueryExecModes(context.Background(), t, defaultConnTestRunner, nil, func(ctx context.Context, t testing.TB, conn *pgx.Conn) { - var actualResults []interface{} + var actualResults []any var a, b int ct, err := conn.QueryFunc( context.Background(), "select n, n * 2 from generate_series(1, $1) n", - []interface{}{3}, - []interface{}{&a, &b}, + []any{3}, + []any{&a, &b}, func(pgx.QueryFuncRow) error { - actualResults = append(actualResults, []interface{}{a, b}) + actualResults = append(actualResults, []any{a, b}) return nil }, ) require.NoError(t, err) - expectedResults := []interface{}{ - []interface{}{1, 2}, - []interface{}{2, 4}, - []interface{}{3, 6}, + expectedResults := []any{ + []any{1, 2}, + []any{2, 4}, + []any{3, 6}, } require.Equal(t, expectedResults, actualResults) require.EqualValues(t, 3, ct.RowsAffected()) @@ -1897,16 +1897,16 @@ func TestConnQueryFuncScanError(t *testing.T) { t.Parallel() pgxtest.RunWithQueryExecModes(context.Background(), t, defaultConnTestRunner, nil, func(ctx context.Context, t testing.TB, conn *pgx.Conn) { - var actualResults []interface{} + var actualResults []any var a, b int ct, err := conn.QueryFunc( context.Background(), "select 'foo', 'bar' from generate_series(1, $1) n", - []interface{}{3}, - []interface{}{&a, &b}, + []any{3}, + []any{&a, &b}, func(pgx.QueryFuncRow) error { - actualResults = append(actualResults, []interface{}{a, b}) + actualResults = append(actualResults, []any{a, b}) return nil }, ) @@ -1923,8 +1923,8 @@ func TestConnQueryFuncAbort(t *testing.T) { ct, err := conn.QueryFunc( context.Background(), "select n, n * 2 from generate_series(1, $1) n", - []interface{}{3}, - []interface{}{&a, &b}, + []any{3}, + []any{&a, &b}, func(pgx.QueryFuncRow) error { return errors.New("abort") }, @@ -1945,8 +1945,8 @@ func ExampleConn_QueryFunc() { _, err = conn.QueryFunc( context.Background(), "select n, n * 2 from generate_series(1, $1) n", - []interface{}{3}, - []interface{}{&a, &b}, + []any{3}, + []any{&a, &b}, func(pgx.QueryFuncRow) error { fmt.Printf("%v, %v\n", a, b) return nil diff --git a/rows.go b/rows.go index f3e154bf..da5773e0 100644 --- a/rows.go +++ b/rows.go @@ -44,12 +44,12 @@ type Rows interface { // dest can include pointers to core types, values implementing the Scanner // interface, and nil. nil will skip the value entirely. It is an error to // call Scan without first calling Next() and checking that it returned true. - Scan(dest ...interface{}) error + Scan(dest ...any) error // Values returns the decoded row values. As with Scan(), it is an error to // call Values without first calling Next() and checking that it returned // true. - Values() ([]interface{}, error) + Values() ([]any, error) // RawValues returns the unparsed bytes of the row values. The returned [][]byte is only valid until the next Next // call or the Rows is closed. However, the underlying byte data is safe to retain a reference to and mutate. @@ -66,13 +66,13 @@ type Row interface { // Scan works the same as Rows. with the following exceptions. If no // rows were found it returns ErrNoRows. If multiple rows are returned it // ignores all but the first. - Scan(dest ...interface{}) error + Scan(dest ...any) error } // connRow implements the Row interface for Conn.QueryRow. type connRow connRows -func (r *connRow) Scan(dest ...interface{}) (err error) { +func (r *connRow) Scan(dest ...any) (err error) { rows := (*connRows)(r) if rows.Err() != nil { @@ -100,7 +100,7 @@ func (r *connRow) Scan(dest ...interface{}) (err error) { type rowLog interface { shouldLog(lvl LogLevel) bool - log(ctx context.Context, lvl LogLevel, msg string, data map[string]interface{}) + log(ctx context.Context, lvl LogLevel, msg string, data map[string]any) } // connRows implements the Rows interface for Conn.Query. @@ -114,7 +114,7 @@ type connRows struct { commandTag pgconn.CommandTag startTime time.Time sql string - args []interface{} + args []any closed bool conn *Conn @@ -155,11 +155,11 @@ func (rows *connRows) Close() { if rows.err == nil { if rows.logger.shouldLog(LogLevelInfo) { endTime := time.Now() - rows.logger.log(rows.ctx, LogLevelInfo, "Query", map[string]interface{}{"sql": rows.sql, "args": logQueryArgs(rows.args), "time": endTime.Sub(rows.startTime), "rowCount": rows.rowCount}) + rows.logger.log(rows.ctx, LogLevelInfo, "Query", map[string]any{"sql": rows.sql, "args": logQueryArgs(rows.args), "time": endTime.Sub(rows.startTime), "rowCount": rows.rowCount}) } } else { if rows.logger.shouldLog(LogLevelError) { - rows.logger.log(rows.ctx, LogLevelError, "Query", map[string]interface{}{"err": rows.err, "sql": rows.sql, "args": logQueryArgs(rows.args)}) + rows.logger.log(rows.ctx, LogLevelError, "Query", map[string]any{"err": rows.err, "sql": rows.sql, "args": logQueryArgs(rows.args)}) } if rows.err != nil && rows.conn.statementCache != nil { rows.conn.statementCache.StatementErrored(rows.sql, rows.err) @@ -202,7 +202,7 @@ func (rows *connRows) Next() bool { } } -func (rows *connRows) Scan(dest ...interface{}) error { +func (rows *connRows) Scan(dest ...any) error { m := rows.typeMap fieldDescriptions := rows.FieldDescriptions() values := rows.values @@ -248,12 +248,12 @@ func (rows *connRows) Scan(dest ...interface{}) error { return nil } -func (rows *connRows) Values() ([]interface{}, error) { +func (rows *connRows) Values() ([]any, error) { if rows.closed { return nil, errors.New("rows is closed") } - values := make([]interface{}, 0, len(rows.FieldDescriptions())) + values := make([]any, 0, len(rows.FieldDescriptions())) for i := range rows.FieldDescriptions() { buf := rows.values[i] @@ -314,7 +314,7 @@ func (e ScanArgError) Unwrap() error { // fieldDescriptions - OID and format of values // values - the raw data as returned from the PostgreSQL server // dest - the destination that values will be decoded into -func ScanRow(typeMap *pgtype.Map, fieldDescriptions []pgproto3.FieldDescription, values [][]byte, dest ...interface{}) error { +func ScanRow(typeMap *pgtype.Map, fieldDescriptions []pgproto3.FieldDescription, values [][]byte, dest ...any) error { if len(fieldDescriptions) != len(values) { return fmt.Errorf("number of field descriptions must equal number of values, got %d and %d", len(fieldDescriptions), len(values)) } diff --git a/stdlib/sql.go b/stdlib/sql.go index 7624605c..61fb77d3 100644 --- a/stdlib/sql.go +++ b/stdlib/sql.go @@ -37,7 +37,7 @@ // // handle error from acquiring connection from DB pool // } // -// err = conn.Raw(func(driverConn interface{}) error { +// err = conn.Raw(func(driverConn any) error { // conn := driverConn.(*stdlib.Conn).Conn() // conn is a *pgx.Conn // // Do pgx specific stuff with conn // conn.CopyFrom(...) @@ -413,7 +413,7 @@ func (c *Conn) QueryContext(ctx context.Context, query string, argsV []driver.Na return nil, driver.ErrBadConn } - args := []interface{}{databaseSQLResultFormats} + args := []any{databaseSQLResultFormats} args = append(args, namedValueToInterface(argsV)...) rows, err := c.conn.Query(ctx, query, args...) @@ -746,11 +746,11 @@ func (r *Rows) Next(dest []driver.Value) error { return nil } -func valueToInterface(argsV []driver.Value) []interface{} { - args := make([]interface{}, 0, len(argsV)) +func valueToInterface(argsV []driver.Value) []any { + args := make([]any, 0, len(argsV)) for _, v := range argsV { if v != nil { - args = append(args, v.(interface{})) + args = append(args, v.(any)) } else { args = append(args, nil) } @@ -758,11 +758,11 @@ func valueToInterface(argsV []driver.Value) []interface{} { return args } -func namedValueToInterface(argsV []driver.NamedValue) []interface{} { - args := make([]interface{}, 0, len(argsV)) +func namedValueToInterface(argsV []driver.NamedValue) []any { + args := make([]any, 0, len(argsV)) for _, v := range argsV { if v.Value != nil { - args = append(args, v.Value.(interface{})) + args = append(args, v.Value.(any)) } else { args = append(args, nil) } diff --git a/stdlib/sql_test.go b/stdlib/sql_test.go index 5fe03976..78b2d01f 100644 --- a/stdlib/sql_test.go +++ b/stdlib/sql_test.go @@ -36,7 +36,7 @@ func skipCockroachDB(t testing.TB, db *sql.DB, msg string) { require.NoError(t, err) defer conn.Close() - err = conn.Raw(func(driverConn interface{}) error { + err = conn.Raw(func(driverConn any) error { conn := driverConn.(*stdlib.Conn).Conn() if conn.PgConn().ParameterStatus("crdb_version") != "" { t.Skip(msg) @@ -51,7 +51,7 @@ func skipPostgreSQLVersionLessThan(t testing.TB, db *sql.DB, minVersion int64) { require.NoError(t, err) defer conn.Close() - err = conn.Raw(func(driverConn interface{}) error { + err = conn.Raw(func(driverConn any) error { conn := driverConn.(*stdlib.Conn).Conn() serverVersionStr := conn.PgConn().ParameterStatus("server_version") serverVersionStr = regexp.MustCompile(`^[0-9]+`).FindString(serverVersionStr) @@ -639,7 +639,7 @@ func TestConnRaw(t *testing.T) { require.NoError(t, err) var n int - err = conn.Raw(func(driverConn interface{}) error { + err = conn.Raw(func(driverConn any) error { conn := driverConn.(*stdlib.Conn).Conn() return conn.QueryRow(context.Background(), "select 42").Scan(&n) }) @@ -1036,14 +1036,14 @@ func TestScanJSONIntoJSONRawMessage(t *testing.T) { type testLog struct { lvl pgx.LogLevel msg string - data map[string]interface{} + data map[string]any } type testLogger struct { logs []testLog } -func (l *testLogger) Log(ctx context.Context, lvl pgx.LogLevel, msg string, data map[string]interface{}) { +func (l *testLogger) Log(ctx context.Context, lvl pgx.LogLevel, msg string, data map[string]any) { l.logs = append(l.logs, testLog{lvl: lvl, msg: msg, data: data}) } diff --git a/tx.go b/tx.go index 6b85b303..8a078d1a 100644 --- a/tx.go +++ b/tx.go @@ -160,10 +160,10 @@ type Tx interface { Prepare(ctx context.Context, name, sql string) (*pgconn.StatementDescription, error) - Exec(ctx context.Context, sql string, arguments ...interface{}) (commandTag pgconn.CommandTag, err error) - Query(ctx context.Context, sql string, args ...interface{}) (Rows, error) - QueryRow(ctx context.Context, sql string, args ...interface{}) Row - QueryFunc(ctx context.Context, sql string, args []interface{}, scans []interface{}, f func(QueryFuncRow) error) (pgconn.CommandTag, error) + Exec(ctx context.Context, sql string, arguments ...any) (commandTag pgconn.CommandTag, err error) + Query(ctx context.Context, sql string, args ...any) (Rows, error) + QueryRow(ctx context.Context, sql string, args ...any) Row + QueryFunc(ctx context.Context, sql string, args []any, scans []any, f func(QueryFuncRow) error) (pgconn.CommandTag, error) // Conn returns the underlying *Conn that on which this transaction is executing. Conn() *Conn @@ -263,7 +263,7 @@ func (tx *dbTx) Rollback(ctx context.Context) error { } // Exec delegates to the underlying *Conn -func (tx *dbTx) Exec(ctx context.Context, sql string, arguments ...interface{}) (commandTag pgconn.CommandTag, err error) { +func (tx *dbTx) Exec(ctx context.Context, sql string, arguments ...any) (commandTag pgconn.CommandTag, err error) { return tx.conn.Exec(ctx, sql, arguments...) } @@ -277,7 +277,7 @@ func (tx *dbTx) Prepare(ctx context.Context, name, sql string) (*pgconn.Statemen } // Query delegates to the underlying *Conn -func (tx *dbTx) Query(ctx context.Context, sql string, args ...interface{}) (Rows, error) { +func (tx *dbTx) Query(ctx context.Context, sql string, args ...any) (Rows, error) { if tx.closed { // Because checking for errors can be deferred to the *Rows, build one with the error err := ErrTxClosed @@ -288,13 +288,13 @@ func (tx *dbTx) Query(ctx context.Context, sql string, args ...interface{}) (Row } // QueryRow delegates to the underlying *Conn -func (tx *dbTx) QueryRow(ctx context.Context, sql string, args ...interface{}) Row { +func (tx *dbTx) QueryRow(ctx context.Context, sql string, args ...any) Row { rows, _ := tx.Query(ctx, sql, args...) return (*connRow)(rows.(*connRows)) } // QueryFunc delegates to the underlying *Conn. -func (tx *dbTx) QueryFunc(ctx context.Context, sql string, args []interface{}, scans []interface{}, f func(QueryFuncRow) error) (pgconn.CommandTag, error) { +func (tx *dbTx) QueryFunc(ctx context.Context, sql string, args []any, scans []any, f func(QueryFuncRow) error) (pgconn.CommandTag, error) { if tx.closed { return pgconn.CommandTag{}, ErrTxClosed } @@ -378,7 +378,7 @@ func (sp *dbSavepoint) Rollback(ctx context.Context) error { } // Exec delegates to the underlying Tx -func (sp *dbSavepoint) Exec(ctx context.Context, sql string, arguments ...interface{}) (commandTag pgconn.CommandTag, err error) { +func (sp *dbSavepoint) Exec(ctx context.Context, sql string, arguments ...any) (commandTag pgconn.CommandTag, err error) { if sp.closed { return pgconn.CommandTag{}, ErrTxClosed } @@ -396,7 +396,7 @@ func (sp *dbSavepoint) Prepare(ctx context.Context, name, sql string) (*pgconn.S } // Query delegates to the underlying Tx -func (sp *dbSavepoint) Query(ctx context.Context, sql string, args ...interface{}) (Rows, error) { +func (sp *dbSavepoint) Query(ctx context.Context, sql string, args ...any) (Rows, error) { if sp.closed { // Because checking for errors can be deferred to the *Rows, build one with the error err := ErrTxClosed @@ -407,13 +407,13 @@ func (sp *dbSavepoint) Query(ctx context.Context, sql string, args ...interface{ } // QueryRow delegates to the underlying Tx -func (sp *dbSavepoint) QueryRow(ctx context.Context, sql string, args ...interface{}) Row { +func (sp *dbSavepoint) QueryRow(ctx context.Context, sql string, args ...any) Row { rows, _ := sp.Query(ctx, sql, args...) return (*connRow)(rows.(*connRows)) } // QueryFunc delegates to the underlying Tx. -func (sp *dbSavepoint) QueryFunc(ctx context.Context, sql string, args []interface{}, scans []interface{}, f func(QueryFuncRow) error) (pgconn.CommandTag, error) { +func (sp *dbSavepoint) QueryFunc(ctx context.Context, sql string, args []any, scans []any, f func(QueryFuncRow) error) (pgconn.CommandTag, error) { if sp.closed { return pgconn.CommandTag{}, ErrTxClosed } diff --git a/values.go b/values.go index 12e5db47..d27e071d 100644 --- a/values.go +++ b/values.go @@ -12,7 +12,7 @@ const ( BinaryFormatCode = 1 ) -func convertSimpleArgument(m *pgtype.Map, arg interface{}) (interface{}, error) { +func convertSimpleArgument(m *pgtype.Map, arg any) (any, error) { if anynil.Is(arg) { return nil, nil } @@ -27,7 +27,7 @@ func convertSimpleArgument(m *pgtype.Map, arg interface{}) (interface{}, error) return string(buf), nil } -func encodeCopyValue(m *pgtype.Map, buf []byte, oid uint32, arg interface{}) ([]byte, error) { +func encodeCopyValue(m *pgtype.Map, buf []byte, oid uint32, arg any) ([]byte, error) { if anynil.Is(arg) { return pgio.AppendInt32(buf, -1), nil } diff --git a/values_test.go b/values_test.go index 04441b72..39bf1ead 100644 --- a/values_test.go +++ b/values_test.go @@ -158,12 +158,12 @@ func testJSONSingleLevelStringMap(t *testing.T, conn *pgx.Conn, typename string) } func testJSONNestedMap(t *testing.T, conn *pgx.Conn, typename string) { - input := map[string]interface{}{ + input := map[string]any{ "name": "Uncanny", - "stats": map[string]interface{}{"hp": float64(107), "maxhp": float64(150)}, - "inventory": []interface{}{"phone", "key"}, + "stats": map[string]any{"hp": float64(107), "maxhp": float64(150)}, + "inventory": []any{"phone", "key"}, } - var output map[string]interface{} + var output map[string]any err := conn.QueryRow(context.Background(), "select $1::"+typename, input).Scan(&output) if err != nil { t.Errorf("%s: QueryRow Scan failed: %v", typename, err) @@ -171,7 +171,7 @@ func testJSONNestedMap(t *testing.T, conn *pgx.Conn, typename string) { } if !reflect.DeepEqual(input, output) { - t.Errorf("%s: Did not transcode map[string]interface{} successfully: %v is not %v", typename, input, output) + t.Errorf("%s: Did not transcode map[string]any successfully: %v is not %v", typename, input, output) return } } @@ -559,13 +559,13 @@ func TestArrayDecoding(t *testing.T) { pgxtest.RunWithQueryExecModes(context.Background(), t, defaultConnTestRunner, nil, func(ctx context.Context, t testing.TB, conn *pgx.Conn) { tests := []struct { sql string - query interface{} - scan interface{} - assert func(testing.TB, interface{}, interface{}) + query any + scan any + assert func(testing.TB, any, any) }{ { "select $1::bool[]", []bool{true, false, true}, &[]bool{}, - func(t testing.TB, query, scan interface{}) { + func(t testing.TB, query, scan any) { if !reflect.DeepEqual(query, *(scan.(*[]bool))) { t.Errorf("failed to encode bool[]") } @@ -573,7 +573,7 @@ func TestArrayDecoding(t *testing.T) { }, { "select $1::smallint[]", []int16{2, 4, 484, 32767}, &[]int16{}, - func(t testing.TB, query, scan interface{}) { + func(t testing.TB, query, scan any) { if !reflect.DeepEqual(query, *(scan.(*[]int16))) { t.Errorf("failed to encode smallint[]") } @@ -581,7 +581,7 @@ func TestArrayDecoding(t *testing.T) { }, { "select $1::smallint[]", []uint16{2, 4, 484, 32767}, &[]uint16{}, - func(t testing.TB, query, scan interface{}) { + func(t testing.TB, query, scan any) { if !reflect.DeepEqual(query, *(scan.(*[]uint16))) { t.Errorf("failed to encode smallint[]") } @@ -589,7 +589,7 @@ func TestArrayDecoding(t *testing.T) { }, { "select $1::int[]", []int32{2, 4, 484}, &[]int32{}, - func(t testing.TB, query, scan interface{}) { + func(t testing.TB, query, scan any) { if !reflect.DeepEqual(query, *(scan.(*[]int32))) { t.Errorf("failed to encode int[]") } @@ -597,7 +597,7 @@ func TestArrayDecoding(t *testing.T) { }, { "select $1::int[]", []uint32{2, 4, 484, 2147483647}, &[]uint32{}, - func(t testing.TB, query, scan interface{}) { + func(t testing.TB, query, scan any) { if !reflect.DeepEqual(query, *(scan.(*[]uint32))) { t.Errorf("failed to encode int[]") } @@ -605,7 +605,7 @@ func TestArrayDecoding(t *testing.T) { }, { "select $1::bigint[]", []int64{2, 4, 484, 9223372036854775807}, &[]int64{}, - func(t testing.TB, query, scan interface{}) { + func(t testing.TB, query, scan any) { if !reflect.DeepEqual(query, *(scan.(*[]int64))) { t.Errorf("failed to encode bigint[]") } @@ -613,7 +613,7 @@ func TestArrayDecoding(t *testing.T) { }, { "select $1::bigint[]", []uint64{2, 4, 484, 9223372036854775807}, &[]uint64{}, - func(t testing.TB, query, scan interface{}) { + func(t testing.TB, query, scan any) { if !reflect.DeepEqual(query, *(scan.(*[]uint64))) { t.Errorf("failed to encode bigint[]") } @@ -621,7 +621,7 @@ func TestArrayDecoding(t *testing.T) { }, { "select $1::text[]", []string{"it's", "over", "9000!"}, &[]string{}, - func(t testing.TB, query, scan interface{}) { + func(t testing.TB, query, scan any) { if !reflect.DeepEqual(query, *(scan.(*[]string))) { t.Errorf("failed to encode text[]") } @@ -629,7 +629,7 @@ func TestArrayDecoding(t *testing.T) { }, { "select $1::timestamptz[]", []time.Time{time.Unix(323232, 0), time.Unix(3239949334, 00)}, &[]time.Time{}, - func(t testing.TB, query, scan interface{}) { + func(t testing.TB, query, scan any) { queryTimeSlice := query.([]time.Time) scanTimeSlice := *(scan.(*[]time.Time)) require.Equal(t, len(queryTimeSlice), len(scanTimeSlice)) @@ -640,7 +640,7 @@ func TestArrayDecoding(t *testing.T) { }, { "select $1::bytea[]", [][]byte{{0, 1, 2, 3}, {4, 5, 6, 7}}, &[][]byte{}, - func(t testing.TB, query, scan interface{}) { + func(t testing.TB, query, scan any) { queryBytesSliceSlice := query.([][]byte) scanBytesSliceSlice := *(scan.(*[][]byte)) if len(queryBytesSliceSlice) != len(scanBytesSliceSlice) { @@ -754,26 +754,26 @@ func TestPointerPointer(t *testing.T) { tests := []struct { sql string - queryArgs []interface{} - scanArgs []interface{} + queryArgs []any + scanArgs []any expected allTypes }{ - {"select $1::text", []interface{}{expected.s}, []interface{}{&actual.s}, allTypes{s: expected.s}}, - {"select $1::text", []interface{}{zero.s}, []interface{}{&actual.s}, allTypes{}}, - {"select $1::int2", []interface{}{expected.i16}, []interface{}{&actual.i16}, allTypes{i16: expected.i16}}, - {"select $1::int2", []interface{}{zero.i16}, []interface{}{&actual.i16}, allTypes{}}, - {"select $1::int4", []interface{}{expected.i32}, []interface{}{&actual.i32}, allTypes{i32: expected.i32}}, - {"select $1::int4", []interface{}{zero.i32}, []interface{}{&actual.i32}, allTypes{}}, - {"select $1::int8", []interface{}{expected.i64}, []interface{}{&actual.i64}, allTypes{i64: expected.i64}}, - {"select $1::int8", []interface{}{zero.i64}, []interface{}{&actual.i64}, allTypes{}}, - {"select $1::float4", []interface{}{expected.f32}, []interface{}{&actual.f32}, allTypes{f32: expected.f32}}, - {"select $1::float4", []interface{}{zero.f32}, []interface{}{&actual.f32}, allTypes{}}, - {"select $1::float8", []interface{}{expected.f64}, []interface{}{&actual.f64}, allTypes{f64: expected.f64}}, - {"select $1::float8", []interface{}{zero.f64}, []interface{}{&actual.f64}, allTypes{}}, - {"select $1::bool", []interface{}{expected.b}, []interface{}{&actual.b}, allTypes{b: expected.b}}, - {"select $1::bool", []interface{}{zero.b}, []interface{}{&actual.b}, allTypes{}}, - {"select $1::timestamptz", []interface{}{expected.t}, []interface{}{&actual.t}, allTypes{t: expected.t}}, - {"select $1::timestamptz", []interface{}{zero.t}, []interface{}{&actual.t}, allTypes{}}, + {"select $1::text", []any{expected.s}, []any{&actual.s}, allTypes{s: expected.s}}, + {"select $1::text", []any{zero.s}, []any{&actual.s}, allTypes{}}, + {"select $1::int2", []any{expected.i16}, []any{&actual.i16}, allTypes{i16: expected.i16}}, + {"select $1::int2", []any{zero.i16}, []any{&actual.i16}, allTypes{}}, + {"select $1::int4", []any{expected.i32}, []any{&actual.i32}, allTypes{i32: expected.i32}}, + {"select $1::int4", []any{zero.i32}, []any{&actual.i32}, allTypes{}}, + {"select $1::int8", []any{expected.i64}, []any{&actual.i64}, allTypes{i64: expected.i64}}, + {"select $1::int8", []any{zero.i64}, []any{&actual.i64}, allTypes{}}, + {"select $1::float4", []any{expected.f32}, []any{&actual.f32}, allTypes{f32: expected.f32}}, + {"select $1::float4", []any{zero.f32}, []any{&actual.f32}, allTypes{}}, + {"select $1::float8", []any{expected.f64}, []any{&actual.f64}, allTypes{f64: expected.f64}}, + {"select $1::float8", []any{zero.f64}, []any{&actual.f64}, allTypes{}}, + {"select $1::bool", []any{expected.b}, []any{&actual.b}, allTypes{b: expected.b}}, + {"select $1::bool", []any{zero.b}, []any{&actual.b}, allTypes{}}, + {"select $1::timestamptz", []any{expected.t}, []any{&actual.t}, allTypes{t: expected.t}}, + {"select $1::timestamptz", []any{zero.t}, []any{&actual.t}, allTypes{}}, } for i, tt := range tests { @@ -939,11 +939,11 @@ func TestEncodeTypeRename(t *testing.T) { // tests := []struct { // sql string -// expected []interface{} +// expected []any // }{ // { // "select row(1, 'cat', '2015-01-01 08:12:42-00'::timestamptz)", -// []interface{}{ +// []any{ // int32(1), // "cat", // time.Date(2015, 1, 1, 8, 12, 42, 0, time.UTC).Local(), @@ -951,7 +951,7 @@ func TestEncodeTypeRename(t *testing.T) { // }, // { // "select row(100.0::float, 1.09::float)", -// []interface{}{ +// []any{ // float64(100), // float64(1.09), // }, @@ -959,7 +959,7 @@ func TestEncodeTypeRename(t *testing.T) { // } // for i, tt := range tests { -// var actual []interface{} +// var actual []any // err := conn.QueryRow(context.Background(), tt.sql).Scan(&actual) // if err != nil {