| 94 | } |
| 95 | |
| 96 | func testCopyFrom(t *testing.T, ctx context.Context, db interface { |
| 97 | execer |
| 98 | queryer |
| 99 | copyFromer |
| 100 | }, |
| 101 | ) { |
| 102 | _, err := db.Exec(ctx, `create temporary table foo(a int2, b int4, c int8, d varchar, e text, f date, g timestamptz)`) |
| 103 | require.NoError(t, err) |
| 104 | |
| 105 | tzedTime := time.Date(2010, 2, 3, 4, 5, 6, 0, time.Local) |
| 106 | |
| 107 | inputRows := [][]any{ |
| 108 | {int16(0), int32(1), int64(2), "abc", "efg", time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC), tzedTime}, |
| 109 | {nil, nil, nil, nil, nil, nil, nil}, |
| 110 | } |
| 111 | |
| 112 | copyCount, err := db.CopyFrom(ctx, pgx.Identifier{"foo"}, []string{"a", "b", "c", "d", "e", "f", "g"}, pgx.CopyFromRows(inputRows)) |
| 113 | assert.NoError(t, err) |
| 114 | assert.EqualValues(t, len(inputRows), copyCount) |
| 115 | |
| 116 | rows, err := db.Query(ctx, "select * from foo") |
| 117 | assert.NoError(t, err) |
| 118 | |
| 119 | var outputRows [][]any |
| 120 | for rows.Next() { |
| 121 | row, err := rows.Values() |
| 122 | if err != nil { |
| 123 | t.Errorf("Unexpected error for rows.Values(): %v", err) |
| 124 | } |
| 125 | outputRows = append(outputRows, row) |
| 126 | } |
| 127 | |
| 128 | assert.NoError(t, rows.Err()) |
| 129 | assert.Equal(t, inputRows, outputRows) |
| 130 | } |
| 131 | |
| 132 | func assertConfigsEqual(t *testing.T, expected, actual *pgxpool.Config, testName string) { |
| 133 | if !assert.NotNil(t, expected) { |