Open mbrancato opened 11 months ago
execute()
uses prepared statements if there are arguments, which is likely in the case of insert
.
I do sometimes see
INSERT 0 0
results in some high-volume workloads
Depending on how your insert
body looks it's totally possible to insert zero rows. For example, INSERT INTO foo (select * where false)
will return INSERT 0 0
.
@elprans ahh thanks, I was going by the documentation which excludes execute()
for the built-in LRU cache of prepared statements and only includes fetch*()
.
asyncpg automatically maintains a small LRU cache for queries executed during calls to the fetch(), fetchrow(), or fetchval() methods.
When using
execute()
I can parse the command output for INSERT to confirm a single row inserted likeINSERT 0 1
. However,execute()
does not support the LRU for automatically prepared statements. Can you document how to confirm that theINSERT
worked using afetch*()
method that will use the LRU? I do sometimes seeINSERT 0 0
results in some high-volume workloads (likely just duplicate data), and these do not raiseUniqueViolationError
,QueryCanceledError
, or someTimeoutError
.