Hi,

there is a mystic problem with a simple C function which creates a table. 
I minimized the code to reproduce the error. It crashes on two different 
Linux systems (SuSE) and with pg 7.0/7.1. I found that the crash occurrs 
as soon as I use a SERIAL type in the table creation command.

Please help,

thank you,

Markus

Here is the C function:

bool crash ()
{
 if (SPI_connect () < 0)
  return (false);

 SPI_exec ("CREATE TABLE atl (idx SERIAL)",0);

 SPI_finish ();

 return (true);
}

Here is the SQL code:

CREATE FUNCTION crash() RETURNS BOOL AS '/usr/lib/mycode.so' LANGUAGE 'C';
SELECT crash();

And this is the backend's log:

{ QUERY 
   :command 5  
   :create atl 
      { CREATE 
      :relname atl 
      :istemp false     
      :columns (
         { COLUMNDEF 
         :colname idx 
         :typename 
            { TYPENAME 
            :name int4 
            :timezone false 
            :setof false typmod -1 
            :arrayBounds <>
            }
          
         :is_not_null true 
         :is_sequence true 
         :raw_default 
            {FUNCTION nextval 
            :args (
               {CONST  "\"atl_idx_seq""  
               :typename <>
               }
            )
             
            :agg_star false 
            :agg_distinct false 
            }
          
         :cooked_default <> 
         :constraints (
            { atl_idx_seq 
            :type DEFAULT 
            :raw 
               {FUNCTION nextval 
               :args (
                  {CONST  "\"atl_idx_seq""  
                  :typename <>
                  }
               )
                
               :agg_star false 
               :agg_distinct false 
               }
             
            :cooked <>
            }
          
            { atl_idx_key 
            :type UNIQUE (
               { IDENT idx
               }
            )
            }
          
            { <> 
            :type NOT NULL
            }
         )
         }
      )
       
      :inhRelnames <> 
      :constraints <>
      }
    
   :resultRelation 0 
   :into <> 
   :isPortal false 
   :isBinary false 
   :isTemp false 
   :unionall false 
   :distinctClause <> 
   :sortClause <> 
   :rtable <> 
   :targetlist <> 
   :qual <> 
   :groupClause <> 
   :havingQual <> 
   :hasAggs false 
   :hasSubLinks false 
   :unionClause <> 
   :intersectClause <> 
   :limitOffset <> 
   :limitCount <> 
   :rowMark <>
   }

{ QUERY 
   :command 5  
   :index atl_idx_key on atl 
      { INDEX 
      :idxname atl_idx_key 
      :relname atl 
      :accessMethod btree 
      :indexParams (
         { INDEXELEM 
         :name idx 
         :args <> 
         :class <> 
         :typename <>
         }
      )
       
      :withClause <> 
      :whereClause <> 
      :rangetable <> 
      :lossy false 
      :unique true 
      }
    
   :resultRelation 0 
   :into <> 
   :isPortal false 
   :isBinary false 
   :isTemp false 
   :unionall false 
   :distinctClause <> 
   :sortClause <> 
   :rtable <> 
   :targetlist <> 
   :qual <> 
   :groupClause <> 
   :havingQual <> 
   :hasAggs false 
   :hasSubLinks false 
   :unionClause <> 
   :intersectClause <> 
   :limitOffset <> 
   :limitCount <> 
   :rowMark <>
   }
010626.17:02:16.391 [21378] ERROR:  RelationClearRelation: relation 38354 
deleted while still in use

010626.17:02:16.391 [21378] AbortCurrentTransaction
010626.17:02:16.392 [21378] NOTICE:  mdopen: couldn't open ØÈÞ"ÿÿÿÿ: No 
such file or directory
010626.17:02:16.392 [21378] ERROR:  cannot open relation ØÈÞ"ÿÿÿÿ
010626.17:02:16.393 [21378] FATAL 2:  elog: error during error recovery, 
giving up!
010626.17:02:16.393 [21378] proc_exit(2)
010626.17:02:16.393 [21378] shmem_exit(2)
010626.17:02:16.393 [21378] exit(2)
/usr/bin/postmaster: reaping dead processes...
/usr/bin/postmaster: CleanupProc: pid 21378 exited with status 512
Server process (pid 21378) exited with status 512 at Tue Jun 26 17:02:16 
2001
Terminating any active server processes...
Server processes were terminated at Tue Jun 26 17:02:16 2001
Reinitializing shared memory and semaphores
010626.17:02:16.397 [21346] shmem_exit(0)
binding ShmemCreate(key=52e325, size=1104896)
010626.17:02:16.398 [21379] DEBUG:  Data Base System is starting up at Tue 
Jun 26 17:02:16 2001
010626.17:02:16.398 [21379] DEBUG:  Data Base System was interrupted being 
in production at Tue Jun 26 17:02:12 2001
010626.17:02:16.399 [21379] DEBUG:  Data Base System is in production 
state at Tue Jun 26 17:02:16 2001
010626.17:02:16.399 [21379] proc_exit(0)
010626.17:02:16.399 [21379] shmem_exit(0)
010626.17:02:16.399 [21379] exit(0)
/usr/bin/postmaster: reaping dead processes...
010626.17:02:19.997 [21346] pmdie 2
Fast Shutdown request at Tue Jun 26 17:02:19 2001
010626.17:02:19.998 [21380] DEBUG:  Data Base System shutting down at Tue 
Jun 26 17:02:19 2001
010626.17:02:19.999 [21380] DEBUG:  Data Base System shut down at Tue Jun 
26 17:02:19 2001
010626.17:02:19.999 [21380] proc_exit(0)
010626.17:02:19.999 [21380] shmem_exit(0)
010626.17:02:19.999 [21380] exit(0)
/usr/bin/postmaster: reaping dead processes...
010626.17:02:19.999 [21346] proc_exit(0)
010626.17:02:19.999 [21346] shmem_exit(0)
010626.17:02:20.007 [21346] exit(0)

---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get through to the mailing list cleanly

Reply via email to