diff --git a/copy_from.go b/copy_from.go index 1e4d1373..4bbbe30e 100644 --- a/copy_from.go +++ b/copy_from.go @@ -5,6 +5,7 @@ import ( "context" "fmt" "io" + "time" "github.com/jackc/pgconn" "github.com/jackc/pgio" @@ -145,12 +146,24 @@ func (ct *copyFrom) run(ctx context.Context) (int64, error) { w.Close() }() + startTime := time.Now() + commandTag, err := ct.conn.pgConn.CopyFrom(ctx, r, fmt.Sprintf("copy %s ( %s ) from stdin binary;", quotedTableName, quotedColumnNames)) r.Close() <-doneChan - return commandTag.RowsAffected(), err + rowsAffected := commandTag.RowsAffected() + if err == nil { + if ct.conn.shouldLog(LogLevelInfo) { + endTime := time.Now() + ct.conn.log(ctx, LogLevelInfo, "Copy", map[string]interface{}{"tableName": ct.tableName, "columnNames": ct.columnNames, "time": endTime.Sub(startTime), "rowCount": rowsAffected}) + } + } else if ct.conn.shouldLog(LogLevelError) { + ct.conn.log(ctx, LogLevelError, "Copy", map[string]interface{}{"err": err, "tableName": ct.tableName, "columnNames": ct.columnNames}) + } + + return rowsAffected, err } func (ct *copyFrom) buildCopyBuf(buf []byte, sd *pgconn.StatementDescription) (bool, []byte, error) {