Re: enhance SPI to support EXECUTE commands
От
Quan Zongliang
Тема
Re: enhance SPI to support EXECUTE commands
Дата
Msg-id
b0322b9f-9918-e6cf-b893-27114fc85011@postgresdata.com
Ответ на
Re: enhance SPI to support EXECUTE commands (Pavel Stehule)
Список
Дерево обсуждения
enhance SPI to support EXECUTE commands Quan Zongliang <zongliang.quan@postgresdata.com>
Re: enhance SPI to support EXECUTE commands Ahsan Hadi <ahsan.hadi@gmail.com>
Re: enhance SPI to support EXECUTE commands Tomas Vondra <tomas.vondra@2ndquadrant.com>
Re: enhance SPI to support EXECUTE commands Tomas Vondra <tomas.vondra@2ndquadrant.com>
Re: enhance SPI to support EXECUTE commands Pavel Stehule <pavel.stehule@gmail.com>
Re: enhance SPI to support EXECUTE commands Quan Zongliang <zongliang.quan@postgresdata.com>
Re: enhance SPI to support EXECUTE commands Pavel Stehule <pavel.stehule@gmail.com>
Re: enhance SPI to support EXECUTE commands Quan Zongliang <zongliang.quan@postgresdata.com>
Re: enhance SPI to support EXECUTE commands Pavel Stehule <pavel.stehule@gmail.com>
Re: enhance SPI to support EXECUTE commands Quan Zongliang <zongliang.quan@postgresdata.com>
Re: enhance SPI to support EXECUTE commands Pavel Stehule <pavel.stehule@gmail.com>
On 2019/9/5 17:33, Pavel Stehule wrote: > > > čt 5. 9. 2019 v 10:57 odesílatel Quan Zongliang > > napsal: > > On 2019/9/5 16:31, Pavel Stehule wrote: > > > > > > čt 5. 9. 2019 v 10:25 odesílatel Quan Zongliang > > > > >> napsal: > > > > On 2019/9/5 15:09, Pavel Stehule wrote: > > > > > > > > > čt 5. 9. 2019 v 8:39 odesílatel Quan Zongliang > > > > > > > > > > > >>> napsal: > > > > > > Dear hackers, > > > > > > I found that such a statement would get 0 in PL/pgSQL. > > > > > > PREPARE smt_del(int) AS DELETE FROM t1; > > > EXECUTE 'EXECUTE smt_del(100)'; > > > GET DIAGNOSTICS j = ROW_COUNT; > > > > > > In fact, this is a problem with SPI, it does not support > > getting result > > > of the EXECUTE command. I made a little enhancement. > Support > > for the > > > number of rows processed when executing > INSERT/UPDATE/DELETE > > statements > > > dynamically. > > > > > > > > > Is there some use case for support this feature? > > > > > A user deletes the data in PL/pgSQL using the above method, > hoping > > to do > > more processing according to the number of rows affected, and > found > > that > > each time will get 0. > > > > Sample code: > > PREPARE smt_del(int) AS DELETE FROM t1 WHERE c=$1; > > EXECUTE 'EXECUTE smt_del(100)'; > > GET DIAGNOSTICS j = ROW_COUNT; > > > > > > This has not sense in plpgsql. Why you use PREPARE statement > explicitly? > > > Yes, I told him to do it in other ways, and the problem has been solved. > > Under psql, we can get this result > > flying=# EXECUTE smt_del(100); > DELETE 1 > > So I think this may be the negligence of SPI, it should be better to > deal with it. > > > Personally, I would not to support features that allows bad code. > My code is actually a way to continue the CREATE AS SELECT and COPY statements. In spi.c, they look like this: if (IsA(stmt->utilityStmt, CreateTableAsStmt)) // original code ... else if (IsA(stmt->utilityStmt, CopyStmt)) // original code ... else if (IsA(stmt->utilityStmt, ExecuteStmt)) // my code My patch was not developed for this PL/pgSQL approach. I just because it found this problem. > Pavel > > > > > > IF j=1 THEN > > do something > > ELSIF j=0 THEN > > do something > > > > Here j is always equal to 0. > > > > > > > > Regards > > > > > Regards > > > > > > Pavel > > > > > > > > > Regards, > > > Quan Zongliang > > > > > >
В списке pgsql-hackers по дате отправления