Thread

  1. int2 unique index malfunction (btree corrupt)

    Christof Petig <christof.petig@wtal.de> — 1999-08-18T14:38:53Z

    Your name               : Christof Petig
    Your email address      : christof.petig@wtal.de
    
    
    System Configuration
    ---------------------
      Architecture (example: Intel Pentium)         : Intel dual-Pentium II
    
      Operating System (example: Linux 2.0.26 ELF)  : Linux 2.2.11 ELF
    
      PostgreSQL version (example: PostgreSQL-6.5.1):   PostgreSQL-6.5,
    6.5.1, 6.6
    
      Compiler used (example:  gcc 2.8.0)           : egcs-1.1.1
    
    
    Dear PostgreSQL wizards,
    
    During development of a CIM program I frequently updated a table by its
    primary key (int2 or numeric(3)). A lot of strange messages
    'NOTICE:  (transaction aborted): queries ignored until END' alerted me
    that something is going wrong.
    
    update foo set val=val+1 where key=:n
    generated 'Cannot insert a duplicate key into a unique index'
    which is definitely wrong.
    
    Included is a very small (C++) program (Linux, egcs-1.1.1) which
    generates the mentioned errors. If it helps debugging, I might port it
    to
    plain C (contact me).
    
    It occured with V6.5 as well as with August 2nd's CVS tree.
    
    Sometimes even the initial 'insert's fail, one time (with August 2nd's
    CVS tree)
    I got an
    'FATAL 1:  btree: items are out of order (leftmost 0, stack 10, update
    1)' error.
    
    Now with 6.5.1, I don't get the NOTICE messages but straight an
    FATAL 1:  btree: items are out of order (leftmost 0, stack 3, update 1)
    FATAL 1:  btree: items are out of order (leftmost 0, stack 2, update 1)
    
    It seems there is something wrong with PostgreSQL's internals. Perhaps
    this program helps tracking it.
    
    Best Regards,
        Christof
    
    PS: vacuum after the FATAL (6.6):
    DEBUG:  --Relation test--
    DEBUG:  Pages 13: Changed 2, Reapped 13, Empty 0, New 0; Tup 128: Vac
    1823, Keep/VTL 0/0, Crash 0, UnUsed 0, MinLen 48, MaxLen 48; Re-using:
    Free/Avail. Space 92444/86784; EndEmpty/Avail. Pages 0/12. Elapsed 0/0
    sec.
    DEBUG:  Index test_pkey: Pages 13; Tuples 128: Deleted 1819. Elapsed 0/0
    sec.
    DEBUG:  Rel test: Pages: 13 --> 1; Tuple(s) moved: 128. Elapsed 0/0 sec.
    
    DEBUG:  Index test_pkey: Pages 13; Tuples 128: Deleted 128. Elapsed 0/0
    sec.
    
    I haven't seen the corruption on 6.5.