HIVE-19154: Poll notification events to invalidate the results cache (Jason Dere...
[hive.git] / ql / src / test / queries / clientpositive / results_cache_invalidation2.q
1 --! qt:dataset:src
2 set hive.metastore.event.listeners=org.apache.hive.hcatalog.listener.DbNotificationListener;
3
4 set hive.query.results.cache.enabled=true;
5 -- Enable this setting when HIVE-18609 is in
6 --set hive.query.results.cache.nontransactional.tables.enabled=true;
7
8 set hive.fetch.task.conversion=more;
9 -- Start polling the notification events
10 set hive.notification.event.poll.interval=2s;
11 select reflect('org.apache.hadoop.hive.ql.QTestUtil', 'initEventNotificationPoll');
12
13 create table tab1 stored as textfile as select * from src;
14 insert into tab1 select * from src;
15
16 create table tab2 (key string, value string) stored as textfile;
17 insert into tab2 select * from src;
18
19 -- Run queries which should be saved by the cache.
20 select count(*) from tab1 where key > 0;
21 select count(*) from tab1 join tab2 on (tab1.key = tab2.key);
22 select count(*) from tab2 where key > 0;
23
24 set test.comment="Cached entry should be used";
25 set test.comment;
26 explain
27 select count(*) from tab1 where key > 0;
28 select count(*) from tab1 where key > 0;
29
30 set test.comment="Cached entry should be used";
31 set test.comment;
32 explain
33 select count(*) from tab1 join tab2 on (tab1.key = tab2.key);
34 select count(*) from tab1 join tab2 on (tab1.key = tab2.key);
35
36 set test.comment="Cached entry should be used";
37 set test.comment;
38 explain
39 select count(*) from tab2 where key > 0;
40 select count(*) from tab2 where key > 0;
41
42 -- Update tab1
43 insert into tab1 select * from src;
44
45 -- Run a query long enough that the invalidation check can run.
46 select reflect("java.lang.Thread", 'sleep', cast(4000 as bigint));
47
48 set test.comment="Cached entry should be invalidated - query should not use cache";
49 set test.comment;
50 explain
51 select count(*) from tab1 where key > 0;
52 select count(*) from tab1 where key > 0;
53
54 set test.comment="Cached entry should be invalidated - query should not use cache";
55 set test.comment;
56 explain
57 select count(*) from tab1 join tab2 on (tab1.key = tab2.key);
58 select count(*) from tab1 join tab2 on (tab1.key = tab2.key);
59
60 set test.comment="tab2 was not modified, this query should still use cache";
61 set test.comment;
62 explain
63 select count(*) from tab2 where key > 0;
64 select count(*) from tab2 where key > 0;