From e58381ac9409172a674f76c1801c3c606ac41b42 Mon Sep 17 00:00:00 2001 From: Alejandro Do Nascimento Mora Date: Mon, 12 Dec 2022 14:43:56 +0100 Subject: [PATCH] Enable some CopyFrom tests for cockroachDB CockroachDB added support for COPY in version 20.2. https://www.cockroachlabs.com/docs/v20.2/copy-from There are some limitations on the implementation, that's why not all the existing tests were enabled. --- pgconn/pgconn_test.go | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/pgconn/pgconn_test.go b/pgconn/pgconn_test.go index dd238b65..9b0895d1 100644 --- a/pgconn/pgconn_test.go +++ b/pgconn/pgconn_test.go @@ -1633,10 +1633,6 @@ func TestConnCopyFrom(t *testing.T) { require.NoError(t, err) defer closeConn(t, pgConn) - if pgConn.ParameterStatus("crdb_version") != "" { - t.Skip("Server does not fully support COPY FROM (https://www.cockroachlabs.com/docs/v20.2/copy-from.html)") - } - _, err = pgConn.Exec(context.Background(), `create temporary table foo( a int4, b varchar @@ -1654,7 +1650,11 @@ func TestConnCopyFrom(t *testing.T) { require.NoError(t, err) } - ct, err := pgConn.CopyFrom(context.Background(), srcBuf, "COPY foo FROM STDIN WITH (FORMAT csv)") + copySql := "COPY foo FROM STDIN WITH (FORMAT csv)" + if pgConn.ParameterStatus("crdb_version") != "" { + copySql = "COPY foo FROM STDIN WITH CSV" + } + ct, err := pgConn.CopyFrom(context.Background(), srcBuf, copySql) require.NoError(t, err) assert.Equal(t, int64(len(inputRows)), ct.RowsAffected()) @@ -1673,10 +1673,6 @@ func TestConnCopyFromCanceled(t *testing.T) { require.NoError(t, err) defer closeConn(t, pgConn) - if pgConn.ParameterStatus("crdb_version") != "" { - t.Skip("Server does not support query cancellation (https://github.com/cockroachdb/cockroach/issues/41335)") - } - _, err = pgConn.Exec(context.Background(), `create temporary table foo( a int4, b varchar @@ -1697,7 +1693,11 @@ func TestConnCopyFromCanceled(t *testing.T) { }() ctx, cancel := context.WithTimeout(context.Background(), 100*time.Millisecond) - ct, err := pgConn.CopyFrom(ctx, r, "COPY foo FROM STDIN WITH (FORMAT csv)") + copySql := "COPY foo FROM STDIN WITH (FORMAT csv)" + if pgConn.ParameterStatus("crdb_version") != "" { + copySql = "COPY foo FROM STDIN WITH CSV" + } + ct, err := pgConn.CopyFrom(ctx, r, copySql) cancel() assert.Equal(t, int64(0), ct.RowsAffected()) assert.Error(t, err) @@ -1787,7 +1787,11 @@ func TestConnCopyFromGzipReader(t *testing.T) { gr, err := gzip.NewReader(f) require.NoError(t, err) - ct, err := pgConn.CopyFrom(context.Background(), gr, "COPY foo FROM STDIN WITH (FORMAT csv)") + copySql := "COPY foo FROM STDIN WITH (FORMAT csv)" + if pgConn.ParameterStatus("crdb_version") != "" { + copySql = "COPY foo FROM STDIN WITH CSV" + } + ct, err := pgConn.CopyFrom(context.Background(), gr, copySql) require.NoError(t, err) assert.Equal(t, int64(len(inputRows)), ct.RowsAffected()) @@ -1927,7 +1931,7 @@ func TestConnCopyFromDataWriteAfterErrorAndReturn(t *testing.T) { require.NoError(t, err) if pgConn.ParameterStatus("crdb_version") != "" { - t.Skip("Server does support COPY FROM") + t.Skip("Server does not fully support COPY FROM") } setupSQL := `create temporary table t (