2010-08-29 56 views
0

我使用PostgreSQL 9.0 beta 4版本一個空行空與類似值不空場

插入大量數據到分區表後,我發現了一個奇怪的事情。當我查詢表格時,我可以在'not-null'字段中看到一個空值的空行。

奇怪的查詢結果如下所示。

alt text

第689行是空的。前三個字段(stid,d,ticker)構成主鍵。所以他們不應該是空的。我使用的查詢是這樣的。

select * from st_daily2 where stid=267408 order by d 

我甚至可以在這個數據上做羣組。

select stid, date_trunc('month', d) ym, count(*) from st_daily2 
where stid=267408 group by stid, date_trunc('month', d) 

'group by'結果仍然有空行。

alt text

的第一行是空的。 但是,如果我查詢'stid'或'd'爲空,那麼它什麼都不返回。

這是postgresql 9b4的bug嗎?或者一些數據損壞?

編輯:

  1. 我說我的表定義。

    CREATE TABLE st_daily 
    (
    stid integer NOT NULL, 
    d date NOT NULL, 
    ticker character varying(15) NOT NULL, 
    mp integer NOT NULL, 
    settlep double precision NOT NULL, 
    prft integer NOT NULL, 
    atr20 double precision NOT NULL, 
    upd timestamp with time zone, 
    ntrds double precision 
    ) 
    WITH (
    OIDS=FALSE 
    ); 
    
    
    CREATE TABLE st_daily2 
    (
    CONSTRAINT st_daily2_pk PRIMARY KEY (stid, d, ticker), 
    CONSTRAINT st_daily2_strgs_fk FOREIGN KEY (stid) 
        REFERENCES strgs (stid) MATCH SIMPLE 
        ON UPDATE CASCADE ON DELETE CASCADE, 
    CONSTRAINT st_daily2_ck CHECK (stid >= 200000 AND stid < 300000) 
    ) 
    INHERITS (st_daily) 
    WITH (
    OIDS=FALSE 
    ); 
    
  2. 此表中的數據是模擬結果。用C#編寫的多線程多重仿真引擎使用Npgsql將數據插入數據庫。

  3. psql還顯示空行。

alt text

回答

1

你最好留在http://www.postgresql.org/support/submitbug

有些問題一個帖子:

  1. 你能證明使用表 定義和約束的 partions?
  2. 你是如何加載數據的?
  3. 當使用 另一個工具(如psql)時,您會得到相同的結果嗎?
+0

感謝您的回答。我在我的文章中添加了關於您的問題的答案。 – 2010-08-30 13:45:06

+0

我向postgresql.org提交了一個錯誤報告,並得到了需要審查員批准的回覆。 – 2010-08-30 13:51:32

0

我得到了同樣的觀點:「到底什麼是空白值?」
不,它不是NULL,它是-infinity

爲了過濾這樣的行使用:的

WHERE 
    case when mytestcolumn = '-infinity'::timestamp or 
      mytestcolumn = 'infinity'::timestamp 
    then NULL else mytestcolumn end IS NULL 

代替:

WHERE mytestcolumn IS NULL 
+0

psql和pgAdmin都沒有顯示「infinity」或「-infinity」的空單元格。另外,該行具有各種數據類型。 – 2012-08-06 17:22:51

+0

像我一樣,只有在使用NpgSql(= PgSql的.NET連接器)時纔會出現「infinity」和「-infinity」 - 而不是使用psql和pgAdmin進行直接訪問。 – Jochen 2016-03-02 13:31:27