MD-771: Query with nested functions within a sub-query on MapR-DB JSON Tables 
fail with ClassCastException

Fix for failing test cases.


Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/58e95ca2
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/58e95ca2
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/58e95ca2

Branch: refs/heads/master
Commit: 58e95ca27a570accb115882bf2f1b9d74caf3223
Parents: c327f11
Author: Aditya <adi...@mapr.com>
Authored: Tue Mar 8 01:40:39 2016 -0800
Committer: Aditya Kishore <a...@apache.org>
Committed: Fri Sep 9 10:08:38 2016 -0700

----------------------------------------------------------------------
 .../drill/exec/store/maprdb/MapRDBPushFilterIntoScan.java   | 9 ++++++++-
 .../com/mapr/drill/maprdb/tests/json/TestSimpleJson.java    | 9 +++++++++
 contrib/format-maprdb/src/test/resources/json/business.json | 4 ++--
 3 files changed, 19 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/drill/blob/58e95ca2/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/maprdb/MapRDBPushFilterIntoScan.java
----------------------------------------------------------------------
diff --git 
a/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/maprdb/MapRDBPushFilterIntoScan.java
 
b/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/maprdb/MapRDBPushFilterIntoScan.java
index 634bf9a..c0a33bf 100644
--- 
a/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/maprdb/MapRDBPushFilterIntoScan.java
+++ 
b/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/maprdb/MapRDBPushFilterIntoScan.java
@@ -122,7 +122,14 @@ public abstract class MapRDBPushFilterIntoScan extends 
StoragePluginOptimizerRul
       return;
     }
 
-    final LogicalExpression conditionExp = DrillOptiq.toDrill(new 
DrillParseContext(PrelUtil.getPlannerSettings(call.getPlanner())), scan, 
condition);
+    LogicalExpression conditionExp = null;
+    try {
+      conditionExp = DrillOptiq.toDrill(new 
DrillParseContext(PrelUtil.getPlannerSettings(call.getPlanner())), scan, 
condition);
+    } catch (ClassCastException e) {
+      // MD-771 bug in DrillOptiq.toDrill() causes filter condition on ITEM 
operator to throw ClassCastException
+      // For such cases, we return without pushdown
+      return;
+    }
     final JsonConditionBuilder jsonConditionBuilder = new 
JsonConditionBuilder(groupScan, conditionExp);
     final JsonScanSpec newScanSpec = jsonConditionBuilder.parseTree();
     if (newScanSpec == null) {

http://git-wip-us.apache.org/repos/asf/drill/blob/58e95ca2/contrib/format-maprdb/src/test/java/com/mapr/drill/maprdb/tests/json/TestSimpleJson.java
----------------------------------------------------------------------
diff --git 
a/contrib/format-maprdb/src/test/java/com/mapr/drill/maprdb/tests/json/TestSimpleJson.java
 
b/contrib/format-maprdb/src/test/java/com/mapr/drill/maprdb/tests/json/TestSimpleJson.java
index f8d4ac4..225fb2f 100644
--- 
a/contrib/format-maprdb/src/test/java/com/mapr/drill/maprdb/tests/json/TestSimpleJson.java
+++ 
b/contrib/format-maprdb/src/test/java/com/mapr/drill/maprdb/tests/json/TestSimpleJson.java
@@ -49,6 +49,15 @@ public class TestSimpleJson extends BaseJsonTest {
   }
 
   @Test
+  public void testKVGen() throws Exception {
+    setColumnWidths(new int[] {21, 10, 6});
+    final String sql = "select _id, t.parking[0].`key` K, t.parking[0].`value` 
V from"
+        + " (select _id, kvgen(b.attributes.Parking) as parking from 
hbase.business b)"
+        + " as t where t.parking[0].`key` = 'garage' AND t.parking[0].`value` 
= true";
+    runSQLAndVerifyCount(sql, 1);
+  }
+
+  @Test
   public void testPushdownStringEqual() throws Exception {
     setColumnWidths(new int[] {25, 40, 40, 40});
     final String sql = "SELECT\n"

http://git-wip-us.apache.org/repos/asf/drill/blob/58e95ca2/contrib/format-maprdb/src/test/resources/json/business.json
----------------------------------------------------------------------
diff --git a/contrib/format-maprdb/src/test/resources/json/business.json 
b/contrib/format-maprdb/src/test/resources/json/business.json
index 6cc54df..ab1326f 100644
--- a/contrib/format-maprdb/src/test/resources/json/business.json
+++ b/contrib/format-maprdb/src/test/resources/json/business.json
@@ -5,6 +5,6 @@
 
{"_version":{"$numberLong":0},"business_id":"Dl2rW_xO8GuYBomlg9zw","full_address":"4505
 S Maryland Pkwy\nUniversity\nLas Vegas, NV 
89119","zip":{"$numberLong":89119},"hours":{},"open":true,"categories":["Medical
 Centers","Health & Medical"],"city":"Las Vegas","review_count":6,"name":"UNLV 
Student Health 
Center","neighborhoods":["University"],"longitude":-115.1415145,"state":"NV","stars":4,"latitude":36.1109405,"attributes":{"By
 Appointment Only":true},"type":"business", 
"start_date":{"$dateDay":"2011-04-14"}}
 
{"_version":{"$numberLong":0},"business_id":"Ol5mVSMaW8ExtmWRUmKA","full_address":"7110
 E Thomas Rd\nSte D\nScottsdale, AZ 
85251","zip":{"$numberLong":85251},"hours":{},"open":true,"categories":["Barbers","Beauty
 & Spas"],"city":"Scottsdale","review_count":3,"name":"Dave's Barber 
Shop","neighborhoods":[],"longitude":-111.9289668,"state":"AZ","stars":5,"latitude":33.48051,"attributes":{"By
 Appointment 
Only":false,"Parking":{"garage":false,"street":false,"validated":false,"lot":false,"valet":false},"Price
 Range":2},"type":"business", "start_date":{"$dateDay":"2013-02-15"}}
 
{"_version":{"$numberLong":0},"business_id":"XBxRlD92RaV6TyUnP8Ow","full_address":"7510
 W Thomas Rd Ste 108\nPhoenix, AZ 
85033","zip":{"$numberLong":85033},"hours":{"Monday":{"close":{"$time":"19:00:00"},"open":{"$time":"11:00:00"}},"Tuesday":{"close":{"$time":"20:00:00"},"open":{"$time":"09:00:00"}},"Friday":{"close":{"$time":"20:00:00"},"open":{"$time":"09:00:00"}},"Wednesday":{"close":{"$time":"20:00:00"},"open":{"$time":"09:00:00"}},"Thursday":{"close":{"$time":"20:00:00"},"open":{"$time":"09:00:00"}},"Sunday":{"close":{"$time":"21:00:00"},"open":{"$time":"09:00:00"}},"Saturday":{"close":{"$time":"21:00:00"},"open":{"$time":"09:00:00"}}},"open":true,"categories":["Shopping","Mobile
 
Phones"],"city":"Phoenix","review_count":3,"name":"Sprint","neighborhoods":[],"longitude":-112.221054,"state":"AZ","stars":3.5,"latitude":33.480679,"attributes":{},"type":"business",
 "start_date":{"$dateDay":"2013-01-21"}, "years":[2014,2015,2016]}
-{"_version":{"$numberLong":0},"business_id":"Y_2lDOtVDioX5bwF6GIw","full_address":"115
 State St\nCapitol\nMadison, WI 
53703","zip":{"$numberLong":53703},"hours":{"Monday":{"close":{"$time":"02:00:00"},"open":{"$time":"11:00:00"}},"Tuesday":{"close":{"$time":"02:00:00"},"open":{"$time":"11:00:00"}},"Friday":{"close":{"$time":"02:00:00"},"open":{"$time":"11:00:00"}},"Wednesday":{"close":{"$time":"02:00:00"},"open":{"$time":"11:00:00"}},"Thursday":{"close":{"$time":"02:00:00"},"open":{"$time":"11:00:00"}},"Sunday":{"close":{"$time":"14:00:00"},"open":{"$time":"11:00:00"}},"Saturday":{"close":{"$time":"02:00:00"},"open":{"$time":"11:00:00"}}},"open":true,"categories":["Bars","Comfort
 
Food","Nightlife","Restaurants"],"city":"Madison","review_count":21,"name":"Buck
 & 
Badger","neighborhoods":["Capitol"],"longitude":-89.3871119284652,"state":"WI","stars":3,"latitude":43.0747392865267,"attributes":{"Alcohol":"full_bar","Noise
 Level":"average","Has TV":true,"Attire":"casual","Ambience":{"roma
 
ntic":false,"intimate":false,"touristy":false,"hipster":false,"divey":false,"classy":false,"trendy":false,"upscale":false,"casual":false},"Good
 for Kids":true,"Price Range":2,"Good For Dancing":false,"Delivery":false,"Coat 
Check":false,"Smoking":"no","Accepts Credit Cards":true,"Take-out":true,"Happy 
Hour":true,"Outdoor Seating":true,"Takes Reservations":true,"Waiter 
Service":true,"Wi-Fi":"no","Good 
For":{"dessert":false,"latenight":false,"lunch":false,"dinner":false,"brunch":false,"breakfast":false},"Parking":{"garage":false,"street":false,"validated":false,"lot":false,"valet":false},"Music":{"dj":false,"background_music":true,"jukebox":false,"live":false,"video":false,"karaoke":false},"Good
 For Groups":true},"type":"business", "start_date":{"$dateDay":"2015-03-21"}}
-{"_version":{"$numberLong":0},"business_id":"jFTZmywe7StuZ2hEjxyA","full_address":"3991
 Dean Martin Dr\nLas Vegas, NV 
89103","zip":{"$numberLong":89103},"hours":{},"open":true,"categories":["Sandwiches","Restaurants"],"city":"Las
 
Vegas","review_count":4,"name":"Subway","neighborhoods":[],"longitude":-115.18200516700699,"state":"NV","stars":4,"latitude":36.1188189268328,"attributes":{"Take-out":true,"Good
 
For":{"dessert":false,"latenight":false,"lunch":false,"dinner":false,"brunch":false,"breakfast":false},"Takes
 Reservations":false,"Delivery":false,"Outdoor 
Seating":false,"Attire":"casual","Accepts Credit Cards":true,"Good for 
Kids":true,"Good For Groups":true,"Price Range":1},"type":"business", 
"start_date":"2014-02-13"}
+{"_version":{"$numberLong":0},"business_id":"Y_2lDOtVDioX5bwF6GIw","full_address":"115
 State St\nCapitol\nMadison, WI 
53703","zip":{"$numberLong":53703},"hours":{"Monday":{"close":{"$time":"02:00:00"},"open":{"$time":"11:00:00"}},"Tuesday":{"close":{"$time":"02:00:00"},"open":{"$time":"11:00:00"}},"Friday":{"close":{"$time":"02:00:00"},"open":{"$time":"11:00:00"}},"Wednesday":{"close":{"$time":"02:00:00"},"open":{"$time":"11:00:00"}},"Thursday":{"close":{"$time":"02:00:00"},"open":{"$time":"11:00:00"}},"Sunday":{"close":{"$time":"14:00:00"},"open":{"$time":"11:00:00"}},"Saturday":{"close":{"$time":"02:00:00"},"open":{"$time":"11:00:00"}}},"open":true,"categories":["Bars","Comfort
 
Food","Nightlife","Restaurants"],"city":"Madison","review_count":21,"name":"Buck
 & 
Badger","neighborhoods":["Capitol"],"longitude":-89.3871119284652,"state":"WI","stars":3,"latitude":43.0747392865267,"attributes":{"Alcohol":"full_bar","Noise
 Level":"average","Has TV":true,"Attire":"casual","Ambience":{"roma
 
ntic":false,"intimate":false,"touristy":false,"hipster":false,"divey":false,"classy":false,"trendy":false,"upscale":false,"casual":false},"Good
 for Kids":true,"Price Range":2,"Good For Dancing":false,"Delivery":false,"Coat 
Check":false,"Smoking":"no","Accepts Credit Cards":true,"Take-out":true,"Happy 
Hour":true,"Outdoor Seating":true,"Takes Reservations":true,"Waiter 
Service":true,"Wi-Fi":"no","Good 
For":{"dessert":false,"latenight":false,"lunch":false,"dinner":false,"brunch":false,"breakfast":false},"Parking":{"garage":true,"street":false,"validated":false,"lot":false,"valet":false},"Music":{"dj":false,"background_music":true,"jukebox":false,"live":false,"video":false,"karaoke":false},"Good
 For Groups":true},"type":"business", "start_date":{"$dateDay":"2015-03-21"}}
+{"_version":{"$numberLong":0},"business_id":"jFTZmywe7StuZ2hEjxyA","full_address":"3991
 Dean Martin Dr\nLas Vegas, NV 
89103","zip":{"$numberLong":89103},"hours":{},"open":true,"categories":["Sandwiches","Restaurants"],"city":"Las
 
Vegas","review_count":4,"name":"Subway","neighborhoods":[],"longitude":-115.18200516700699,"state":"NV","stars":4,"latitude":36.1188189268328,"attributes":{"Take-out":true,"Good
 
For":{"dessert":false,"latenight":false,"lunch":false,"dinner":false,"brunch":false,"breakfast":false},"Takes
 Reservations":false,"Delivery":false,"Outdoor 
Seating":false,"Attire":"casual","Accepts Credit Cards":true,"Good for 
Kids":true,"Good For Groups":true,"Price Range":1},"type":"business", 
"start_date":{"$dateDay":"2014-02-13"}}
 
{"_version":{"$numberLong":0},"business_id":"m1g9P1wxNblrLANfVqlA","full_address":"6
 Waterloo Place\nEdinburgh EH1 
3EG","hours":{},"open":true,"categories":["Bridal","Shopping"],"city":"Edinburgh","review_count":5,"name":"Caroline
 
Castigliano","neighborhoods":[],"longitude":-3.1881974,"state":"EDH","stars":4,"latitude":55.9534049,"attributes":{"Parking":{"garage":false,"street":false,"validated":false,"lot":false,"valet":false},"Accepts
 Credit Cards":true,"Price Range":3},"type":"business", 
"start_date":{"$dateDay":"2014-02-17"}}

Reply via email to