Hello, in psycopg 3 we are currently using PQexecParams - although with no params - to send COPY commands. The reason is mostly to avoid people to send COPY together with other statements. Especially if other operations are chained after COPY: we would only notice them after copy is finished. Data changes might have been applied by then, so throwing an exception seems impolite (the result might have been applied already) but managing the result is awkward too.
Someone [1] has pointed out this conversation [2] which suggests that COPY with extended protocol might break in the future. [1] https://github.com/psycopg/psycopg/issues/78 [2] https://www.postgresql.org/message-id/flat/CAMsr%2BYGvp2wRx9pPSxaKFdaObxX8DzWse%2BOkWk2xpXSvT0rq-g%40mail.gmail.com#camsr+ygvp2wrx9ppsxakfdaobxx8dzwse+okwk2xpxsvt0r...@mail.gmail.com As far as PostgreSQL is concerned, would it be better to stick to PQexec with COPY, and if people append statements afterwards they would be the ones to deal with the consequences? (being the server applying the changes, the client throwing an exception) Thank you very much -- Daniele