Thread

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. EXECUTE of a SELECT ... INTO now draws a 'not implemented' error,

  1. plpgsql execute vs. SELECT ... INTO

    Andrew Dunstan <andrew@dunslane.net> — 2010-11-05T22:49:35Z

    (Prompted by a puzzled user on IRC)
    
    Ten years ago, nearly, we made this commit 
    <https://github.com/postgres/postgres/commit/8a2cdd77ad5c0a4f8902ea86d0377336e076abcb> 
    (see what a good thing it is we carefully got all the history 
    transferred to git?)
    
    The comment on the commit says:
    
        EXECUTE of a SELECT ... INTO now draws a 'not implemented' error,
        rather than executing the INTO clause with non-plpgsql semantics
        as it was doing for the last few weeks/months.  This keeps our options
        open for making it do the right plpgsql-ish thing in future without
        creating a backwards compatibility problem.  There is no loss of
        functionality since people can get the same behavior with CREATE TABLE AS.
    
    Do we really still need to keep out options open on this after all that 
    time?
    
    cheers
    
    andrew
    
    
    
  2. Re: plpgsql execute vs. SELECT ... INTO

    Tom Lane <tgl@sss.pgh.pa.us> — 2010-11-05T22:54:06Z

    Andrew Dunstan <andrew@dunslane.net> writes:
    > The comment on the commit says:
    
    >     EXECUTE of a SELECT ... INTO now draws a 'not implemented' error,
    >     rather than executing the INTO clause with non-plpgsql semantics
    >     as it was doing for the last few weeks/months.  This keeps our options
    >     open for making it do the right plpgsql-ish thing in future without
    >     creating a backwards compatibility problem.  There is no loss of
    >     functionality since people can get the same behavior with CREATE TABLE AS.
    
    > Do we really still need to keep out options open on this after all that 
    > time?
    
    I think it's still a good idea that it won't do something that is very
    much different from what a non-EXECUTE'd SELECT INTO will do.
    
    I forget, is there a HINT there suggesting CREATE TABLE AS?  Maybe we
    should add one if not.
    
    			regards, tom lane
    
    
  3. Re: plpgsql execute vs. SELECT ... INTO

    Andrew Dunstan <andrew@dunslane.net> — 2010-11-05T22:59:41Z

    
    On 11/05/2010 06:54 PM, Tom Lane wrote:
    > Andrew Dunstan<andrew@dunslane.net>  writes:
    >> The comment on the commit says:
    >>      EXECUTE of a SELECT ... INTO now draws a 'not implemented' error,
    >>      rather than executing the INTO clause with non-plpgsql semantics
    >>      as it was doing for the last few weeks/months.  This keeps our options
    >>      open for making it do the right plpgsql-ish thing in future without
    >>      creating a backwards compatibility problem.  There is no loss of
    >>      functionality since people can get the same behavior with CREATE TABLE AS.
    >> Do we really still need to keep out options open on this after all that
    >> time?
    > I think it's still a good idea that it won't do something that is very
    > much different from what a non-EXECUTE'd SELECT INTO will do.
    >
    > I forget, is there a HINT there suggesting CREATE TABLE AS?  Maybe we
    > should add one if not.
    
    No, (see below) we should certainly improve that and document the 
    behavior, if we're going to keep it.
    
                     if (*ptr == 'S' || *ptr == 's')
                         ereport(ERROR,
                                 (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
                          errmsg("EXECUTE of SELECT ... INTO is not 
    implemented"),
                                  errhint("You might want to use EXECUTE ... 
    INTO instead.")));
    
    
    
    cheers
    
    andrew
    
    
  4. Re: plpgsql execute vs. SELECT ... INTO

    Bruce Momjian <bruce@momjian.us> — 2011-03-10T20:59:22Z

    Andrew Dunstan wrote:
    > 
    > 
    > On 11/05/2010 06:54 PM, Tom Lane wrote:
    > > Andrew Dunstan<andrew@dunslane.net>  writes:
    > >> The comment on the commit says:
    > >>      EXECUTE of a SELECT ... INTO now draws a 'not implemented' error,
    > >>      rather than executing the INTO clause with non-plpgsql semantics
    > >>      as it was doing for the last few weeks/months.  This keeps our options
    > >>      open for making it do the right plpgsql-ish thing in future without
    > >>      creating a backwards compatibility problem.  There is no loss of
    > >>      functionality since people can get the same behavior with CREATE TABLE AS.
    > >> Do we really still need to keep out options open on this after all that
    > >> time?
    > > I think it's still a good idea that it won't do something that is very
    > > much different from what a non-EXECUTE'd SELECT INTO will do.
    > >
    > > I forget, is there a HINT there suggesting CREATE TABLE AS?  Maybe we
    > > should add one if not.
    > 
    > No, (see below) we should certainly improve that and document the 
    > behavior, if we're going to keep it.
    > 
    >                  if (*ptr == 'S' || *ptr == 's')
    >                      ereport(ERROR,
    >                              (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
    >                       errmsg("EXECUTE of SELECT ... INTO is not 
    > implemented"),
    >                               errhint("You might want to use EXECUTE ... 
    > INTO instead.")));
    
    Can someone suggest updated hint text, like this?
    
      errhint("You might want to use EXECUTE ... INTO or EXECUTE CREATE TABLE AS instead.")));
    
    -- 
      Bruce Momjian  <bruce@momjian.us>        http://momjian.us
      EnterpriseDB                             http://enterprisedb.com
    
      + It's impossible for everything to be true. +
    
    
  5. Re: plpgsql execute vs. SELECT ... INTO

    Bruce Momjian <bruce@momjian.us> — 2011-03-16T00:19:01Z

    Bruce Momjian wrote:
    > Andrew Dunstan wrote:
    > > 
    > > 
    > > On 11/05/2010 06:54 PM, Tom Lane wrote:
    > > > Andrew Dunstan<andrew@dunslane.net>  writes:
    > > >> The comment on the commit says:
    > > >>      EXECUTE of a SELECT ... INTO now draws a 'not implemented' error,
    > > >>      rather than executing the INTO clause with non-plpgsql semantics
    > > >>      as it was doing for the last few weeks/months.  This keeps our options
    > > >>      open for making it do the right plpgsql-ish thing in future without
    > > >>      creating a backwards compatibility problem.  There is no loss of
    > > >>      functionality since people can get the same behavior with CREATE TABLE AS.
    > > >> Do we really still need to keep out options open on this after all that
    > > >> time?
    > > > I think it's still a good idea that it won't do something that is very
    > > > much different from what a non-EXECUTE'd SELECT INTO will do.
    > > >
    > > > I forget, is there a HINT there suggesting CREATE TABLE AS?  Maybe we
    > > > should add one if not.
    > > 
    > > No, (see below) we should certainly improve that and document the 
    > > behavior, if we're going to keep it.
    > > 
    > >                  if (*ptr == 'S' || *ptr == 's')
    > >                      ereport(ERROR,
    > >                              (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
    > >                       errmsg("EXECUTE of SELECT ... INTO is not 
    > > implemented"),
    > >                               errhint("You might want to use EXECUTE ... 
    > > INTO instead.")));
    > 
    > Can someone suggest updated hint text, like this?
    > 
    >   errhint("You might want to use EXECUTE ... INTO or EXECUTE CREATE TABLE AS instead.")));
    
    OK, suggested wording improvement applied with attached patch.
    
    -- 
      Bruce Momjian  <bruce@momjian.us>        http://momjian.us
      EnterpriseDB                             http://enterprisedb.com
    
      + It's impossible for everything to be true. +