PipelineDB:连续视图输出流意外地显示相同(旧)和(新)值

时间:2017-04-17 11:46:42

标签: pipelinedb

我正在使用PipelineDB 0.9.7u3

我使用连续视图输出流进行了一些操作,以确定是否可以通过一些更新获得新的连续视图。

这是我的测试用例。

CREATE STREAM stream_test(ticketid text, val int, status text);

-- simple continuous view on stream_test
CREATE CONTINUOUS VIEW cv_test AS 
  SELECT 
    ticketid, 
    min(val) as v0, 
    keyed_min(val, status) as v0_status
  FROM stream_test 
  GROUP BY ticketid;

-- continuous view to keep cv_test's updates and insertions
CREATE CONTINUOUS VIEW cv_test_upin AS 
  SELECT 
    (new).ticketid, 
    (old).v0 as oldV0, 
    (old).v0_status as oldV0Status,
    (new).v0 as newV0, 
    (new).v0_status as newV0Status    
  FROM output_of('cv_test')

-- continuous view to keep just some cv_test's updates
CREATE CONTINUOUS VIEW cv_test_up AS 
  SELECT 
    (new).ticketid, 
    (old).v0 as oldV0, 
    (old).v0_status as oldV0Status,
    (new).v0 as newV0, 
    (new).v0_status as newV0Status    
  FROM output_of('cv_test')
  WHERE (old).v0 != (new).v0;

让我们提供一些数据。

 INSERT INTO stream_test VALUES 
 ('t1', 124, 'open'),
 ('t2', 190, 'pending')

正如所料:

select * from cv_test;
  

" T2&#34 ;; 190;"未决"

     

" T1&#34 ;; 124;"开"

select * from cv_test_upin;
  

" T2&#34 ;;;"&#34 ;; 190;"未决"

     

" T1&#34 ;;;"&#34 ;; 124;"开"

select * from cv_test_up;
  

然后,一些更新。

 INSERT INTO stream_test VALUES 
 ('t2', 160, 'waiting'),
 ('t1', 100, 'pending')

正如所料:

select * from cv_test;
  

" T2&#34 ;; 160;"等待"

     

" T1" 100;"未决"

select * from cv_test_upin;
  

" T2&#34 ;;;"&#34 ;; 190;"未决"

     

" T1&#34 ;;;"&#34 ;; 124;"开"

     

" T2&#34 ;; 190;"未决&#34 ;; 160;"等待"

     

" T1&#34 ;; 124;"开" 100;"未决"

select * from cv_test_up;
  

" T2&#34 ;; 190;"未决&#34 ;; 160;"等待"

     

" T1&#34 ;; 124;"开" 100;"未决"

现在,一些新数据和一些更新。

 INSERT INTO stream_test VALUES 
 ('t2', 90, 'spam'),
 ('t3', 140, 'open'),
 ('t1', 80, 'closed')

select * from cv_test;按预期返回,但select * from cv_test_upin;没有。

  

...

     

" T2&#34 ;; 160;"等待&#34 ;; 90;"垃圾邮件"

     

" T3&#34 ;;;"&#34 ;; 140;"开"

     

" T1&#34 ;; 80;"关闭&#34 ;; 80;"关闭"

我期待最后" t1"是"t1";100;"pending";80;"closed"

错误或预期的行为?

感谢。

1 个答案:

答案 0 :(得分:0)

在深入研究之后,您确实发现了一些意想不到的行为,而且很可能是一个错误。我们将很快解决它,这是问题所在:

https://github.com/pipelinedb/pipelinedb/issues/1797

解决后,我们将发布更新版本。