Thread

  1. Re: [HACKERS] Re: [BUGS] General Bug Report: Bug in optimizer

    Bruce Momjian <maillist@candle.pha.pa.us> — 1999-03-18T19:59:11Z

    > Bruce Momjian wrote:
    > > 
    > > My guess is that the creation of the index updates the table size
    > > statistics.
    > 
    > Yes.
    > 
    > > However, when I see zero size, I don't know if it is accurate, or if
    > > someone has added rows since the last vacuum/index creation, so I think
    > > it is correct to use an index on a zero-length table if it is
    > > appropriate.  If the size is 1, I will assume that number is accurate,
    > > and do a sequential scan.
    > > 
    > > Does that make sense?
    > 
    > Yes. But we have to fix SeqScan for field1 = -1...
    
    The basic problem is that the -1 is stored as:
    	
    	{ EXPR 
    	   :typeOid 0  
    	   :opType op 
    	   :oper 
    	      { OPER 
    	      :opno 558 
    	      :opid 0 
    	      :opresulttype 23 
    	      }
    	    
    	   :args (
    	      { CONST 
    	      :consttype 23 
    	      :constlen 4 
    	      :constisnull false 
    	      :constvalue  4 [  4  0  0  0 ]  
    	      :constbyval true 
    	      }
    	   )
    
    This is clearly undesirable, and causes the optimizer to think it can't
    use the index.  
    
    Is this bug report for 6.4.*, or did are you running the current
    development tree?  I assume you are running 6.4.*, and am surprised this
    did not show as a larger problem.
    
    I will look in the grammer for a fix.  This should come across as a
    single -4 constant.
    
    -- 
      Bruce Momjian                        |  http://www.op.net/~candle
      maillist@candle.pha.pa.us            |  (610) 853-3000
      +  If your life is a hard drive,     |  830 Blythe Avenue
      +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026