Thread

Commits

  1. Make tablesample work with partitioned tables.

  1. tablesample with partitioned tables

    Amit Langote <langote_amit_f8@lab.ntt.co.jp> — 2017-02-22T07:51:46Z

    Attached patch fixes an oversight that tablesample cannot be used with
    partitioned tables:
    
    create table p (a int) partition by list (a);
    select * from p tablesample bernoulli (50);
    ERROR:  TABLESAMPLE clause can only be applied to tables and materialized
    views
    
    Thanks,
    Amit
    
  2. Re: tablesample with partitioned tables

    David Fetter <david@fetter.org> — 2017-02-22T15:54:04Z

    On Wed, Feb 22, 2017 at 04:51:46PM +0900, Amit Langote wrote:
    > Attached patch fixes an oversight that tablesample cannot be used with
    > partitioned tables:
    > 
    > create table p (a int) partition by list (a);
    > select * from p tablesample bernoulli (50);
    > ERROR:  TABLESAMPLE clause can only be applied to tables and materialized
    > views
    
    Thanks!
    
    Should the error message change somehow to reflect that partitioned
    tables are included?  Is complete transparency of partitioned tables
    the goal, and reasonable in this context?
    
    Also, is there a good reason apart from tuits not to expand
    TABLESAMPLE to the rest of our SQL-visible relation structures?  I'm
    guessing this could have something to do with the volatility they
    might have, whether in views that call volatile functions or in
    foreign tables that might not make the right guarantees...
    
    Best,
    David.
    -- 
    David Fetter <david(at)fetter(dot)org> http://fetter.org/
    Phone: +1 415 235 3778  AIM: dfetter666  Yahoo!: dfetter
    Skype: davidfetter      XMPP: david(dot)fetter(at)gmail(dot)com
    
    Remember to vote!
    Consider donating to Postgres: http://www.postgresql.org/about/donate
    
    
    
  3. Re: tablesample with partitioned tables

    Amit Langote <langote_amit_f8@lab.ntt.co.jp> — 2017-02-23T04:53:50Z

    On 2017/02/23 0:54, David Fetter wrote:
    > On Wed, Feb 22, 2017 at 04:51:46PM +0900, Amit Langote wrote:
    >> Attached patch fixes an oversight that tablesample cannot be used with
    >> partitioned tables:
    >>
    >> create table p (a int) partition by list (a);
    >> select * from p tablesample bernoulli (50);
    >> ERROR:  TABLESAMPLE clause can only be applied to tables and materialized
    >> views
    > 
    > Thanks!
    > 
    > Should the error message change somehow to reflect that partitioned
    > tables are included?  Is complete transparency of partitioned tables
    > the goal, and reasonable in this context?
    
    We avoid mentioning partitioned tables separately during most of the
    errors caused by relkind checks.  I mentioned recently [1] that in most of
    these sites such as this one, a table's being partitioned is not significant.
    
    > Also, is there a good reason apart from tuits not to expand
    > TABLESAMPLE to the rest of our SQL-visible relation structures?  I'm
    > guessing this could have something to do with the volatility they
    > might have, whether in views that call volatile functions or in
    > foreign tables that might not make the right guarantees...
    
    I wouldn't be able to say much about that, but I found an email from the
    original discussion that occurred around development of this feature that
    posed the same question.  There might be some answers there.
    
    [1]
    https://www.postgresql.org/message-id/854ad246-4dfa-5c68-19ad-867b6800f313%40lab.ntt.co.jp
    [2] https://www.postgresql.org/message-id/5526D369.1070905%40gmx.net