You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by sj...@apache.org on 2016/09/09 20:41:40 UTC
[01/12] asterixdb-bad git commit: Initial commit
Repository: asterixdb-bad
Updated Branches:
refs/heads/master [created] bdba1b863
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/conf/asterix-build-configuration.xml
----------------------------------------------------------------------
diff --git a/target/test-classes/conf/asterix-build-configuration.xml b/target/test-classes/conf/asterix-build-configuration.xml
new file mode 100644
index 0000000..c2f5d41
--- /dev/null
+++ b/target/test-classes/conf/asterix-build-configuration.xml
@@ -0,0 +1,110 @@
+<!--
+ ! Licensed to the Apache Software Foundation (ASF) under one
+ ! or more contributor license agreements. See the NOTICE file
+ ! distributed with this work for additional information
+ ! regarding copyright ownership. The ASF licenses this file
+ ! to you under the Apache License, Version 2.0 (the
+ ! "License"); you may not use this file except in compliance
+ ! with the License. You may obtain a copy of the License at
+ !
+ ! http://www.apache.org/licenses/LICENSE-2.0
+ !
+ ! Unless required by applicable law or agreed to in writing,
+ ! software distributed under the License is distributed on an
+ ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ! KIND, either express or implied. See the License for the
+ ! specific language governing permissions and limitations
+ ! under the License.
+ !-->
+<asterixConfiguration xmlns="asterixconf">
+ <metadataNode>asterix_nc1</metadataNode>
+ <store>
+ <ncId>asterix_nc1</ncId>
+ <storeDirs>iodevice0,iodevice1</storeDirs>
+ </store>
+ <store>
+ <ncId>asterix_nc2</ncId>
+ <storeDirs>iodevice0,iodevice1</storeDirs>
+ </store>
+ <transactionLogDir>
+ <ncId>asterix_nc1</ncId>
+ <txnLogDirPath>target/txnLogDir/asterix_nc1</txnLogDirPath>
+ </transactionLogDir>
+ <transactionLogDir>
+ <ncId>asterix_nc2</ncId>
+ <txnLogDirPath>target/txnLogDir/asterix_nc2</txnLogDirPath>
+ </transactionLogDir>
+ <extensions>
+ <extension>
+ <extensionClassName>org.apache.asterix.bad.lang.BADQueryTranslatorExtension</extensionClassName>
+ </extension>
+ <extension>
+ <extensionClassName>org.apache.asterix.bad.lang.BADLangExtension</extensionClassName>
+ </extension>
+ <extension>
+ <extensionClassName>org.apache.asterix.bad.metadata.BADMetadataExtension</extensionClassName>
+ </extension>
+ </extensions>
+ <property>
+ <name>max.wait.active.cluster</name>
+ <value>60</value>
+ <description>Maximum wait (in seconds) for a cluster to be ACTIVE (all
+ nodes are available)
+ before a submitted query/statement can be
+ executed. (Default = 60 seconds)
+ </description>
+ </property>
+ <property>
+ <name>log.level</name>
+ <value>WARNING</value>
+ <description>Log level for running tests/build</description>
+ </property>
+ <property>
+ <name>compiler.framesize</name>
+ <value>32768</value>
+ </property>
+ <property>
+ <name>compiler.sortmemory</name>
+ <value>327680</value>
+ </property>
+ <property>
+ <name>compiler.groupmemory</name>
+ <value>163840</value>
+ </property>
+ <property>
+ <name>compiler.joinmemory</name>
+ <value>163840</value>
+ </property>
+ <property>
+ <name>compiler.pregelix.home</name>
+ <value>~/pregelix</value>
+ </property>
+ <property>
+ <name>storage.buffercache.pagesize</name>
+ <value>32768</value>
+ <description>The page size in bytes for pages in the buffer cache.
+ (Default = "32768" // 32KB)
+ </description>
+ </property>
+ <property>
+ <name>storage.buffercache.size</name>
+ <value>33554432</value>
+ <description>The size of memory allocated to the disk buffer cache.
+ The value should be a multiple of the buffer cache page size(Default
+ = "33554432" // 32MB)
+ </description>
+ </property>
+ <property>
+ <name>storage.memorycomponent.numpages</name>
+ <value>8</value>
+ <description>The number of pages to allocate for a memory component.
+ (Default = 8)
+ </description>
+ </property>
+ <property>
+ <name>plot.activate</name>
+ <value>false</value>
+ <description>Enabling plot of Algebricks plan to tmp folder. (Default = false)
+ </description>
+ </property>
+</asterixConfiguration>
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/conf/cluster.xml
----------------------------------------------------------------------
diff --git a/target/test-classes/conf/cluster.xml b/target/test-classes/conf/cluster.xml
new file mode 100644
index 0000000..8f0b694
--- /dev/null
+++ b/target/test-classes/conf/cluster.xml
@@ -0,0 +1,49 @@
+<!--
+ ! Licensed to the Apache Software Foundation (ASF) under one
+ ! or more contributor license agreements. See the NOTICE file
+ ! distributed with this work for additional information
+ ! regarding copyright ownership. The ASF licenses this file
+ ! to you under the Apache License, Version 2.0 (the
+ ! "License"); you may not use this file except in compliance
+ ! with the License. You may obtain a copy of the License at
+ !
+ ! http://www.apache.org/licenses/LICENSE-2.0
+ !
+ ! Unless required by applicable law or agreed to in writing,
+ ! software distributed under the License is distributed on an
+ ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ! KIND, either express or implied. See the License for the
+ ! specific language governing permissions and limitations
+ ! under the License.
+ !-->
+<cluster xmlns="cluster">
+ <instance_name>asterix</instance_name>
+ <store>storage</store>
+
+ <data_replication>
+ <enabled>false</enabled>
+ <replication_port>2016</replication_port>
+ <replication_factor>2</replication_factor>
+ <auto_failover>false</auto_failover>
+ <replication_time_out>30</replication_time_out>
+ </data_replication>
+
+ <master_node>
+ <id>master</id>
+ <client_ip>127.0.0.1</client_ip>
+ <cluster_ip>127.0.0.1</cluster_ip>
+ <client_port>1098</client_port>
+ <cluster_port>1099</cluster_port>
+ <http_port>8888</http_port>
+ </master_node>
+ <node>
+ <id>nc1</id>
+ <cluster_ip>127.0.0.1</cluster_ip>
+ <replication_port>2016</replication_port>
+ </node>
+ <node>
+ <id>nc2</id>
+ <cluster_ip>127.0.0.1</cluster_ip>
+ <replication_port>2017</replication_port>
+ </node>
+</cluster>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/conf/hyracks-deployment.properties
----------------------------------------------------------------------
diff --git a/target/test-classes/conf/hyracks-deployment.properties b/target/test-classes/conf/hyracks-deployment.properties
new file mode 100644
index 0000000..17a6772
--- /dev/null
+++ b/target/test-classes/conf/hyracks-deployment.properties
@@ -0,0 +1,21 @@
+#/*
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+cc.bootstrap.class=org.apache.asterix.hyracks.bootstrap.CCBootstrapImpl
+nc.bootstrap.class=org.apache.asterix.hyracks.bootstrap.NCBootstrapImpl
+cc.ip=127.0.0.1
+cc.port=1098
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/conf/test.properties
----------------------------------------------------------------------
diff --git a/target/test-classes/conf/test.properties b/target/test-classes/conf/test.properties
new file mode 100644
index 0000000..86269c8
--- /dev/null
+++ b/target/test-classes/conf/test.properties
@@ -0,0 +1,22 @@
+#/*
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+MetadataNode=nc1
+NewUniverse=true
+nc1.stores=nc1data
+nc2.stores=nc2data
+OutputDir=/tmp/asterix_output/
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/optimizerts/queries/channel/channel-create.aql
----------------------------------------------------------------------
diff --git a/target/test-classes/optimizerts/queries/channel/channel-create.aql b/target/test-classes/optimizerts/queries/channel/channel-create.aql
new file mode 100644
index 0000000..4dc9291
--- /dev/null
+++ b/target/test-classes/optimizerts/queries/channel/channel-create.aql
@@ -0,0 +1,36 @@
+/*
+ * Description : Check the Plan used by a channel
+ * Expected Res : Success
+ * Date : Mar 2015
+ */
+
+drop dataverse channels if exists;
+create dataverse channels;
+use dataverse channels;
+
+
+create type TweetMessageTypeuuid as closed {
+ tweetid: uuid,
+ sender-location: point,
+ send-time: datetime,
+ referred-topics: {{ string }},
+ message-text: string,
+ countA: int32,
+ countB: int32
+}
+
+
+create dataset TweetMessageuuids(TweetMessageTypeuuid)
+primary key tweetid autogenerated;
+
+create function NearbyTweetsContainingText($location, $text) {
+ for $tweet in dataset TweetMessageuuids
+ let $circle := create-circle($location,30.0)
+ where contains($tweet.message-text,$text)
+ and spatial-intersect($tweet.sender-location, $location)
+ return $tweet.message-text
+};
+
+write output to nc1:"rttest/channel-create.adm";
+
+create repetitive channel nearbyTweetChannel using NearbyTweetsContainingText@2 period duration("PT10M");
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/optimizerts/queries/channel/channel-subscribe.aql
----------------------------------------------------------------------
diff --git a/target/test-classes/optimizerts/queries/channel/channel-subscribe.aql b/target/test-classes/optimizerts/queries/channel/channel-subscribe.aql
new file mode 100644
index 0000000..682bd6d
--- /dev/null
+++ b/target/test-classes/optimizerts/queries/channel/channel-subscribe.aql
@@ -0,0 +1,40 @@
+/*
+ * Description : Check the Plan for Subscribing to a channel
+ * Expected Res : Success
+ * Date : Mar 2015
+ */
+
+drop dataverse channels if exists;
+create dataverse channels;
+use dataverse channels;
+
+
+create type TweetMessageTypeuuid as closed {
+ tweetid: uuid,
+ sender-location: point,
+ send-time: datetime,
+ referred-topics: {{ string }},
+ message-text: string,
+ countA: int32,
+ countB: int32
+}
+
+
+create dataset TweetMessageuuids(TweetMessageTypeuuid)
+primary key tweetid autogenerated;
+
+create function NearbyTweetsContainingText($location, $text) {
+ for $tweet in dataset TweetMessageuuids
+ let $circle := create-circle($location,30.0)
+ where contains($tweet.message-text,$text)
+ and spatial-intersect($tweet.sender-location, $location)
+ return $tweet.message-text
+};
+
+create repetitive channel nearbyTweetChannel using NearbyTweetsContainingText@2 period duration("PT10M");
+
+write output to nc1:"rttest/channel-subscribe.adm";
+
+create broker brokerA at "http://www.hello.com";
+
+subscribe to nearbyTweetChannel (point("30.0, 30.0"), "Live") on brokerA;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/optimizerts/queries/channel/channel-unsubscribe.aql
----------------------------------------------------------------------
diff --git a/target/test-classes/optimizerts/queries/channel/channel-unsubscribe.aql b/target/test-classes/optimizerts/queries/channel/channel-unsubscribe.aql
new file mode 100644
index 0000000..7cdec50
--- /dev/null
+++ b/target/test-classes/optimizerts/queries/channel/channel-unsubscribe.aql
@@ -0,0 +1,38 @@
+/*
+ * Description : Check the Plan for Unsubscribing to a channel
+ * Expected Res : Success
+ * Date : Mar 2015
+ */
+
+drop dataverse channels if exists;
+create dataverse channels;
+use dataverse channels;
+
+
+create type TweetMessageTypeuuid as closed {
+ tweetid: uuid,
+ sender-location: point,
+ send-time: datetime,
+ referred-topics: {{ string }},
+ message-text: string,
+ countA: int32,
+ countB: int32
+}
+
+
+create dataset TweetMessageuuids(TweetMessageTypeuuid)
+primary key tweetid autogenerated;
+
+create function NearbyTweetsContainingText($location, $text) {
+ for $tweet in dataset TweetMessageuuids
+ let $circle := create-circle($location,30.0)
+ where contains($tweet.message-text,$text)
+ and spatial-intersect($tweet.sender-location, $location)
+ return $tweet.message-text
+};
+
+create repetitive channel nearbyTweetChannel using NearbyTweetsContainingText@2 period duration("PT10M");
+
+write output to nc1:"rttest/channel-unsubscribe.adm";
+
+unsubscribe "c45ef6d0-c5ae-4b9e-b5da-cf1932718296" from nearbyTweetChannel;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/optimizerts/results/channel/channel-create.plan
----------------------------------------------------------------------
diff --git a/target/test-classes/optimizerts/results/channel/channel-create.plan b/target/test-classes/optimizerts/results/channel/channel-create.plan
new file mode 100644
index 0000000..f597191
--- /dev/null
+++ b/target/test-classes/optimizerts/results/channel/channel-create.plan
@@ -0,0 +1,30 @@
+-- COMMIT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- INSERT_DELETE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$22] |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/optimizerts/results/channel/channel-subscribe.plan
----------------------------------------------------------------------
diff --git a/target/test-classes/optimizerts/results/channel/channel-subscribe.plan b/target/test-classes/optimizerts/results/channel/channel-subscribe.plan
new file mode 100644
index 0000000..4530923
--- /dev/null
+++ b/target/test-classes/optimizerts/results/channel/channel-subscribe.plan
@@ -0,0 +1,44 @@
+-- COMMIT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- INSERT_DELETE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$22] |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+-- DISTRIBUTE_RESULT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- COMMIT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- INSERT_DELETE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$8] |PARTITIONED|
+ -- ASSIGN |UNPARTITIONED|
+ -- STREAM_PROJECT |UNPARTITIONED|
+ -- ASSIGN |UNPARTITIONED|
+ -- STREAM_PROJECT |UNPARTITIONED|
+ -- ASSIGN |UNPARTITIONED|
+ -- ASSIGN |UNPARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/optimizerts/results/channel/channel-unsubscribe.plan
----------------------------------------------------------------------
diff --git a/target/test-classes/optimizerts/results/channel/channel-unsubscribe.plan b/target/test-classes/optimizerts/results/channel/channel-unsubscribe.plan
new file mode 100644
index 0000000..a9e383a
--- /dev/null
+++ b/target/test-classes/optimizerts/results/channel/channel-unsubscribe.plan
@@ -0,0 +1,44 @@
+-- COMMIT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- INSERT_DELETE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$22] |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+-- COMMIT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- INSERT_DELETE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- MATERIALIZE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/org/apache/asterix/bad/test/BADExecutionTest.class
----------------------------------------------------------------------
diff --git a/target/test-classes/org/apache/asterix/bad/test/BADExecutionTest.class b/target/test-classes/org/apache/asterix/bad/test/BADExecutionTest.class
new file mode 100644
index 0000000..293b1a4
Binary files /dev/null and b/target/test-classes/org/apache/asterix/bad/test/BADExecutionTest.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/org/apache/asterix/bad/test/BADOptimizerTest.class
----------------------------------------------------------------------
diff --git a/target/test-classes/org/apache/asterix/bad/test/BADOptimizerTest.class b/target/test-classes/org/apache/asterix/bad/test/BADOptimizerTest.class
new file mode 100644
index 0000000..5394047
Binary files /dev/null and b/target/test-classes/org/apache/asterix/bad/test/BADOptimizerTest.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/runtimets/queries/channel/create_channel_check_datasets/create_channel_check_datasets.1.ddl.aql
----------------------------------------------------------------------
diff --git a/target/test-classes/runtimets/queries/channel/create_channel_check_datasets/create_channel_check_datasets.1.ddl.aql b/target/test-classes/runtimets/queries/channel/create_channel_check_datasets/create_channel_check_datasets.1.ddl.aql
new file mode 100644
index 0000000..41b036a
--- /dev/null
+++ b/target/test-classes/runtimets/queries/channel/create_channel_check_datasets/create_channel_check_datasets.1.ddl.aql
@@ -0,0 +1,34 @@
+/*
+* Description : Create Channel Test. Confirms that the subscription and result datasets are created
+* Expected Res : Success
+* Date : March 2015
+* Author : Steven Jacobs
+*/
+
+drop dataverse channels if exists;
+create dataverse channels;
+use dataverse channels;
+
+create type TweetMessageTypeuuid as closed {
+ tweetid: uuid,
+ sender-location: point,
+ send-time: datetime,
+ referred-topics: {{ string }},
+ message-text: string,
+ countA: int32,
+ countB: int32
+}
+
+
+create dataset TweetMessageuuids(TweetMessageTypeuuid)
+primary key tweetid autogenerated;
+
+create function NearbyTweetsContainingText($location, $text) {
+ for $tweet in dataset TweetMessageuuids
+ let $circle := create-circle($location,30.0)
+ where contains($tweet.message-text,$text)
+ and spatial-intersect($tweet.sender-location, $location)
+ return $tweet.message-text
+};
+
+create repetitive channel nearbyTweetChannel using NearbyTweetsContainingText@2 period duration("PT10M");
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/runtimets/queries/channel/create_channel_check_datasets/create_channel_check_datasets.2.update.aql
----------------------------------------------------------------------
diff --git a/target/test-classes/runtimets/queries/channel/create_channel_check_datasets/create_channel_check_datasets.2.update.aql b/target/test-classes/runtimets/queries/channel/create_channel_check_datasets/create_channel_check_datasets.2.update.aql
new file mode 100644
index 0000000..e69de29
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/runtimets/queries/channel/create_channel_check_datasets/create_channel_check_datasets.3.query.aql
----------------------------------------------------------------------
diff --git a/target/test-classes/runtimets/queries/channel/create_channel_check_datasets/create_channel_check_datasets.3.query.aql b/target/test-classes/runtimets/queries/channel/create_channel_check_datasets/create_channel_check_datasets.3.query.aql
new file mode 100644
index 0000000..eb341e9
--- /dev/null
+++ b/target/test-classes/runtimets/queries/channel/create_channel_check_datasets/create_channel_check_datasets.3.query.aql
@@ -0,0 +1,7 @@
+use dataverse channels;
+
+for $result in dataset Metadata.Channel where $result.ChannelName = "nearbyTweetChannel"
+for $x in dataset Metadata.Dataset
+where $x.DatasetName = $result.SubscriptionsDatasetName
+or $x.DatasetName = $result.ResultsDatasetName
+return $x;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/runtimets/queries/channel/create_channel_check_metadata/create_channel_check_metadata.1.ddl.aql
----------------------------------------------------------------------
diff --git a/target/test-classes/runtimets/queries/channel/create_channel_check_metadata/create_channel_check_metadata.1.ddl.aql b/target/test-classes/runtimets/queries/channel/create_channel_check_metadata/create_channel_check_metadata.1.ddl.aql
new file mode 100644
index 0000000..7bace03
--- /dev/null
+++ b/target/test-classes/runtimets/queries/channel/create_channel_check_metadata/create_channel_check_metadata.1.ddl.aql
@@ -0,0 +1,34 @@
+/*
+* Description : Create Channel Test
+* Expected Res : Success
+* Date : March 2015
+* Author : Steven Jacobs
+*/
+
+drop dataverse channels if exists;
+create dataverse channels;
+use dataverse channels;
+
+create type TweetMessageTypeuuid as closed {
+ tweetid: uuid,
+ sender-location: point,
+ send-time: datetime,
+ referred-topics: {{ string }},
+ message-text: string,
+ countA: int32,
+ countB: int32
+}
+
+
+create dataset TweetMessageuuids(TweetMessageTypeuuid)
+primary key tweetid autogenerated;
+
+create function NearbyTweetsContainingText($location, $text) {
+ for $tweet in dataset TweetMessageuuids
+ let $circle := create-circle($location,30.0)
+ where contains($tweet.message-text,$text)
+ and spatial-intersect($tweet.sender-location, $location)
+ return $tweet.message-text
+};
+
+create repetitive channel nearbyTweetChannel using NearbyTweetsContainingText@2 period duration("PT10M");
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/runtimets/queries/channel/create_channel_check_metadata/create_channel_check_metadata.2.update.aql
----------------------------------------------------------------------
diff --git a/target/test-classes/runtimets/queries/channel/create_channel_check_metadata/create_channel_check_metadata.2.update.aql b/target/test-classes/runtimets/queries/channel/create_channel_check_metadata/create_channel_check_metadata.2.update.aql
new file mode 100644
index 0000000..e69de29
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/runtimets/queries/channel/create_channel_check_metadata/create_channel_check_metadata.3.query.aql
----------------------------------------------------------------------
diff --git a/target/test-classes/runtimets/queries/channel/create_channel_check_metadata/create_channel_check_metadata.3.query.aql b/target/test-classes/runtimets/queries/channel/create_channel_check_metadata/create_channel_check_metadata.3.query.aql
new file mode 100644
index 0000000..9a1e170
--- /dev/null
+++ b/target/test-classes/runtimets/queries/channel/create_channel_check_metadata/create_channel_check_metadata.3.query.aql
@@ -0,0 +1,3 @@
+use dataverse channels;
+
+for $result in dataset Metadata.Channel return $result;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.1.ddl.aql
----------------------------------------------------------------------
diff --git a/target/test-classes/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.1.ddl.aql b/target/test-classes/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.1.ddl.aql
new file mode 100644
index 0000000..afc7d5e
--- /dev/null
+++ b/target/test-classes/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.1.ddl.aql
@@ -0,0 +1,38 @@
+/*
+* Description : Drop Channel Test. Check Metadata
+* Expected Res : Success
+* Date : March 2015
+* Author : Steven Jacobs
+*/
+
+drop dataverse channels if exists;
+create dataverse channels;
+use dataverse channels;
+
+create type TweetMessageTypeuuid as closed {
+ tweetid: uuid,
+ sender-location: point,
+ send-time: datetime,
+ referred-topics: {{ string }},
+ message-text: string,
+ countA: int32,
+ countB: int32
+}
+
+
+create dataset TweetMessageuuids(TweetMessageTypeuuid)
+primary key tweetid autogenerated;
+
+create function NearbyTweetsContainingText($location, $text) {
+ for $tweet in dataset TweetMessageuuids
+ let $circle := create-circle($location,30.0)
+ where contains($tweet.message-text,$text)
+ and spatial-intersect($tweet.sender-location, $location)
+ return $tweet.message-text
+};
+
+create repetitive channel nearbyTweetChannel1 using NearbyTweetsContainingText@2 period duration("PT10M");
+
+create repetitive channel nearbyTweetChannel2 using NearbyTweetsContainingText@2 period duration("PT10M");
+
+create repetitive channel nearbyTweetChannel3 using NearbyTweetsContainingText@2 period duration("PT10M");
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.2.update.aql
----------------------------------------------------------------------
diff --git a/target/test-classes/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.2.update.aql b/target/test-classes/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.2.update.aql
new file mode 100644
index 0000000..f466b9c
--- /dev/null
+++ b/target/test-classes/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.2.update.aql
@@ -0,0 +1,3 @@
+use dataverse channels;
+
+drop channel nearbyTweetChannel2;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.3.query.aql
----------------------------------------------------------------------
diff --git a/target/test-classes/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.3.query.aql b/target/test-classes/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.3.query.aql
new file mode 100644
index 0000000..e762a27
--- /dev/null
+++ b/target/test-classes/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.3.query.aql
@@ -0,0 +1,7 @@
+use dataverse channels;
+
+for $result in dataset Metadata.Channel
+for $x in dataset Metadata.Dataset
+where $x.DatasetName = $result.SubscriptionsDatasetName
+or $x.DatasetName = $result.ResultsDatasetName
+return $x;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.1.ddl.aql
----------------------------------------------------------------------
diff --git a/target/test-classes/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.1.ddl.aql b/target/test-classes/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.1.ddl.aql
new file mode 100644
index 0000000..afc7d5e
--- /dev/null
+++ b/target/test-classes/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.1.ddl.aql
@@ -0,0 +1,38 @@
+/*
+* Description : Drop Channel Test. Check Metadata
+* Expected Res : Success
+* Date : March 2015
+* Author : Steven Jacobs
+*/
+
+drop dataverse channels if exists;
+create dataverse channels;
+use dataverse channels;
+
+create type TweetMessageTypeuuid as closed {
+ tweetid: uuid,
+ sender-location: point,
+ send-time: datetime,
+ referred-topics: {{ string }},
+ message-text: string,
+ countA: int32,
+ countB: int32
+}
+
+
+create dataset TweetMessageuuids(TweetMessageTypeuuid)
+primary key tweetid autogenerated;
+
+create function NearbyTweetsContainingText($location, $text) {
+ for $tweet in dataset TweetMessageuuids
+ let $circle := create-circle($location,30.0)
+ where contains($tweet.message-text,$text)
+ and spatial-intersect($tweet.sender-location, $location)
+ return $tweet.message-text
+};
+
+create repetitive channel nearbyTweetChannel1 using NearbyTweetsContainingText@2 period duration("PT10M");
+
+create repetitive channel nearbyTweetChannel2 using NearbyTweetsContainingText@2 period duration("PT10M");
+
+create repetitive channel nearbyTweetChannel3 using NearbyTweetsContainingText@2 period duration("PT10M");
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.2.update.aql
----------------------------------------------------------------------
diff --git a/target/test-classes/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.2.update.aql b/target/test-classes/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.2.update.aql
new file mode 100644
index 0000000..f466b9c
--- /dev/null
+++ b/target/test-classes/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.2.update.aql
@@ -0,0 +1,3 @@
+use dataverse channels;
+
+drop channel nearbyTweetChannel2;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.3.query.aql
----------------------------------------------------------------------
diff --git a/target/test-classes/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.3.query.aql b/target/test-classes/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.3.query.aql
new file mode 100644
index 0000000..9a1e170
--- /dev/null
+++ b/target/test-classes/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.3.query.aql
@@ -0,0 +1,3 @@
+use dataverse channels;
+
+for $result in dataset Metadata.Channel return $result;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.1.ddl.aql
----------------------------------------------------------------------
diff --git a/target/test-classes/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.1.ddl.aql b/target/test-classes/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.1.ddl.aql
new file mode 100644
index 0000000..41b036a
--- /dev/null
+++ b/target/test-classes/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.1.ddl.aql
@@ -0,0 +1,34 @@
+/*
+* Description : Create Channel Test. Confirms that the subscription and result datasets are created
+* Expected Res : Success
+* Date : March 2015
+* Author : Steven Jacobs
+*/
+
+drop dataverse channels if exists;
+create dataverse channels;
+use dataverse channels;
+
+create type TweetMessageTypeuuid as closed {
+ tweetid: uuid,
+ sender-location: point,
+ send-time: datetime,
+ referred-topics: {{ string }},
+ message-text: string,
+ countA: int32,
+ countB: int32
+}
+
+
+create dataset TweetMessageuuids(TweetMessageTypeuuid)
+primary key tweetid autogenerated;
+
+create function NearbyTweetsContainingText($location, $text) {
+ for $tweet in dataset TweetMessageuuids
+ let $circle := create-circle($location,30.0)
+ where contains($tweet.message-text,$text)
+ and spatial-intersect($tweet.sender-location, $location)
+ return $tweet.message-text
+};
+
+create repetitive channel nearbyTweetChannel using NearbyTweetsContainingText@2 period duration("PT10M");
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.2.update.aql
----------------------------------------------------------------------
diff --git a/target/test-classes/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.2.update.aql b/target/test-classes/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.2.update.aql
new file mode 100644
index 0000000..6d35506
--- /dev/null
+++ b/target/test-classes/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.2.update.aql
@@ -0,0 +1,7 @@
+use dataverse channels;
+
+subscribe to nearbyTweetChannel (point("30.0, 30.0"), "Live");
+
+subscribe to nearbyTweetChannel (point("20.0, 20.0"), "Long");
+
+subscribe to nearbyTweetChannel (point("10.0, 10.0"), "Prosper");
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.3.query.aql
----------------------------------------------------------------------
diff --git a/target/test-classes/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.3.query.aql b/target/test-classes/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.3.query.aql
new file mode 100644
index 0000000..0d2c46e
--- /dev/null
+++ b/target/test-classes/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.3.query.aql
@@ -0,0 +1,4 @@
+use dataverse channels;
+
+for $test in dataset nearbyTweetChannelSubscriptions
+return $test.param1;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/runtimets/results/channels/create_channel_check_datasets/create_channel_check_datasets.1.adm
----------------------------------------------------------------------
diff --git a/target/test-classes/runtimets/results/channels/create_channel_check_datasets/create_channel_check_datasets.1.adm b/target/test-classes/runtimets/results/channels/create_channel_check_datasets/create_channel_check_datasets.1.adm
new file mode 100644
index 0000000..baa5299
--- /dev/null
+++ b/target/test-classes/runtimets/results/channels/create_channel_check_datasets/create_channel_check_datasets.1.adm
@@ -0,0 +1,3 @@
+[ { "DataverseName": "channels", "DatasetName": "nearbyTweetChannelResults", "DataTypeName": "nearbyTweetChannelResultsType", "DatasetType": "INTERNAL", "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ "rid" ], "PrimaryKey": [ "rid" ], "GroupName": "DEFAULT_NG_ALL_NODES", "Autogenerated": true, "CompactionPolicy": "prefix", "CompactionPolicyProperties": [ { "Name": "max-mergable-component-size", "Value": "1073741824" }, { "Name": "max-tolerance-component-count", "Value": "5" } ] }, "ExternalDetails": null, "Hints": {{ }}, "Timestamp": "Tue Mar 10 15:20:05 PDT 2015", "DatasetId": 106i32, "PendingOp": 0i32 }
+, { "DataverseName": "channels", "DatasetName": "nearbyTweetChannelSubscriptions", "DataTypeName": "nearbyTweetChannelSubscriptionsType", "DatasetType": "INTERNAL", "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ "subscription-id" ], "PrimaryKey": [ "subscription-id" ], "GroupName": "DEFAULT_NG_ALL_NODES", "Autogenerated": true, "CompactionPolicy": "prefix", "CompactionPolicyProperties": [ { "Name": "max-mergable-component-size", "Value": "1073741824" }, { "Name": "max-tolerance-component-count", "Value": "5" } ] }, "ExternalDetails": null, "Hints": {{ }}, "Timestamp": "Tue Mar 10 15:20:05 PDT 2015", "DatasetId": 105i32, "PendingOp": 0i32 }
+ ]
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/runtimets/results/channels/create_channel_check_metadata/create_channel_check_metadata.1.adm
----------------------------------------------------------------------
diff --git a/target/test-classes/runtimets/results/channels/create_channel_check_metadata/create_channel_check_metadata.1.adm b/target/test-classes/runtimets/results/channels/create_channel_check_metadata/create_channel_check_metadata.1.adm
new file mode 100644
index 0000000..66a52f3
--- /dev/null
+++ b/target/test-classes/runtimets/results/channels/create_channel_check_metadata/create_channel_check_metadata.1.adm
@@ -0,0 +1,2 @@
+[ { "DataverseName": "channels", "ChannelName": "nearbyTweetChannel", "SubscriptionsDatasetName": "nearbyTweetChannelSubscriptions", "ResultsDatasetName": "nearbyTweetChannelResults", "Function": "channels.NearbyTweetsContainingText@2", "Duration": "PT10M" }
+ ]
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/runtimets/results/channels/drop_channel_check_datasets/drop_channel_check_datasets.1.adm
----------------------------------------------------------------------
diff --git a/target/test-classes/runtimets/results/channels/drop_channel_check_datasets/drop_channel_check_datasets.1.adm b/target/test-classes/runtimets/results/channels/drop_channel_check_datasets/drop_channel_check_datasets.1.adm
new file mode 100644
index 0000000..7b6fdf4
--- /dev/null
+++ b/target/test-classes/runtimets/results/channels/drop_channel_check_datasets/drop_channel_check_datasets.1.adm
@@ -0,0 +1,5 @@
+[ { "DataverseName": "channels", "DatasetName": "nearbyTweetChannel1Results", "DataTypeName": "nearbyTweetChannel1ResultsType", "DatasetType": "INTERNAL", "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ "rid" ], "PrimaryKey": [ "rid" ], "GroupName": "DEFAULT_NG_ALL_NODES", "Autogenerated": true, "CompactionPolicy": "prefix", "CompactionPolicyProperties": [ { "Name": "max-mergable-component-size", "Value": "1073741824" }, { "Name": "max-tolerance-component-count", "Value": "5" } ] }, "ExternalDetails": null, "Hints": {{ }}, "Timestamp": "Wed Mar 11 10:11:53 PDT 2015", "DatasetId": 116i32, "PendingOp": 0i32 }
+, { "DataverseName": "channels", "DatasetName": "nearbyTweetChannel1Subscriptions", "DataTypeName": "nearbyTweetChannel1SubscriptionsType", "DatasetType": "INTERNAL", "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ "subscription-id" ], "PrimaryKey": [ "subscription-id" ], "GroupName": "DEFAULT_NG_ALL_NODES", "Autogenerated": true, "CompactionPolicy": "prefix", "CompactionPolicyProperties": [ { "Name": "max-mergable-component-size", "Value": "1073741824" }, { "Name": "max-tolerance-component-count", "Value": "5" } ] }, "ExternalDetails": null, "Hints": {{ }}, "Timestamp": "Wed Mar 11 10:11:53 PDT 2015", "DatasetId": 115i32, "PendingOp": 0i32 }
+, { "DataverseName": "channels", "DatasetName": "nearbyTweetChannel3Results", "DataTypeName": "nearbyTweetChannel3ResultsType", "DatasetType": "INTERNAL", "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ "rid" ], "PrimaryKey": [ "rid" ], "GroupName": "DEFAULT_NG_ALL_NODES", "Autogenerated": true, "CompactionPolicy": "prefix", "CompactionPolicyProperties": [ { "Name": "max-mergable-component-size", "Value": "1073741824" }, { "Name": "max-tolerance-component-count", "Value": "5" } ] }, "ExternalDetails": null, "Hints": {{ }}, "Timestamp": "Wed Mar 11 10:11:53 PDT 2015", "DatasetId": 120i32, "PendingOp": 0i32 }
+, { "DataverseName": "channels", "DatasetName": "nearbyTweetChannel3Subscriptions", "DataTypeName": "nearbyTweetChannel3SubscriptionsType", "DatasetType": "INTERNAL", "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ "subscription-id" ], "PrimaryKey": [ "subscription-id" ], "GroupName": "DEFAULT_NG_ALL_NODES", "Autogenerated": true, "CompactionPolicy": "prefix", "CompactionPolicyProperties": [ { "Name": "max-mergable-component-size", "Value": "1073741824" }, { "Name": "max-tolerance-component-count", "Value": "5" } ] }, "ExternalDetails": null, "Hints": {{ }}, "Timestamp": "Wed Mar 11 10:11:53 PDT 2015", "DatasetId": 119i32, "PendingOp": 0i32 }
+ ]
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/runtimets/results/channels/drop_channel_check_metadata/drop_channel_check_metadata.1.adm
----------------------------------------------------------------------
diff --git a/target/test-classes/runtimets/results/channels/drop_channel_check_metadata/drop_channel_check_metadata.1.adm b/target/test-classes/runtimets/results/channels/drop_channel_check_metadata/drop_channel_check_metadata.1.adm
new file mode 100644
index 0000000..de2948a
--- /dev/null
+++ b/target/test-classes/runtimets/results/channels/drop_channel_check_metadata/drop_channel_check_metadata.1.adm
@@ -0,0 +1,3 @@
+[ { "DataverseName": "channels", "ChannelName": "nearbyTweetChannel1", "SubscriptionsDatasetName": "nearbyTweetChannel1Subscriptions", "ResultsDatasetName": "nearbyTweetChannel1Results", "Function": "channels.NearbyTweetsContainingText@2", "Duration": "PT10M" }
+, { "DataverseName": "channels", "ChannelName": "nearbyTweetChannel3", "SubscriptionsDatasetName": "nearbyTweetChannel3Subscriptions", "ResultsDatasetName": "nearbyTweetChannel3Results", "Function": "channels.NearbyTweetsContainingText@2", "Duration": "PT10M" }
+ ]
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/runtimets/results/channels/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.1.adm
----------------------------------------------------------------------
diff --git a/target/test-classes/runtimets/results/channels/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.1.adm b/target/test-classes/runtimets/results/channels/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.1.adm
new file mode 100644
index 0000000..2bec6d3
--- /dev/null
+++ b/target/test-classes/runtimets/results/channels/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.1.adm
@@ -0,0 +1,4 @@
+[ "Live"
+, "Long"
+, "Prosper"
+ ]
\ No newline at end of file
[03/12] asterixdb-bad git commit: Initial commit
Posted by sj...@apache.org.
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/generated-sources/javacc/org/apache/asterix/bad/lang/JavaCharStream.java
----------------------------------------------------------------------
diff --git a/target/generated-sources/javacc/org/apache/asterix/bad/lang/JavaCharStream.java b/target/generated-sources/javacc/org/apache/asterix/bad/lang/JavaCharStream.java
new file mode 100644
index 0000000..c6abe05
--- /dev/null
+++ b/target/generated-sources/javacc/org/apache/asterix/bad/lang/JavaCharStream.java
@@ -0,0 +1,617 @@
+/* Generated By:JavaCC: Do not edit this line. JavaCharStream.java Version 5.0 */
+/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
+package org.apache.asterix.bad.lang;
+
+/**
+ * An implementation of interface CharStream, where the stream is assumed to
+ * contain only ASCII characters (with java-like unicode escape processing).
+ */
+
+public
+class JavaCharStream
+{
+ /** Whether parser is static. */
+ public static final boolean staticFlag = false;
+
+ static final int hexval(char c) throws java.io.IOException {
+ switch(c)
+ {
+ case '0' :
+ return 0;
+ case '1' :
+ return 1;
+ case '2' :
+ return 2;
+ case '3' :
+ return 3;
+ case '4' :
+ return 4;
+ case '5' :
+ return 5;
+ case '6' :
+ return 6;
+ case '7' :
+ return 7;
+ case '8' :
+ return 8;
+ case '9' :
+ return 9;
+
+ case 'a' :
+ case 'A' :
+ return 10;
+ case 'b' :
+ case 'B' :
+ return 11;
+ case 'c' :
+ case 'C' :
+ return 12;
+ case 'd' :
+ case 'D' :
+ return 13;
+ case 'e' :
+ case 'E' :
+ return 14;
+ case 'f' :
+ case 'F' :
+ return 15;
+ }
+
+ throw new java.io.IOException(); // Should never come here
+ }
+
+/** Position in buffer. */
+ public int bufpos = -1;
+ int bufsize;
+ int available;
+ int tokenBegin;
+ protected int bufline[];
+ protected int bufcolumn[];
+
+ protected int column = 0;
+ protected int line = 1;
+
+ protected boolean prevCharIsCR = false;
+ protected boolean prevCharIsLF = false;
+
+ protected java.io.Reader inputStream;
+
+ protected char[] nextCharBuf;
+ protected char[] buffer;
+ protected int maxNextCharInd = 0;
+ protected int nextCharInd = -1;
+ protected int inBuf = 0;
+ protected int tabSize = 8;
+
+ protected void setTabSize(int i) { tabSize = i; }
+ protected int getTabSize(int i) { return tabSize; }
+
+ protected void ExpandBuff(boolean wrapAround)
+ {
+ char[] newbuffer = new char[bufsize + 2048];
+ int newbufline[] = new int[bufsize + 2048];
+ int newbufcolumn[] = new int[bufsize + 2048];
+
+ try
+ {
+ if (wrapAround)
+ {
+ System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
+ System.arraycopy(buffer, 0, newbuffer, bufsize - tokenBegin, bufpos);
+ buffer = newbuffer;
+
+ System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
+ System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
+ bufline = newbufline;
+
+ System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
+ System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
+ bufcolumn = newbufcolumn;
+
+ bufpos += (bufsize - tokenBegin);
+ }
+ else
+ {
+ System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
+ buffer = newbuffer;
+
+ System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
+ bufline = newbufline;
+
+ System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
+ bufcolumn = newbufcolumn;
+
+ bufpos -= tokenBegin;
+ }
+ }
+ catch (Throwable t)
+ {
+ throw new Error(t.getMessage());
+ }
+
+ available = (bufsize += 2048);
+ tokenBegin = 0;
+ }
+
+ protected void FillBuff() throws java.io.IOException
+ {
+ int i;
+ if (maxNextCharInd == 4096)
+ maxNextCharInd = nextCharInd = 0;
+
+ try {
+ if ((i = inputStream.read(nextCharBuf, maxNextCharInd,
+ 4096 - maxNextCharInd)) == -1)
+ {
+ inputStream.close();
+ throw new java.io.IOException();
+ }
+ else
+ maxNextCharInd += i;
+ return;
+ }
+ catch(java.io.IOException e) {
+ if (bufpos != 0)
+ {
+ --bufpos;
+ backup(0);
+ }
+ else
+ {
+ bufline[bufpos] = line;
+ bufcolumn[bufpos] = column;
+ }
+ throw e;
+ }
+ }
+
+ protected char ReadByte() throws java.io.IOException
+ {
+ if (++nextCharInd >= maxNextCharInd)
+ FillBuff();
+
+ return nextCharBuf[nextCharInd];
+ }
+
+/** @return starting character for token. */
+ public char BeginToken() throws java.io.IOException
+ {
+ if (inBuf > 0)
+ {
+ --inBuf;
+
+ if (++bufpos == bufsize)
+ bufpos = 0;
+
+ tokenBegin = bufpos;
+ return buffer[bufpos];
+ }
+
+ tokenBegin = 0;
+ bufpos = -1;
+
+ return readChar();
+ }
+
+ protected void AdjustBuffSize()
+ {
+ if (available == bufsize)
+ {
+ if (tokenBegin > 2048)
+ {
+ bufpos = 0;
+ available = tokenBegin;
+ }
+ else
+ ExpandBuff(false);
+ }
+ else if (available > tokenBegin)
+ available = bufsize;
+ else if ((tokenBegin - available) < 2048)
+ ExpandBuff(true);
+ else
+ available = tokenBegin;
+ }
+
+ protected void UpdateLineColumn(char c)
+ {
+ column++;
+
+ if (prevCharIsLF)
+ {
+ prevCharIsLF = false;
+ line += (column = 1);
+ }
+ else if (prevCharIsCR)
+ {
+ prevCharIsCR = false;
+ if (c == '\n')
+ {
+ prevCharIsLF = true;
+ }
+ else
+ line += (column = 1);
+ }
+
+ switch (c)
+ {
+ case '\r' :
+ prevCharIsCR = true;
+ break;
+ case '\n' :
+ prevCharIsLF = true;
+ break;
+ case '\t' :
+ column--;
+ column += (tabSize - (column % tabSize));
+ break;
+ default :
+ break;
+ }
+
+ bufline[bufpos] = line;
+ bufcolumn[bufpos] = column;
+ }
+
+/** Read a character. */
+ public char readChar() throws java.io.IOException
+ {
+ if (inBuf > 0)
+ {
+ --inBuf;
+
+ if (++bufpos == bufsize)
+ bufpos = 0;
+
+ return buffer[bufpos];
+ }
+
+ char c;
+
+ if (++bufpos == available)
+ AdjustBuffSize();
+
+ if ((buffer[bufpos] = c = ReadByte()) == '\\')
+ {
+ UpdateLineColumn(c);
+
+ int backSlashCnt = 1;
+
+ for (;;) // Read all the backslashes
+ {
+ if (++bufpos == available)
+ AdjustBuffSize();
+
+ try
+ {
+ if ((buffer[bufpos] = c = ReadByte()) != '\\')
+ {
+ UpdateLineColumn(c);
+ // found a non-backslash char.
+ if ((c == 'u') && ((backSlashCnt & 1) == 1))
+ {
+ if (--bufpos < 0)
+ bufpos = bufsize - 1;
+
+ break;
+ }
+
+ backup(backSlashCnt);
+ return '\\';
+ }
+ }
+ catch(java.io.IOException e)
+ {
+ // We are returning one backslash so we should only backup (count-1)
+ if (backSlashCnt > 1)
+ backup(backSlashCnt-1);
+
+ return '\\';
+ }
+
+ UpdateLineColumn(c);
+ backSlashCnt++;
+ }
+
+ // Here, we have seen an odd number of backslash's followed by a 'u'
+ try
+ {
+ while ((c = ReadByte()) == 'u')
+ ++column;
+
+ buffer[bufpos] = c = (char)(hexval(c) << 12 |
+ hexval(ReadByte()) << 8 |
+ hexval(ReadByte()) << 4 |
+ hexval(ReadByte()));
+
+ column += 4;
+ }
+ catch(java.io.IOException e)
+ {
+ throw new Error("Invalid escape character at line " + line +
+ " column " + column + ".");
+ }
+
+ if (backSlashCnt == 1)
+ return c;
+ else
+ {
+ backup(backSlashCnt - 1);
+ return '\\';
+ }
+ }
+ else
+ {
+ UpdateLineColumn(c);
+ return c;
+ }
+ }
+
+ @Deprecated
+ /**
+ * @deprecated
+ * @see #getEndColumn
+ */
+ public int getColumn() {
+ return bufcolumn[bufpos];
+ }
+
+ @Deprecated
+ /**
+ * @deprecated
+ * @see #getEndLine
+ */
+ public int getLine() {
+ return bufline[bufpos];
+ }
+
+/** Get end column. */
+ public int getEndColumn() {
+ return bufcolumn[bufpos];
+ }
+
+/** Get end line. */
+ public int getEndLine() {
+ return bufline[bufpos];
+ }
+
+/** @return column of token start */
+ public int getBeginColumn() {
+ return bufcolumn[tokenBegin];
+ }
+
+/** @return line number of token start */
+ public int getBeginLine() {
+ return bufline[tokenBegin];
+ }
+
+/** Retreat. */
+ public void backup(int amount) {
+
+ inBuf += amount;
+ if ((bufpos -= amount) < 0)
+ bufpos += bufsize;
+ }
+
+/** Constructor. */
+ public JavaCharStream(java.io.Reader dstream,
+ int startline, int startcolumn, int buffersize)
+ {
+ inputStream = dstream;
+ line = startline;
+ column = startcolumn - 1;
+
+ available = bufsize = buffersize;
+ buffer = new char[buffersize];
+ bufline = new int[buffersize];
+ bufcolumn = new int[buffersize];
+ nextCharBuf = new char[4096];
+ }
+
+/** Constructor. */
+ public JavaCharStream(java.io.Reader dstream,
+ int startline, int startcolumn)
+ {
+ this(dstream, startline, startcolumn, 4096);
+ }
+
+/** Constructor. */
+ public JavaCharStream(java.io.Reader dstream)
+ {
+ this(dstream, 1, 1, 4096);
+ }
+/** Reinitialise. */
+ public void ReInit(java.io.Reader dstream,
+ int startline, int startcolumn, int buffersize)
+ {
+ inputStream = dstream;
+ line = startline;
+ column = startcolumn - 1;
+
+ if (buffer == null || buffersize != buffer.length)
+ {
+ available = bufsize = buffersize;
+ buffer = new char[buffersize];
+ bufline = new int[buffersize];
+ bufcolumn = new int[buffersize];
+ nextCharBuf = new char[4096];
+ }
+ prevCharIsLF = prevCharIsCR = false;
+ tokenBegin = inBuf = maxNextCharInd = 0;
+ nextCharInd = bufpos = -1;
+ }
+
+/** Reinitialise. */
+ public void ReInit(java.io.Reader dstream,
+ int startline, int startcolumn)
+ {
+ ReInit(dstream, startline, startcolumn, 4096);
+ }
+
+/** Reinitialise. */
+ public void ReInit(java.io.Reader dstream)
+ {
+ ReInit(dstream, 1, 1, 4096);
+ }
+/** Constructor. */
+ public JavaCharStream(java.io.InputStream dstream, String encoding, int startline,
+ int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
+ {
+ this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
+ }
+
+/** Constructor. */
+ public JavaCharStream(java.io.InputStream dstream, int startline,
+ int startcolumn, int buffersize)
+ {
+ this(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096);
+ }
+
+/** Constructor. */
+ public JavaCharStream(java.io.InputStream dstream, String encoding, int startline,
+ int startcolumn) throws java.io.UnsupportedEncodingException
+ {
+ this(dstream, encoding, startline, startcolumn, 4096);
+ }
+
+/** Constructor. */
+ public JavaCharStream(java.io.InputStream dstream, int startline,
+ int startcolumn)
+ {
+ this(dstream, startline, startcolumn, 4096);
+ }
+
+/** Constructor. */
+ public JavaCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
+ {
+ this(dstream, encoding, 1, 1, 4096);
+ }
+
+/** Constructor. */
+ public JavaCharStream(java.io.InputStream dstream)
+ {
+ this(dstream, 1, 1, 4096);
+ }
+
+/** Reinitialise. */
+ public void ReInit(java.io.InputStream dstream, String encoding, int startline,
+ int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
+ {
+ ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
+ }
+
+/** Reinitialise. */
+ public void ReInit(java.io.InputStream dstream, int startline,
+ int startcolumn, int buffersize)
+ {
+ ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
+ }
+/** Reinitialise. */
+ public void ReInit(java.io.InputStream dstream, String encoding, int startline,
+ int startcolumn) throws java.io.UnsupportedEncodingException
+ {
+ ReInit(dstream, encoding, startline, startcolumn, 4096);
+ }
+/** Reinitialise. */
+ public void ReInit(java.io.InputStream dstream, int startline,
+ int startcolumn)
+ {
+ ReInit(dstream, startline, startcolumn, 4096);
+ }
+/** Reinitialise. */
+ public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
+ {
+ ReInit(dstream, encoding, 1, 1, 4096);
+ }
+
+/** Reinitialise. */
+ public void ReInit(java.io.InputStream dstream)
+ {
+ ReInit(dstream, 1, 1, 4096);
+ }
+
+ /** @return token image as String */
+ public String GetImage()
+ {
+ if (bufpos >= tokenBegin)
+ return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
+ else
+ return new String(buffer, tokenBegin, bufsize - tokenBegin) +
+ new String(buffer, 0, bufpos + 1);
+ }
+
+ /** @return suffix */
+ public char[] GetSuffix(int len)
+ {
+ char[] ret = new char[len];
+
+ if ((bufpos + 1) >= len)
+ System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
+ else
+ {
+ System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
+ len - bufpos - 1);
+ System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
+ }
+
+ return ret;
+ }
+
+ /** Set buffers back to null when finished. */
+ public void Done()
+ {
+ nextCharBuf = null;
+ buffer = null;
+ bufline = null;
+ bufcolumn = null;
+ }
+
+ /**
+ * Method to adjust line and column numbers for the start of a token.
+ */
+ public void adjustBeginLineColumn(int newLine, int newCol)
+ {
+ int start = tokenBegin;
+ int len;
+
+ if (bufpos >= tokenBegin)
+ {
+ len = bufpos - tokenBegin + inBuf + 1;
+ }
+ else
+ {
+ len = bufsize - tokenBegin + bufpos + 1 + inBuf;
+ }
+
+ int i = 0, j = 0, k = 0;
+ int nextColDiff = 0, columnDiff = 0;
+
+ while (i < len && bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
+ {
+ bufline[j] = newLine;
+ nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
+ bufcolumn[j] = newCol + columnDiff;
+ columnDiff = nextColDiff;
+ i++;
+ }
+
+ if (i < len)
+ {
+ bufline[j] = newLine++;
+ bufcolumn[j] = newCol + columnDiff;
+
+ while (i++ < len)
+ {
+ if (bufline[j = start % bufsize] != bufline[++start % bufsize])
+ bufline[j] = newLine++;
+ else
+ bufline[j] = newLine;
+ }
+ }
+
+ line = bufline[j];
+ column = bufcolumn[j];
+ }
+
+}
+/* JavaCC - OriginalChecksum=4aff93f349bb1ee3d2db7895ac6acd01 (do not edit this line) */
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/generated-sources/javacc/org/apache/asterix/bad/lang/ParseException.java
----------------------------------------------------------------------
diff --git a/target/generated-sources/javacc/org/apache/asterix/bad/lang/ParseException.java b/target/generated-sources/javacc/org/apache/asterix/bad/lang/ParseException.java
new file mode 100644
index 0000000..577eba9
--- /dev/null
+++ b/target/generated-sources/javacc/org/apache/asterix/bad/lang/ParseException.java
@@ -0,0 +1,187 @@
+/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 5.0 */
+/* JavaCCOptions:KEEP_LINE_COL=null */
+package org.apache.asterix.bad.lang;
+
+/**
+ * This exception is thrown when parse errors are encountered.
+ * You can explicitly create objects of this exception type by
+ * calling the method generateParseException in the generated
+ * parser.
+ *
+ * You can modify this class to customize your error reporting
+ * mechanisms so long as you retain the public fields.
+ */
+public class ParseException extends Exception {
+
+ /**
+ * The version identifier for this Serializable class.
+ * Increment only if the <i>serialized</i> form of the
+ * class changes.
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * This constructor is used by the method "generateParseException"
+ * in the generated parser. Calling this constructor generates
+ * a new object of this type with the fields "currentToken",
+ * "expectedTokenSequences", and "tokenImage" set.
+ */
+ public ParseException(Token currentTokenVal,
+ int[][] expectedTokenSequencesVal,
+ String[] tokenImageVal
+ )
+ {
+ super(initialise(currentTokenVal, expectedTokenSequencesVal, tokenImageVal));
+ currentToken = currentTokenVal;
+ expectedTokenSequences = expectedTokenSequencesVal;
+ tokenImage = tokenImageVal;
+ }
+
+ /**
+ * The following constructors are for use by you for whatever
+ * purpose you can think of. Constructing the exception in this
+ * manner makes the exception behave in the normal way - i.e., as
+ * documented in the class "Throwable". The fields "errorToken",
+ * "expectedTokenSequences", and "tokenImage" do not contain
+ * relevant information. The JavaCC generated code does not use
+ * these constructors.
+ */
+
+ public ParseException() {
+ super();
+ }
+
+ /** Constructor with message. */
+ public ParseException(String message) {
+ super(message);
+ }
+
+
+ /**
+ * This is the last token that has been consumed successfully. If
+ * this object has been created due to a parse error, the token
+ * followng this token will (therefore) be the first error token.
+ */
+ public Token currentToken;
+
+ /**
+ * Each entry in this array is an array of integers. Each array
+ * of integers represents a sequence of tokens (by their ordinal
+ * values) that is expected at this point of the parse.
+ */
+ public int[][] expectedTokenSequences;
+
+ /**
+ * This is a reference to the "tokenImage" array of the generated
+ * parser within which the parse error occurred. This array is
+ * defined in the generated ...Constants interface.
+ */
+ public String[] tokenImage;
+
+ /**
+ * It uses "currentToken" and "expectedTokenSequences" to generate a parse
+ * error message and returns it. If this object has been created
+ * due to a parse error, and you do not catch it (it gets thrown
+ * from the parser) the correct error message
+ * gets displayed.
+ */
+ private static String initialise(Token currentToken,
+ int[][] expectedTokenSequences,
+ String[] tokenImage) {
+ String eol = System.getProperty("line.separator", "\n");
+ StringBuffer expected = new StringBuffer();
+ int maxSize = 0;
+ for (int i = 0; i < expectedTokenSequences.length; i++) {
+ if (maxSize < expectedTokenSequences[i].length) {
+ maxSize = expectedTokenSequences[i].length;
+ }
+ for (int j = 0; j < expectedTokenSequences[i].length; j++) {
+ expected.append(tokenImage[expectedTokenSequences[i][j]]).append(' ');
+ }
+ if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
+ expected.append("...");
+ }
+ expected.append(eol).append(" ");
+ }
+ String retval = "Encountered \"";
+ Token tok = currentToken.next;
+ for (int i = 0; i < maxSize; i++) {
+ if (i != 0) retval += " ";
+ if (tok.kind == 0) {
+ retval += tokenImage[0];
+ break;
+ }
+ retval += " " + tokenImage[tok.kind];
+ retval += " \"";
+ retval += add_escapes(tok.image);
+ retval += " \"";
+ tok = tok.next;
+ }
+ retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
+ retval += "." + eol;
+ if (expectedTokenSequences.length == 1) {
+ retval += "Was expecting:" + eol + " ";
+ } else {
+ retval += "Was expecting one of:" + eol + " ";
+ }
+ retval += expected.toString();
+ return retval;
+ }
+
+ /**
+ * The end of line string for this machine.
+ */
+ protected String eol = System.getProperty("line.separator", "\n");
+
+ /**
+ * Used to convert raw characters to their escaped version
+ * when these raw version cannot be used as part of an ASCII
+ * string literal.
+ */
+ static String add_escapes(String str) {
+ StringBuffer retval = new StringBuffer();
+ char ch;
+ for (int i = 0; i < str.length(); i++) {
+ switch (str.charAt(i))
+ {
+ case 0 :
+ continue;
+ case '\b':
+ retval.append("\\b");
+ continue;
+ case '\t':
+ retval.append("\\t");
+ continue;
+ case '\n':
+ retval.append("\\n");
+ continue;
+ case '\f':
+ retval.append("\\f");
+ continue;
+ case '\r':
+ retval.append("\\r");
+ continue;
+ case '\"':
+ retval.append("\\\"");
+ continue;
+ case '\'':
+ retval.append("\\\'");
+ continue;
+ case '\\':
+ retval.append("\\\\");
+ continue;
+ default:
+ if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
+ String s = "0000" + Integer.toString(ch, 16);
+ retval.append("\\u" + s.substring(s.length() - 4, s.length()));
+ } else {
+ retval.append(ch);
+ }
+ continue;
+ }
+ }
+ return retval.toString();
+ }
+
+}
+/* JavaCC - OriginalChecksum=2af238cb10e9068719c936c080d35014 (do not edit this line) */
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/generated-sources/javacc/org/apache/asterix/bad/lang/Token.java
----------------------------------------------------------------------
diff --git a/target/generated-sources/javacc/org/apache/asterix/bad/lang/Token.java b/target/generated-sources/javacc/org/apache/asterix/bad/lang/Token.java
new file mode 100644
index 0000000..6b566e6
--- /dev/null
+++ b/target/generated-sources/javacc/org/apache/asterix/bad/lang/Token.java
@@ -0,0 +1,131 @@
+/* Generated By:JavaCC: Do not edit this line. Token.java Version 5.0 */
+/* JavaCCOptions:TOKEN_EXTENDS=,KEEP_LINE_COL=null,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
+package org.apache.asterix.bad.lang;
+
+/**
+ * Describes the input token stream.
+ */
+
+public class Token implements java.io.Serializable {
+
+ /**
+ * The version identifier for this Serializable class.
+ * Increment only if the <i>serialized</i> form of the
+ * class changes.
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * An integer that describes the kind of this token. This numbering
+ * system is determined by JavaCCParser, and a table of these numbers is
+ * stored in the file ...Constants.java.
+ */
+ public int kind;
+
+ /** The line number of the first character of this Token. */
+ public int beginLine;
+ /** The column number of the first character of this Token. */
+ public int beginColumn;
+ /** The line number of the last character of this Token. */
+ public int endLine;
+ /** The column number of the last character of this Token. */
+ public int endColumn;
+
+ /**
+ * The string image of the token.
+ */
+ public String image;
+
+ /**
+ * A reference to the next regular (non-special) token from the input
+ * stream. If this is the last token from the input stream, or if the
+ * token manager has not read tokens beyond this one, this field is
+ * set to null. This is true only if this token is also a regular
+ * token. Otherwise, see below for a description of the contents of
+ * this field.
+ */
+ public Token next;
+
+ /**
+ * This field is used to access special tokens that occur prior to this
+ * token, but after the immediately preceding regular (non-special) token.
+ * If there are no such special tokens, this field is set to null.
+ * When there are more than one such special token, this field refers
+ * to the last of these special tokens, which in turn refers to the next
+ * previous special token through its specialToken field, and so on
+ * until the first special token (whose specialToken field is null).
+ * The next fields of special tokens refer to other special tokens that
+ * immediately follow it (without an intervening regular token). If there
+ * is no such token, this field is null.
+ */
+ public Token specialToken;
+
+ /**
+ * An optional attribute value of the Token.
+ * Tokens which are not used as syntactic sugar will often contain
+ * meaningful values that will be used later on by the compiler or
+ * interpreter. This attribute value is often different from the image.
+ * Any subclass of Token that actually wants to return a non-null value can
+ * override this method as appropriate.
+ */
+ public Object getValue() {
+ return null;
+ }
+
+ /**
+ * No-argument constructor
+ */
+ public Token() {}
+
+ /**
+ * Constructs a new token for the specified Image.
+ */
+ public Token(int kind)
+ {
+ this(kind, null);
+ }
+
+ /**
+ * Constructs a new token for the specified Image and Kind.
+ */
+ public Token(int kind, String image)
+ {
+ this.kind = kind;
+ this.image = image;
+ }
+
+ /**
+ * Returns the image.
+ */
+ public String toString()
+ {
+ return image;
+ }
+
+ /**
+ * Returns a new Token object, by default. However, if you want, you
+ * can create and return subclass objects based on the value of ofKind.
+ * Simply add the cases to the switch for all those special cases.
+ * For example, if you have a subclass of Token called IDToken that
+ * you want to create if ofKind is ID, simply add something like :
+ *
+ * case MyParserConstants.ID : return new IDToken(ofKind, image);
+ *
+ * to the following switch statement. Then you can cast matchedToken
+ * variable to the appropriate type and use sit in your lexical actions.
+ */
+ public static Token newToken(int ofKind, String image)
+ {
+ switch(ofKind)
+ {
+ default : return new Token(ofKind, image);
+ }
+ }
+
+ public static Token newToken(int ofKind)
+ {
+ return newToken(ofKind, null);
+ }
+
+}
+/* JavaCC - OriginalChecksum=5bb4b7430e73fcb63960a4875997021d (do not edit this line) */
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/generated-sources/javacc/org/apache/asterix/bad/lang/TokenMgrError.java
----------------------------------------------------------------------
diff --git a/target/generated-sources/javacc/org/apache/asterix/bad/lang/TokenMgrError.java b/target/generated-sources/javacc/org/apache/asterix/bad/lang/TokenMgrError.java
new file mode 100644
index 0000000..cdd6801
--- /dev/null
+++ b/target/generated-sources/javacc/org/apache/asterix/bad/lang/TokenMgrError.java
@@ -0,0 +1,147 @@
+/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 5.0 */
+/* JavaCCOptions: */
+package org.apache.asterix.bad.lang;
+
+/** Token Manager Error. */
+public class TokenMgrError extends Error
+{
+
+ /**
+ * The version identifier for this Serializable class.
+ * Increment only if the <i>serialized</i> form of the
+ * class changes.
+ */
+ private static final long serialVersionUID = 1L;
+
+ /*
+ * Ordinals for various reasons why an Error of this type can be thrown.
+ */
+
+ /**
+ * Lexical error occurred.
+ */
+ static final int LEXICAL_ERROR = 0;
+
+ /**
+ * An attempt was made to create a second instance of a static token manager.
+ */
+ static final int STATIC_LEXER_ERROR = 1;
+
+ /**
+ * Tried to change to an invalid lexical state.
+ */
+ static final int INVALID_LEXICAL_STATE = 2;
+
+ /**
+ * Detected (and bailed out of) an infinite loop in the token manager.
+ */
+ static final int LOOP_DETECTED = 3;
+
+ /**
+ * Indicates the reason why the exception is thrown. It will have
+ * one of the above 4 values.
+ */
+ int errorCode;
+
+ /**
+ * Replaces unprintable characters by their escaped (or unicode escaped)
+ * equivalents in the given string
+ */
+ protected static final String addEscapes(String str) {
+ StringBuffer retval = new StringBuffer();
+ char ch;
+ for (int i = 0; i < str.length(); i++) {
+ switch (str.charAt(i))
+ {
+ case 0 :
+ continue;
+ case '\b':
+ retval.append("\\b");
+ continue;
+ case '\t':
+ retval.append("\\t");
+ continue;
+ case '\n':
+ retval.append("\\n");
+ continue;
+ case '\f':
+ retval.append("\\f");
+ continue;
+ case '\r':
+ retval.append("\\r");
+ continue;
+ case '\"':
+ retval.append("\\\"");
+ continue;
+ case '\'':
+ retval.append("\\\'");
+ continue;
+ case '\\':
+ retval.append("\\\\");
+ continue;
+ default:
+ if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
+ String s = "0000" + Integer.toString(ch, 16);
+ retval.append("\\u" + s.substring(s.length() - 4, s.length()));
+ } else {
+ retval.append(ch);
+ }
+ continue;
+ }
+ }
+ return retval.toString();
+ }
+
+ /**
+ * Returns a detailed message for the Error when it is thrown by the
+ * token manager to indicate a lexical error.
+ * Parameters :
+ * EOFSeen : indicates if EOF caused the lexical error
+ * curLexState : lexical state in which this error occurred
+ * errorLine : line number when the error occurred
+ * errorColumn : column number when the error occurred
+ * errorAfter : prefix that was seen before this error occurred
+ * curchar : the offending character
+ * Note: You can customize the lexical error message by modifying this method.
+ */
+ protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
+ return("Lexical error at line " +
+ errorLine + ", column " +
+ errorColumn + ". Encountered: " +
+ (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
+ "after : \"" + addEscapes(errorAfter) + "\"");
+ }
+
+ /**
+ * You can also modify the body of this method to customize your error messages.
+ * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
+ * of end-users concern, so you can return something like :
+ *
+ * "Internal Error : Please file a bug report .... "
+ *
+ * from this method for such cases in the release version of your parser.
+ */
+ public String getMessage() {
+ return super.getMessage();
+ }
+
+ /*
+ * Constructors of various flavors follow.
+ */
+
+ /** No arg constructor. */
+ public TokenMgrError() {
+ }
+
+ /** Constructor with message and reason. */
+ public TokenMgrError(String message, int reason) {
+ super(message);
+ errorCode = reason;
+ }
+
+ /** Full Constructor. */
+ public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
+ this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
+ }
+}
+/* JavaCC - OriginalChecksum=fe43e76fe21cb3a94653e6c956d0fad6 (do not edit this line) */
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/maven-archiver/pom.properties
----------------------------------------------------------------------
diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..f648f05
--- /dev/null
+++ b/target/maven-archiver/pom.properties
@@ -0,0 +1,5 @@
+#Generated by Maven
+#Fri Sep 09 11:53:38 PDT 2016
+version=0.8.9-SNAPSHOT
+groupId=org.apache.asterix
+artifactId=asterix-opt
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/maven-shared-archive-resources/META-INF/DEPENDENCIES
----------------------------------------------------------------------
diff --git a/target/maven-shared-archive-resources/META-INF/DEPENDENCIES b/target/maven-shared-archive-resources/META-INF/DEPENDENCIES
new file mode 100644
index 0000000..3c60591
--- /dev/null
+++ b/target/maven-shared-archive-resources/META-INF/DEPENDENCIES
@@ -0,0 +1,489 @@
+// ------------------------------------------------------------------
+// Transitive dependencies of this project determined from the
+// maven pom organized by organization.
+// ------------------------------------------------------------------
+
+asterix-opt
+
+
+From: 'an unknown organization'
+ - AntLR Parser Generator (http://www.antlr.org/) antlr:antlr:jar:2.7.7
+ License: BSD License (http://www.antlr.org/license.html)
+ - AOP alliance (http://aopalliance.sourceforge.net) aopalliance:aopalliance:jar:1.0
+ License: Public Domain
+ - Guava: Google Core Libraries for Java (http://code.google.com/p/guava-libraries/guava) com.google.guava:guava:bundle:18.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - JSON.simple (http://code.google.com/p/json-simple/) com.googlecode.json-simple:json-simple:jar:1.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Microsoft Windows Azure Client API (https://github.com/WindowsAzure/azure-sdk-for-java) com.microsoft.windowsazure:microsoft-windowsazure-api:jar:0.4.4
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - rome (http://rometools.github.io/rome/) com.rometools:rome:jar:1.5.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - rome-utils (http://rometools.github.io/rome-utils/) com.rometools:rome-utils:jar:1.5.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - ParaNamer Core (http://paranamer.codehaus.org/paranamer) com.thoughtworks.paranamer:paranamer:jar:2.3
+ License: BSD (LICENSE.txt)
+ - commons-beanutils commons-beanutils:commons-beanutils:jar:1.7.0
+
+ - commons-logging-api commons-logging:commons-logging-api:jar:1.0.4
+
+ - rxjava (https://github.com/ReactiveX/RxJava) io.reactivex:rxjava:jar:1.1.8
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - JavaBeans Activation Framework (JAF) (http://java.sun.com/products/javabeans/jaf/index.jsp) javax.activation:activation:jar:1.1
+ License: Common Development and Distribution License (CDDL) v1.0 (https://glassfish.dev.java.net/public/CDDLv1.0.html)
+ - javax.inject (http://code.google.com/p/atinject/) javax.inject:javax.inject:jar:1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - JDO2 API javax.jdo:jdo2-api:jar:2.3-20090302111651
+
+ - servlet-api javax.servlet:servlet-api:jar:2.5
+
+ - jsp-api javax.servlet.jsp:jsp-api:jar:2.1
+
+ - Java Transaction API (http://java.sun.com/products/jta) javax.transaction:jta:jar:1.1
+
+ - Streaming API for XML javax.xml.stream:stax-api:jar:1.0-2
+ License: GNU General Public Library (http://www.gnu.org/licenses/gpl.txt) License: COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 (http://www.sun.com/cddl/cddl.html)
+ - jdom jdom:jdom:jar:1.0
+
+ - An open source Java toolkit for Amazon S3 (http://jets3t.s3.amazonaws.com/index.html) net.java.dev.jets3t:jets3t:jar:0.6.1
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+ - ANTLR ST4 4.0.4 (http://www.stringtemplate.org) org.antlr:ST4:jar:4.0.4
+ License: BSD licence (http://antlr.org/license.html)
+ - Antlr 3.4 Runtime (http://www.antlr.org) org.antlr:antlr-runtime:jar:3.4
+
+ - ANTLR StringTemplate (http://www.stringtemplate.org) org.antlr:stringtemplate:jar:3.2.1
+ License: BSD licence (http://antlr.org/license.html)
+ - Apache Thrift (http://thrift.apache.org) org.apache.thrift:libfb303:pom:0.9.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Thrift (http://thrift.apache.org) org.apache.thrift:libthrift:pom:0.9.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - zookeeper org.apache.zookeeper:zookeeper:pom:3.4.5
+
+ - Jettison org.codehaus.jettison:jettison:bundle:1.1
+
+ - DataNucleus JDO API plugin (http://www.datanucleus.org) org.datanucleus:datanucleus-api-jdo:jar:3.2.6
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - DataNucleus Core (http://www.datanucleus.org) org.datanucleus:datanucleus-core:jar:3.2.10
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - DataNucleus RDBMS (http://www.datanucleus.org) org.datanucleus:datanucleus-rdbms:jar:3.2.9
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hamcrest Core (https://github.com/hamcrest/JavaHamcrest/hamcrest-core) org.hamcrest:hamcrest-core:jar:1.3
+ License: New BSD License (http://www.opensource.org/licenses/bsd-license.php)
+ - ini4j (http://www.ini4j.org) org.ini4j:ini4j:jar:0.5.4
+ License: Apache 2 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - JAXB2 Commons - Value Constructor Plugin (http://java.net/projects/jaxb2-commons/pages/value-constructor) org.jvnet.jaxb2_commons:jaxb2-value-constructor:jar:3.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - XZ for Java (http://tukaani.org/xz/java.html) org.tukaani:xz:jar:1.0
+ License: Public Domain
+ - twitter4j-core (http://twitter4j.org/) org.twitter4j:twitter4j-core:jar:4.0.3
+ License: Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+ - twitter4j-stream (http://twitter4j.org/) org.twitter4j:twitter4j-stream:jar:4.0.3
+ License: Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+ - oro oro:oro:jar:2.0.8
+
+ - rome rome:rome:jar:1.0.1-modified-01
+
+ - StAX API (http://stax.codehaus.org/) stax:stax-api:jar:1.0.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Xerces2-j (https://xerces.apache.org/xerces2-j/) xerces:xercesImpl:jar:2.11.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - XML Commons External Components XML APIs (http://xml.apache.org/commons/components/external/) xml-apis:xml-apis:jar:1.4.01
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt) License: The SAX License (http://www.saxproject.org/copying.html) License: The W3C License (http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/java-binding.zip)
+ - xmlenc Library (http://xmlenc.sourceforge.net) xmlenc:xmlenc:jar:0.52
+ License: The BSD License (http://www.opensource.org/licenses/bsd-license.php)
+
+From: 'Apache Software Foundation' (http://apache.org)
+ - Wicket Core (http://wicket.apache.org/wicket-core/wicket-core) org.apache.wicket:wicket-core:jar:1.5.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Wicket Request (http://maven.apache.org) org.apache.wicket:wicket-request:jar:1.5.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Wicket Util (http://maven.apache.org) org.apache.wicket:wicket-util:jar:1.5.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'Apache Software Foundation' (http://db.apache.org/)
+ - Apache Derby Database Engine and Embedded JDBC Driver (http://db.apache.org/derby/derby/) org.apache.derby:derby:jar:10.10.1.1
+ License: Apache 2 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'Apache Software Foundation' (http://jakarta.apache.org/)
+ - HttpClient (http://jakarta.apache.org/httpcomponents/httpclient-3.x/) commons-httpclient:commons-httpclient:jar:3.1
+ License: Apache License (http://www.apache.org/licenses/LICENSE-2.0)
+
+From: 'Apache Software Foundation' (http://www.apache.org)
+ - JDO API (http://db.apache.org/jdo) javax.jdo:jdo-api:jar:3.0.1
+ License: Apache 2 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Log4j (http://logging.apache.org/log4j/1.2/) log4j:log4j:bundle:1.2.17
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Hadoop Annotations org.apache.hadoop:hadoop-annotations:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Hadoop Auth org.apache.hadoop:hadoop-auth:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Hadoop Client org.apache.hadoop:hadoop-client:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Hadoop Common org.apache.hadoop:hadoop-common:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Hadoop Common org.apache.hadoop:hadoop-common:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Hadoop HDFS org.apache.hadoop:hadoop-hdfs:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Hadoop HDFS org.apache.hadoop:hadoop-hdfs:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-mapreduce-client-app org.apache.hadoop:hadoop-mapreduce-client-app:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-mapreduce-client-common org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-mapreduce-client-core org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-mapreduce-client-hs org.apache.hadoop:hadoop-mapreduce-client-hs:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-mapreduce-client-jobclient org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-mapreduce-client-jobclient org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-mapreduce-client-shuffle org.apache.hadoop:hadoop-mapreduce-client-shuffle:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Hadoop Mini-Cluster org.apache.hadoop:hadoop-minicluster:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-yarn-api org.apache.hadoop:hadoop-yarn-api:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-yarn-client org.apache.hadoop:hadoop-yarn-client:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-yarn-common org.apache.hadoop:hadoop-yarn-common:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-yarn-server-common org.apache.hadoop:hadoop-yarn-server-common:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-yarn-server-nodemanager org.apache.hadoop:hadoop-yarn-server-nodemanager:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-yarn-server-resourcemanager org.apache.hadoop:hadoop-yarn-server-resourcemanager:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-yarn-server-tests org.apache.hadoop:hadoop-yarn-server-tests:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-yarn-server-web-proxy org.apache.hadoop:hadoop-yarn-server-web-proxy:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'Couchbase, Inc.' (http://couchbase.com)
+ - Couchbase JVM Core IO (http://couchbase.com) com.couchbase.client:core-io:jar:1.3.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'e-movimento' (http://www.e-movimento.com)
+ - privileged accessor (http://code.google.com/p/privilegedaccessor/) com.e-movimento.tinytools:privilegedaccessor:jar:1.2.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'FasterXML' (http://fasterxml.com)
+ - Jackson (http://jackson.codehaus.org) org.codehaus.jackson:jackson-core-asl:jar:1.9.12
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - JAX-RS provider for JSON content type (http://jackson.codehaus.org) org.codehaus.jackson:jackson-jaxrs:jar:1.9.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt) License: GNU Lesser General Public License (LGPL), Version 2.1 (http://www.fsf.org/licensing/licenses/lgpl.txt)
+ - Data Mapper for Jackson (http://jackson.codehaus.org) org.codehaus.jackson:jackson-mapper-asl:jar:1.9.12
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Xml Compatibility extensions for Jackson (http://jackson.codehaus.org) org.codehaus.jackson:jackson-xc:jar:1.9.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt) License: GNU Lesser General Public License (LGPL), Version 2.1 (http://www.fsf.org/licensing/licenses/lgpl.txt)
+
+From: 'FasterXML' (http://fasterxml.com/)
+ - Jackson-core (http://wiki.fasterxml.com/JacksonHome) com.fasterxml.jackson.core:jackson-core:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'GlassFish Community' (https://glassfish.dev.java.net)
+ - Java Servlet API (http://servlet-spec.java.net) javax.servlet:javax.servlet-api:jar:3.1.0
+ License: CDDL + GPLv2 with classpath exception (https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html)
+ - javax.servlet API v.3.0 (http://jcp.org/en/jsr/detail?id=315) org.glassfish:javax.servlet:jar:3.1
+ License: CDDL + GPLv2 with classpath exception (https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html)
+
+From: 'Google' (http://www.google.com/)
+ - Protocol Buffer Java API (http://code.google.com/p/protobuf) com.google.protobuf:protobuf-java:bundle:2.5.0
+ License: New BSD license (http://www.opensource.org/licenses/bsd-license.php)
+
+From: 'Google, Inc.' (http://www.google.com)
+ - Google Guice - Core Library (http://code.google.com/p/google-guice/guice/) com.google.inject:guice:jar:3.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Google Guice - Extensions - Servlet (http://code.google.com/p/google-guice/extensions-parent/guice-servlet/) com.google.inject.extensions:guice-servlet:jar:3.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'jcraft' (http://www.jcraft.com/jsch)
+ - JSch (http://www.jcraft.com/jsch/) com.jcraft:jsch:jar:0.1.42
+ License: BSD (http://www.jcraft.com/jsch/LICENSE.txt)
+
+From: 'JDOM' (http://www.jdom.org)
+ - JDOM (http://www.jdom.org) org.jdom:jdom:jar:2.0.2
+ License: Similar to Apache License but with the acknowledgment clause removed (https://raw.github.com/hunterhacker/jdom/master/LICENSE.txt)
+
+From: 'JolBox' (http://jolbox.com)
+ - BoneCP :: Core Library (http://jolbox.com/bonecp) com.jolbox:bonecp:bundle:0.8.0.RELEASE
+ License: Apache v2 (http://www.apache.org/licenses/LICENSE-2.0.html)
+
+From: 'JSON' (http://json.org/)
+ - JSON (JavaScript Object Notation) (http://www.json.org/java/index.html) org.json:json:jar:20090211
+ License: provided without support or warranty (http://www.json.org/license.html)
+
+From: 'JUnit' (http://www.junit.org)
+ - JUnit (http://junit.org) junit:junit:jar:4.11
+ License: Common Public License Version 1.0 (http://www.opensource.org/licenses/cpl1.0.txt)
+
+From: 'Kohsuke Kawaguchi' (http://www.kohsuke.org/)
+ - args4j (http://args4j.kohsuke.org/args4j/) args4j:args4j:bundle:2.33
+ License: MIT License (http://www.opensource.org/licenses/mit-license.php)
+
+From: 'Mort Bay Consulting' (http://www.mortbay.com)
+ - Jetty Server (http://www.eclipse.org/jetty/jetty-parent/project/modules/jetty) org.mortbay.jetty:jetty:jar:6.1.26
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+ - Jetty Utilities (http://www.eclipse.org/jetty/jetty-parent/project/jetty-util) org.mortbay.jetty:jetty-util:jar:6.1.26
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+
+From: 'ObjectWeb' (http://www.objectweb.org/)
+ - ASM Core (http://asm.objectweb.org/asm/) asm:asm:jar:3.1
+
+ - ASM All (http://asm.objectweb.org/asm-all/) org.ow2.asm:asm-all:jar:5.1
+ License: BSD (http://asm.objectweb.org/license.html)
+
+From: 'Oracle' (http://www.oracle.com)
+ - JavaMail API (compat) (http://kenai.com/projects/javamail/mail) javax.mail:mail:jar:1.4.5
+ License: CDDL (http://www.sun.com/cddl) License: GPLv2+CE (https://glassfish.dev.java.net/public/CDDL+GPL.html)
+
+From: 'Oracle Corporation' (http://www.oracle.com/)
+ - jersey-client (https://jersey.java.net/jersey-client/) com.sun.jersey:jersey-client:jar:1.13
+ License: CDDL 1.1 (http://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (http://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - jersey-core (https://jersey.java.net/jersey-core/) com.sun.jersey:jersey-core:bundle:1.9
+ License: CDDL 1.1 (http://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (http://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - jersey-grizzly2 (https://jersey.java.net/jersey-grizzly2/) com.sun.jersey:jersey-grizzly2:jar:1.9
+ License: CDDL 1.1 (http://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (http://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - jersey-json (https://jersey.java.net/jersey-json/) com.sun.jersey:jersey-json:jar:1.13
+ License: CDDL 1.1 (http://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (http://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - jersey-server (https://jersey.java.net/jersey-server/) com.sun.jersey:jersey-server:bundle:1.9
+ License: CDDL 1.1 (http://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (http://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - jersey-guice (https://jersey.java.net/jersey-contribs/jersey-guice/) com.sun.jersey.contribs:jersey-guice:jar:1.9
+ License: CDDL 1.1 (http://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (http://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - Jersey Test Framework - Core (https://jersey.java.net/jersey-test-framework/jersey-test-framework-core/) com.sun.jersey.jersey-test-framework:jersey-test-framework-core:jar:1.9
+ License: CDDL 1.1 (http://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (http://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - Jersey Test Framework - Grizzly 2 Module (https://jersey.java.net/jersey-test-framework/jersey-test-framework-grizzly2/) com.sun.jersey.jersey-test-framework:jersey-test-framework-grizzly2:jar:1.9
+ License: CDDL 1.1 (http://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (http://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - JAXB RI (http://jaxb.java.net/) com.sun.xml.bind:jaxb-impl:jar:2.2.3-1
+ License: CDDL 1.1 (https://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (https://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - JAXB API bundle for GlassFish V3 (https://jaxb.dev.java.net/) javax.xml.bind:jaxb-api:jar:2.2.2
+ License: CDDL 1.1 (https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html)
+
+From: 'Oracle Corpration' (http://www.oracle.com)
+ - grizzly-framework (http://grizzly.java.net/grizzly-framework) org.glassfish.grizzly:grizzly-framework:bundle:2.1.2
+ License: CDDL+GPL (http://glassfish.java.net/public/CDDL+GPL.html)
+ - grizzly-http (http://grizzly.java.net/grizzly-http) org.glassfish.grizzly:grizzly-http:bundle:2.1.2
+ License: CDDL+GPL (http://glassfish.java.net/public/CDDL+GPL.html)
+ - grizzly-http-server (http://grizzly.java.net/grizzly-http-server) org.glassfish.grizzly:grizzly-http-server:bundle:2.1.2
+ License: CDDL+GPL (http://glassfish.java.net/public/CDDL+GPL.html)
+ - grizzly-http-servlet (http://grizzly.java.net/grizzly-http-servlet) org.glassfish.grizzly:grizzly-http-servlet:bundle:2.1.2
+ License: CDDL+GPL (http://glassfish.java.net/public/CDDL+GPL.html)
+ - grizzly-rcm (http://grizzly.java.net/grizzly-rcm) org.glassfish.grizzly:grizzly-rcm:bundle:2.1.2
+ License: CDDL+GPL (http://glassfish.java.net/public/CDDL+GPL.html)
+
+From: 'QOS.ch' (http://www.qos.ch)
+ - SLF4J API Module (http://www.slf4j.org) org.slf4j:slf4j-api:jar:1.7.7
+ License: MIT License (http://www.opensource.org/licenses/mit-license.php)
+ - SLF4J JCL Binding (http://www.slf4j.org) org.slf4j:slf4j-jcl:jar:1.6.3
+ License: MIT License (http://www.opensource.org/licenses/mit-license.php)
+ - SLF4J LOG4J-12 Binding (http://www.slf4j.org) org.slf4j:slf4j-log4j12:jar:1.7.5
+ License: MIT License (http://www.opensource.org/licenses/mit-license.php)
+
+From: 'ROME Project' (http://rome.dev.java.net)
+ - Rome HTTP Fetcher net.java.dev.rome:rome-fetcher:jar:1.0.0
+ License: Apache 2 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'Sun Microsystems' (http://www.sun.com)
+ - management-api (http://kenai.com/hg/gmbal~gf_common) org.glassfish.external:management-api:jar:3.0.0-b012
+ License: CDDL+GPL (https://glassfish.dev.java.net/public/CDDL+GPL.html)
+ - gmbal-api-only (http://kenai.com/hg/gmbal~master) org.glassfish.gmbal:gmbal-api-only:jar:3.0.0-b023
+ License: CDDL+GPL (https://glassfish.dev.java.net/public/CDDL+GPL.html)
+
+From: 'The Apache Software Foundation' (http://commons.apache.org/)
+ - Commons Configuration (http://commons.apache.org/${pom.artifactId.substring(8)}/) commons-configuration:commons-configuration:jar:1.6
+ License: The Apache Software License, Version 2.0 (/LICENSE.txt)
+
+From: 'The Apache Software Foundation' (http://jakarta.apache.org)
+ - Digester (http://jakarta.apache.org/commons/digester/) commons-digester:commons-digester:jar:1.8
+ License: The Apache Software License, Version 2.0 (/LICENSE.txt)
+ - EL (http://jakarta.apache.org/commons/el/) commons-el:commons-el:jar:1.0
+ License: The Apache Software License, Version 2.0 (/LICENSE.txt)
+
+From: 'The Apache Software Foundation' (http://www.apache.org/)
+ - Commons BeanUtils Core (http://commons.apache.org/beanutils/) commons-beanutils:commons-beanutils-core:jar:1.8.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons CLI (http://commons.apache.org/cli/) commons-cli:commons-cli:jar:1.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Commons Codec (http://commons.apache.org/proper/commons-codec/) commons-codec:commons-codec:jar:1.9
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons Collections (http://commons.apache.org/collections/) commons-collections:commons-collections:jar:3.2.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons Daemon (http://commons.apache.org/daemon/) commons-daemon:commons-daemon:jar:1.0.13
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons IO (http://commons.apache.org/io/) commons-io:commons-io:jar:2.4
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons Lang (http://commons.apache.org/lang/) commons-lang:commons-lang:jar:2.5
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Commons Logging (http://commons.apache.org/proper/commons-logging/) commons-logging:commons-logging:jar:1.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons Net (http://commons.apache.org/net/) commons-net:commons-net:jar:3.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Ant Core (http://ant.apache.org/) org.apache.ant:ant:jar:1.9.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Ant Launcher (http://ant.apache.org/) org.apache.ant:ant-launcher:jar:1.9.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-active (http://www.apache.org/apache-asterixdb/asterix-active/) org.apache.asterix:asterix-active:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-algebra (http://www.apache.org/apache-asterixdb/asterix-algebra/) org.apache.asterix:asterix-algebra:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-app (http://www.apache.org/apache-asterixdb/asterix-app/) org.apache.asterix:asterix-app:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-common (http://www.apache.org/apache-asterixdb/asterix-common/) org.apache.asterix:asterix-common:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-events (http://www.apache.org/apache-asterixdb/asterix-events/) org.apache.asterix:asterix-events:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-external-data (http://www.apache.org/apache-asterixdb/asterix-external-data/) org.apache.asterix:asterix-external-data:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-fuzzyjoin (http://www.apache.org/apache-asterixdb/asterix-fuzzyjoin/) org.apache.asterix:asterix-fuzzyjoin:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-lang-aql (http://www.apache.org/apache-asterixdb/asterix-lang-aql/) org.apache.asterix:asterix-lang-aql:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-lang-common (http://www.apache.org/apache-asterixdb/asterix-lang-common/) org.apache.asterix:asterix-lang-common:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-lang-sqlpp (http://www.apache.org/apache-asterixdb/asterix-lang-sqlpp/) org.apache.asterix:asterix-lang-sqlpp:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-metadata (http://www.apache.org/apache-asterixdb/asterix-metadata/) org.apache.asterix:asterix-metadata:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-om (http://www.apache.org/apache-asterixdb/asterix-om/) org.apache.asterix:asterix-om:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-replication (http://www.apache.org/apache-asterixdb/asterix-replication/) org.apache.asterix:asterix-replication:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-runtime (http://www.apache.org/apache-asterixdb/asterix-runtime/) org.apache.asterix:asterix-runtime:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-test-framework (http://www.apache.org/apache-asterixdb/asterix-test-framework/) org.apache.asterix:asterix-test-framework:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-transactions (http://www.apache.org/apache-asterixdb/asterix-transactions/) org.apache.asterix:asterix-transactions:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Avro (http://avro.apache.org) org.apache.avro:avro:jar:1.7.4
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons Compress (http://commons.apache.org/compress/) org.apache.commons:commons-compress:jar:1.4.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons Lang (http://commons.apache.org/lang/) org.apache.commons:commons-lang3:jar:3.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons Math (http://commons.apache.org/math/) org.apache.commons:commons-math:jar:2.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Ant Utilities (http://hive.apache.org/hive-ant) org.apache.hive:hive-ant:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Common (http://hive.apache.org/hive-common) org.apache.hive:hive-common:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Query Language (http://hive.apache.org/hive-exec) org.apache.hive:hive-exec:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Metastore (http://hive.apache.org/hive-metastore) org.apache.hive:hive-metastore:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Serde (http://hive.apache.org/hive-serde) org.apache.hive:hive-serde:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Shims (http://hive.apache.org/hive-shims) org.apache.hive:hive-shims:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Shims 0.20 (http://hive.apache.org/hive-shims-0.20) org.apache.hive.shims:hive-shims-0.20:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Shims 0.20S (http://hive.apache.org/hive-shims-0.20S) org.apache.hive.shims:hive-shims-0.20S:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Shims 0.23 (http://hive.apache.org/hive-shims-0.23) org.apache.hive.shims:hive-shims-0.23:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Shims Common (http://hive.apache.org/hive-shims-common) org.apache.hive.shims:hive-shims-common:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Shims Secure Common (http://hive.apache.org/hive-shims-common-secure) org.apache.hive.shims:hive-shims-common-secure:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache HttpClient (http://hc.apache.org/httpcomponents-client) org.apache.httpcomponents:httpclient:jar:4.5.2
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache HttpCore (http://hc.apache.org/httpcomponents-core-ga) org.apache.httpcomponents:httpcore:jar:4.4.4
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - algebricks-common (http://www.apache.org/apache-asterixdb-hyracks/algebricks/algebricks-common/) org.apache.hyracks:algebricks-common:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - algebricks-compiler (http://www.apache.org/apache-asterixdb-hyracks/algebricks/algebricks-compiler/) org.apache.hyracks:algebricks-compiler:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - algebricks-core (http://www.apache.org/apache-asterixdb-hyracks/algebricks/algebricks-core/) org.apache.hyracks:algebricks-core:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - algebricks-data (http://www.apache.org/apache-asterixdb-hyracks/algebricks/algebricks-data/) org.apache.hyracks:algebricks-data:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - algebricks-rewriter (http://www.apache.org/apache-asterixdb-hyracks/algebricks/algebricks-rewriter/) org.apache.hyracks:algebricks-rewriter:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - algebricks-runtime (http://www.apache.org/apache-asterixdb-hyracks/algebricks/algebricks-runtime/) org.apache.hyracks:algebricks-runtime:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-api (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-api/) org.apache.hyracks:hyracks-api:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-client (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-client/) org.apache.hyracks:hyracks-client:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-comm (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-comm/) org.apache.hyracks:hyracks-comm:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-control-cc (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-control/hyracks-control-cc/) org.apache.hyracks:hyracks-control-cc:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-control-common (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-control/hyracks-control-common/) org.apache.hyracks:hyracks-control-common:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-control-nc (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-control/hyracks-control-nc/) org.apache.hyracks:hyracks-control-nc:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-data-std (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-data/hyracks-data-std/) org.apache.hyracks:hyracks-data-std:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-dataflow-common (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-dataflow-common/) org.apache.hyracks:hyracks-dataflow-common:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-dataflow-std (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-dataflow-std/) org.apache.hyracks:hyracks-dataflow-std:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-hdfs-2.x (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-hdfs/hyracks-hdfs-2.x/) org.apache.hyracks:hyracks-hdfs-2.x:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-hdfs-core (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-hdfs/hyracks-hdfs-core/) org.apache.hyracks:hyracks-hdfs-core:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-ipc (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-ipc/) org.apache.hyracks:hyracks-ipc:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-net (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-net/) org.apache.hyracks:hyracks-net:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-am-bloomfilter (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-am-bloomfilter/) org.apache.hyracks:hyracks-storage-am-bloomfilter:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-am-btree (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-am-btree/) org.apache.hyracks:hyracks-storage-am-btree:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-am-common (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-am-common/) org.apache.hyracks:hyracks-storage-am-common:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-am-lsm-btree (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-am-lsm-btree/) org.apache.hyracks:hyracks-storage-am-lsm-btree:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-am-lsm-common (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-am-lsm-common/) org.apache.hyracks:hyracks-storage-am-lsm-common:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-am-lsm-invertedindex (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-am-lsm-invertedindex/) org.apache.hyracks:hyracks-storage-am-lsm-invertedindex:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-am-lsm-rtree (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-am-lsm-rtree/) org.apache.hyracks:hyracks-storage-am-lsm-rtree:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-am-rtree (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-am-rtree/) org.apache.hyracks:hyracks-storage-am-rtree:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-common (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-common/) org.apache.hyracks:hyracks-storage-common:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-util (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-util/) org.apache.hyracks:hyracks-util:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Velocity (http://velocity.apache.org/engine/releases/velocity-1.5/) org.apache.velocity:velocity:pom:1.5
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - jasper-compiler (http://tomcat.apache.org/jasper-compiler) tomcat:jasper-compiler:jar:5.5.23
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - jasper-runtime (http://tomcat.apache.org/jasper-runtime) tomcat:jasper-runtime:jar:5.5.23
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'The Codehaus' (http://codehaus.org)
+ - Groovy (http://groovy.codehaus.org/) org.codehaus.groovy:groovy-all:jar:2.1.6
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'The Netty Project' (http://netty.io/)
+ - The Netty Project (http://netty.io/) io.netty:netty:bundle:3.6.2.Final
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+
+From: 'Webtide' (http://webtide.com)
+ - Jetty :: Http Utility (http://www.eclipse.org/jetty) org.eclipse.jetty:jetty-http:jar:9.3.11.v20160721
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+ - Jetty :: IO Utility (http://www.eclipse.org/jetty) org.eclipse.jetty:jetty-io:jar:9.3.11.v20160721
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+ - Jetty :: Security (http://www.eclipse.org/jetty) org.eclipse.jetty:jetty-security:jar:9.3.11.v20160721
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+ - Jetty :: Server Core (http://www.eclipse.org/jetty) org.eclipse.jetty:jetty-server:jar:9.3.11.v20160721
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+ - Jetty :: Servlet Handling (http://www.eclipse.org/jetty) org.eclipse.jetty:jetty-servlet:jar:9.3.11.v20160721
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+ - Jetty :: Utilities (http://www.eclipse.org/jetty) org.eclipse.jetty:jetty-util:jar:9.3.11.v20160721
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+ - Jetty :: Webapp Application Support (http://www.eclipse.org/jetty) org.eclipse.jetty:jetty-webapp:jar:9.3.11.v20160721
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+ - Jetty :: XML utilities (http://www.eclipse.org/jetty) org.eclipse.jetty:jetty-xml:jar:9.3.11.v20160721
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+
+From: 'xerial.org' (http://www.xerial.org/)
+ - Snappy for Java (http://code.google.com/p/snappy-java/) org.xerial.snappy:snappy-java:bundle:1.0.4.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+
+
+
[04/12] asterixdb-bad git commit: Initial commit
Posted by sj...@apache.org.
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/generated-sources/javacc/org/apache/asterix/bad/lang/BADAQLParserTokenManager.java
----------------------------------------------------------------------
diff --git a/target/generated-sources/javacc/org/apache/asterix/bad/lang/BADAQLParserTokenManager.java b/target/generated-sources/javacc/org/apache/asterix/bad/lang/BADAQLParserTokenManager.java
new file mode 100644
index 0000000..e028a1a
--- /dev/null
+++ b/target/generated-sources/javacc/org/apache/asterix/bad/lang/BADAQLParserTokenManager.java
@@ -0,0 +1,3701 @@
+/* Generated By:JavaCC: Do not edit this line. BADAQLParserTokenManager.java */
+package org.apache.asterix.bad.lang;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import org.apache.asterix.bad.lang.statement.BrokerDropStatement;
+import org.apache.asterix.bad.lang.statement.ChannelDropStatement;
+import org.apache.asterix.bad.lang.statement.ChannelSubscribeStatement;
+import org.apache.asterix.bad.lang.statement.ChannelUnsubscribeStatement;
+import org.apache.asterix.bad.lang.statement.CreateBrokerStatement;
+import org.apache.asterix.bad.lang.statement.CreateChannelStatement;
+import org.apache.asterix.common.annotations.AutoDataGen;
+import org.apache.asterix.common.annotations.DateBetweenYearsDataGen;
+import org.apache.asterix.common.annotations.DatetimeAddRandHoursDataGen;
+import org.apache.asterix.common.annotations.DatetimeBetweenYearsDataGen;
+import org.apache.asterix.common.annotations.FieldIntervalDataGen;
+import org.apache.asterix.common.annotations.FieldValFileDataGen;
+import org.apache.asterix.common.annotations.FieldValFileSameIndexDataGen;
+import org.apache.asterix.common.annotations.IRecordFieldDataGen;
+import org.apache.asterix.common.annotations.InsertRandIntDataGen;
+import org.apache.asterix.common.annotations.ListDataGen;
+import org.apache.asterix.common.annotations.ListValFileDataGen;
+import org.apache.asterix.common.annotations.SkipSecondaryIndexSearchExpressionAnnotation;
+import org.apache.asterix.common.annotations.TypeDataGen;
+import org.apache.asterix.common.annotations.UndeclaredFieldsDataGen;
+import org.apache.asterix.common.config.DatasetConfig.DatasetType;
+import org.apache.asterix.common.config.DatasetConfig.IndexType;
+import org.apache.asterix.common.exceptions.AsterixException;
+import org.apache.asterix.common.functions.FunctionSignature;
+import org.apache.asterix.lang.aql.clause.DistinctClause;
+import org.apache.asterix.lang.aql.clause.ForClause;
+import org.apache.asterix.lang.aql.expression.FLWOGRExpression;
+import org.apache.asterix.lang.aql.expression.UnionExpr;
+import org.apache.asterix.lang.aql.util.RangeMapBuilder;
+import org.apache.asterix.lang.common.base.Clause;
+import org.apache.asterix.lang.common.base.Expression;
+import org.apache.asterix.lang.common.base.IParser;
+import org.apache.asterix.lang.common.base.Literal;
+import org.apache.asterix.lang.common.base.Statement;
+import org.apache.asterix.lang.common.clause.GroupbyClause;
+import org.apache.asterix.lang.common.clause.LetClause;
+import org.apache.asterix.lang.common.clause.LimitClause;
+import org.apache.asterix.lang.common.clause.OrderbyClause;
+import org.apache.asterix.lang.common.clause.UpdateClause;
+import org.apache.asterix.lang.common.clause.WhereClause;
+import org.apache.asterix.lang.common.context.RootScopeFactory;
+import org.apache.asterix.lang.common.context.Scope;
+import org.apache.asterix.lang.common.expression.AbstractAccessor;
+import org.apache.asterix.lang.common.expression.CallExpr;
+import org.apache.asterix.lang.common.expression.FieldAccessor;
+import org.apache.asterix.lang.common.expression.FieldBinding;
+import org.apache.asterix.lang.common.expression.GbyVariableExpressionPair;
+import org.apache.asterix.lang.common.expression.IfExpr;
+import org.apache.asterix.lang.common.expression.IndexAccessor;
+import org.apache.asterix.lang.common.expression.ListConstructor;
+import org.apache.asterix.lang.common.expression.LiteralExpr;
+import org.apache.asterix.lang.common.expression.OperatorExpr;
+import org.apache.asterix.lang.common.expression.OrderedListTypeDefinition;
+import org.apache.asterix.lang.common.expression.QuantifiedExpression;
+import org.apache.asterix.lang.common.expression.RecordConstructor;
+import org.apache.asterix.lang.common.expression.RecordTypeDefinition;
+import org.apache.asterix.lang.common.expression.TypeExpression;
+import org.apache.asterix.lang.common.expression.TypeReferenceExpression;
+import org.apache.asterix.lang.common.expression.UnaryExpr;
+import org.apache.asterix.lang.common.expression.UnorderedListTypeDefinition;
+import org.apache.asterix.lang.common.expression.VariableExpr;
+import org.apache.asterix.lang.common.literal.DoubleLiteral;
+import org.apache.asterix.lang.common.literal.FalseLiteral;
+import org.apache.asterix.lang.common.literal.FloatLiteral;
+import org.apache.asterix.lang.common.literal.LongIntegerLiteral;
+import org.apache.asterix.lang.common.literal.MissingLiteral;
+import org.apache.asterix.lang.common.literal.NullLiteral;
+import org.apache.asterix.lang.common.literal.StringLiteral;
+import org.apache.asterix.lang.common.literal.TrueLiteral;
+import org.apache.asterix.lang.common.parser.ScopeChecker;
+import org.apache.asterix.lang.common.statement.CompactStatement;
+import org.apache.asterix.lang.common.statement.ConnectFeedStatement;
+import org.apache.asterix.lang.common.statement.CreateDataverseStatement;
+import org.apache.asterix.lang.common.statement.CreateFeedPolicyStatement;
+import org.apache.asterix.lang.common.statement.CreateFeedStatement;
+import org.apache.asterix.lang.common.statement.CreateFunctionStatement;
+import org.apache.asterix.lang.common.statement.CreateIndexStatement;
+import org.apache.asterix.lang.common.statement.CreatePrimaryFeedStatement;
+import org.apache.asterix.lang.common.statement.CreateSecondaryFeedStatement;
+import org.apache.asterix.lang.common.statement.DatasetDecl;
+import org.apache.asterix.lang.common.statement.DataverseDecl;
+import org.apache.asterix.lang.common.statement.DataverseDropStatement;
+import org.apache.asterix.lang.common.statement.DeleteStatement;
+import org.apache.asterix.lang.common.statement.DisconnectFeedStatement;
+import org.apache.asterix.lang.common.statement.DropDatasetStatement;
+import org.apache.asterix.lang.common.statement.ExternalDetailsDecl;
+import org.apache.asterix.lang.common.statement.FeedDropStatement;
+import org.apache.asterix.lang.common.statement.FeedPolicyDropStatement;
+import org.apache.asterix.lang.common.statement.FunctionDecl;
+import org.apache.asterix.lang.common.statement.FunctionDropStatement;
+import org.apache.asterix.lang.common.statement.IndexDropStatement;
+import org.apache.asterix.lang.common.statement.InsertStatement;
+import org.apache.asterix.lang.common.statement.InternalDetailsDecl;
+import org.apache.asterix.lang.common.statement.LoadStatement;
+import org.apache.asterix.lang.common.statement.NodeGroupDropStatement;
+import org.apache.asterix.lang.common.statement.NodegroupDecl;
+import org.apache.asterix.lang.common.statement.Query;
+import org.apache.asterix.lang.common.statement.RefreshExternalDatasetStatement;
+import org.apache.asterix.lang.common.statement.RunStatement;
+import org.apache.asterix.lang.common.statement.SetStatement;
+import org.apache.asterix.lang.common.statement.TypeDecl;
+import org.apache.asterix.lang.common.statement.TypeDropStatement;
+import org.apache.asterix.lang.common.statement.UpdateStatement;
+import org.apache.asterix.lang.common.statement.UpsertStatement;
+import org.apache.asterix.lang.common.statement.WriteStatement;
+import org.apache.asterix.lang.common.struct.Identifier;
+import org.apache.asterix.lang.common.struct.QuantifiedPair;
+import org.apache.asterix.lang.common.struct.VarIdentifier;
+import org.apache.asterix.metadata.utils.MetadataConstants;
+import org.apache.hyracks.algebricks.common.utils.Pair;
+import org.apache.hyracks.algebricks.common.utils.Triple;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IExpressionAnnotation;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IndexedNLJoinExpressionAnnotation;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.xerces.util.IntStack;
+
+/** Token Manager. */
+public class BADAQLParserTokenManager implements BADAQLParserConstants
+{
+ public int commentDepth = 0;
+ public IntStack lexerStateStack = new IntStack();
+
+ public void pushState() {
+ lexerStateStack.push( curLexState );
+ }
+
+ public void popState(String token) {
+ if (lexerStateStack.size() > 0) {
+ SwitchTo( lexerStateStack.pop() );
+ } else {
+ int errorLine = input_stream.getEndLine();
+ int errorColumn = input_stream.getEndColumn();
+ String msg = "Lexical error at line " + errorLine + ", column " + errorColumn + ". Encountered \u005c"" + token
+ + "\u005c" but state stack is empty.";
+ throw new TokenMgrError(msg, -1);
+ }
+ }
+
+ /** Debug output. */
+ public java.io.PrintStream debugStream = System.out;
+ /** Set debug output. */
+ public void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
+private int jjStopAtPos(int pos, int kind)
+{
+ jjmatchedKind = kind;
+ jjmatchedPos = pos;
+ return pos + 1;
+}
+private int jjMoveStringLiteralDfa0_0()
+{
+ switch(curChar)
+ {
+ case 9:
+ jjmatchedKind = 147;
+ return jjMoveNfa_0(0, 0);
+ case 10:
+ jjmatchedKind = 149;
+ return jjMoveNfa_0(0, 0);
+ case 13:
+ jjmatchedKind = 148;
+ return jjMoveNfa_0(0, 0);
+ case 32:
+ jjmatchedKind = 146;
+ return jjMoveNfa_0(0, 0);
+ case 33:
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x1000000000000L, 0x0L);
+ case 35:
+ jjmatchedKind = 118;
+ return jjMoveNfa_0(0, 0);
+ case 37:
+ jjmatchedKind = 96;
+ return jjMoveNfa_0(0, 0);
+ case 40:
+ jjmatchedKind = 99;
+ return jjMoveNfa_0(0, 0);
+ case 41:
+ jjmatchedKind = 100;
+ return jjMoveNfa_0(0, 0);
+ case 42:
+ jjmatchedKind = 97;
+ return jjMoveNfa_0(0, 0);
+ case 43:
+ jjmatchedKind = 98;
+ return jjMoveNfa_0(0, 0);
+ case 44:
+ jjmatchedKind = 104;
+ return jjMoveNfa_0(0, 0);
+ case 45:
+ jjmatchedKind = 95;
+ return jjMoveNfa_0(0, 0);
+ case 46:
+ jjmatchedKind = 105;
+ return jjMoveNfa_0(0, 0);
+ case 47:
+ jjmatchedKind = 93;
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x1000000L);
+ case 58:
+ jjmatchedKind = 103;
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x4000000000000L, 0x0L);
+ case 59:
+ jjmatchedKind = 3;
+ return jjMoveNfa_0(0, 0);
+ case 60:
+ jjmatchedKind = 107;
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x200000000000L, 0x0L);
+ case 61:
+ jjmatchedKind = 111;
+ return jjMoveNfa_0(0, 0);
+ case 62:
+ jjmatchedKind = 108;
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x400000000000L, 0x0L);
+ case 63:
+ jjmatchedKind = 106;
+ return jjMoveNfa_0(0, 0);
+ case 64:
+ jjmatchedKind = 117;
+ return jjMoveNfa_0(0, 0);
+ case 66:
+ return jjMoveStringLiteralDfa1_0(0x400L, 0x0L, 0x0L);
+ case 67:
+ return jjMoveStringLiteralDfa1_0(0x800L, 0x0L, 0x0L);
+ case 91:
+ jjmatchedKind = 101;
+ return jjMoveNfa_0(0, 0);
+ case 93:
+ jjmatchedKind = 102;
+ return jjMoveNfa_0(0, 0);
+ case 94:
+ jjmatchedKind = 92;
+ return jjMoveNfa_0(0, 0);
+ case 97:
+ return jjMoveStringLiteralDfa1_0(0x1f000L, 0x8000000000000L, 0x0L);
+ case 98:
+ return jjMoveStringLiteralDfa1_0(0x60400L, 0x0L, 0x0L);
+ case 99:
+ return jjMoveStringLiteralDfa1_0(0xf80840L, 0x0L, 0x0L);
+ case 100:
+ return jjMoveStringLiteralDfa1_0(0x3ff000000L, 0x0L, 0x0L);
+ case 101:
+ return jjMoveStringLiteralDfa1_0(0x7c00000000L, 0x0L, 0x0L);
+ case 102:
+ return jjMoveStringLiteralDfa1_0(0x1f8000000000L, 0x8000000000000000L, 0x0L);
+ case 103:
+ return jjMoveStringLiteralDfa1_0(0x200000000000L, 0x0L, 0x0L);
+ case 104:
+ return jjMoveStringLiteralDfa1_0(0x400000000000L, 0x0L, 0x0L);
+ case 105:
+ return jjMoveStringLiteralDfa1_0(0x3f800000000000L, 0x40000000L, 0x0L);
+ case 107:
+ return jjMoveStringLiteralDfa1_0(0x1c0000000000000L, 0x0L, 0x0L);
+ case 108:
+ return jjMoveStringLiteralDfa1_0(0xe00000000000000L, 0x0L, 0x0L);
+ case 109:
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x1000000000000000L, 0x0L);
+ case 110:
+ return jjMoveStringLiteralDfa1_0(0x3000000000000000L, 0x2000000000000000L, 0x0L);
+ case 111:
+ return jjMoveStringLiteralDfa1_0(0xc000000000000000L, 0x10000000000007L, 0x0L);
+ case 112:
+ return jjMoveStringLiteralDfa1_0(0x200L, 0x78L, 0x0L);
+ case 114:
+ return jjMoveStringLiteralDfa1_0(0x106L, 0x780L, 0x0L);
+ case 115:
+ return jjMoveStringLiteralDfa1_0(0x90L, 0xf800L, 0x0L);
+ case 116:
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x40000000000f0000L, 0x0L);
+ case 117:
+ return jjMoveStringLiteralDfa1_0(0x20L, 0x1f00000L, 0x0L);
+ case 119:
+ return jjMoveStringLiteralDfa1_0(0x0L, 0xe000000L, 0x0L);
+ case 123:
+ jjmatchedKind = 119;
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x200000000000000L, 0x0L);
+ case 125:
+ jjmatchedKind = 120;
+ return jjMoveNfa_0(0, 0);
+ case 126:
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x2000000000000L, 0x0L);
+ default :
+ return jjMoveNfa_0(0, 0);
+ }
+}
+private int jjMoveStringLiteralDfa1_0(long active0, long active1, long active2)
+{
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return jjMoveNfa_0(0, 0);
+ }
+ switch(curChar)
+ {
+ case 42:
+ if ((active2 & 0x1000000L) != 0L)
+ {
+ jjmatchedKind = 152;
+ jjmatchedPos = 1;
+ }
+ break;
+ case 61:
+ if ((active1 & 0x200000000000L) != 0L)
+ {
+ jjmatchedKind = 109;
+ jjmatchedPos = 1;
+ }
+ else if ((active1 & 0x400000000000L) != 0L)
+ {
+ jjmatchedKind = 110;
+ jjmatchedPos = 1;
+ }
+ else if ((active1 & 0x1000000000000L) != 0L)
+ {
+ jjmatchedKind = 112;
+ jjmatchedPos = 1;
+ }
+ else if ((active1 & 0x2000000000000L) != 0L)
+ {
+ jjmatchedKind = 113;
+ jjmatchedPos = 1;
+ }
+ else if ((active1 & 0x4000000000000L) != 0L)
+ {
+ jjmatchedKind = 114;
+ jjmatchedPos = 1;
+ }
+ break;
+ case 72:
+ return jjMoveStringLiteralDfa2_0(active0, 0x800L, active1, 0L, active2, 0L);
+ case 82:
+ return jjMoveStringLiteralDfa2_0(active0, 0x400L, active1, 0L, active2, 0L);
+ case 97:
+ return jjMoveStringLiteralDfa2_0(active0, 0x3000000L, active1, 0x8000000000000808L, active2, 0L);
+ case 100:
+ return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x40000000L, active2, 0L);
+ case 101:
+ return jjMoveStringLiteralDfa2_0(active0, 0x3c000807c000306L, active1, 0x17180L, active2, 0L);
+ case 102:
+ if ((active0 & 0x800000000000L) != 0L)
+ {
+ jjmatchedKind = 47;
+ jjmatchedPos = 1;
+ }
+ return jjMoveStringLiteralDfa2_0(active0, 0x4000000000000000L, active1, 0L, active2, 0L);
+ case 103:
+ return jjMoveStringLiteralDfa2_0(active0, 0x1000000000000000L, active1, 0L, active2, 0L);
+ case 104:
+ return jjMoveStringLiteralDfa2_0(active0, 0x840L, active1, 0x2020000L, active2, 0L);
+ case 105:
+ return jjMoveStringLiteralDfa2_0(active0, 0x400410180000000L, active1, 0x1000000004000000L, active2, 0L);
+ case 108:
+ return jjMoveStringLiteralDfa2_0(active0, 0x400080000L, active1, 0L, active2, 0L);
+ case 110:
+ if ((active0 & 0x1000000000000L) != 0L)
+ {
+ jjmatchedKind = 48;
+ jjmatchedPos = 1;
+ }
+ else if ((active0 & 0x8000000000000000L) != 0L)
+ {
+ jjmatchedKind = 63;
+ jjmatchedPos = 1;
+ }
+ return jjMoveStringLiteralDfa2_0(active0, 0x3e000800000020L, active1, 0x8000000100000L, active2, 0L);
+ case 111:
+ if ((active1 & 0x40000L) != 0L)
+ {
+ jjmatchedKind = 82;
+ jjmatchedPos = 1;
+ }
+ return jjMoveStringLiteralDfa2_0(active0, 0x2800060000700000L, active1, 0x8010L, active2, 0L);
+ case 112:
+ return jjMoveStringLiteralDfa2_0(active0, 0x1000L, active1, 0x600001L, active2, 0L);
+ case 114:
+ if ((active1 & 0x10000000000000L) != 0L)
+ {
+ jjmatchedKind = 116;
+ jjmatchedPos = 1;
+ }
+ return jjMoveStringLiteralDfa2_0(active0, 0x280200800400L, active1, 0x4000000008000062L, active2, 0L);
+ case 115:
+ if ((active0 & 0x2000L) != 0L)
+ {
+ jjmatchedKind = 13;
+ jjmatchedPos = 1;
+ }
+ return jjMoveStringLiteralDfa2_0(active0, 0x4000L, active1, 0x1800000L, active2, 0L);
+ case 116:
+ if ((active0 & 0x8000L) != 0L)
+ {
+ jjmatchedKind = 15;
+ jjmatchedPos = 1;
+ }
+ return jjMoveStringLiteralDfa2_0(active0, 0x20000L, active1, 0x200L, active2, 0L);
+ case 117:
+ return jjMoveStringLiteralDfa2_0(active0, 0x100000010090L, active1, 0x2000000000000404L, active2, 0L);
+ case 118:
+ return jjMoveStringLiteralDfa2_0(active0, 0x1000000000L, active1, 0L, active2, 0L);
+ case 120:
+ return jjMoveStringLiteralDfa2_0(active0, 0x6000000000L, active1, 0L, active2, 0L);
+ case 121:
+ if ((active0 & 0x40000L) != 0L)
+ {
+ jjmatchedKind = 18;
+ jjmatchedPos = 1;
+ }
+ return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x80000L, active2, 0L);
+ case 123:
+ if ((active1 & 0x200000000000000L) != 0L)
+ {
+ jjmatchedKind = 121;
+ jjmatchedPos = 1;
+ }
+ break;
+ default :
+ break;
+ }
+ return jjMoveNfa_0(0, 1);
+}
+private int jjMoveStringLiteralDfa2_0(long old0, long active0, long old1, long active1, long old2, long active2)
+{
+ if (((active0 &= old0) | (active1 &= old1) | (active2 &= old2)) == 0L)
+ return jjMoveNfa_0(0, 1);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return jjMoveNfa_0(0, 1);
+ }
+ switch(curChar)
+ {
+ case 65:
+ return jjMoveStringLiteralDfa3_0(active0, 0x800L, active1, 0L);
+ case 79:
+ return jjMoveStringLiteralDfa3_0(active0, 0x400L, active1, 0L);
+ case 97:
+ return jjMoveStringLiteralDfa3_0(active0, 0x800000000000840L, active1, 0L);
+ case 98:
+ return jjMoveStringLiteralDfa3_0(active0, 0x90L, active1, 0L);
+ case 99:
+ if ((active0 & 0x4000L) != 0L)
+ {
+ jjmatchedKind = 14;
+ jjmatchedPos = 2;
+ }
+ return jjMoveStringLiteralDfa3_0(active0, 0xc000002L, active1, 0x1000L);
+ case 100:
+ if ((active1 & 0x8000000000000L) != 0L)
+ {
+ jjmatchedKind = 115;
+ jjmatchedPos = 2;
+ }
+ return jjMoveStringLiteralDfa3_0(active0, 0x2002000000000000L, active1, 0x200002L);
+ case 101:
+ if ((active1 & 0x800000L) != 0L)
+ {
+ jjmatchedKind = 87;
+ jjmatchedPos = 2;
+ }
+ return jjMoveStringLiteralDfa3_0(active0, 0x100009000800000L, active1, 0x2020021L);
+ case 102:
+ return jjMoveStringLiteralDfa3_0(active0, 0x4000000810000000L, active1, 0x80L);
+ case 103:
+ return jjMoveStringLiteralDfa3_0(active0, 0x4000000000000L, active1, 0L);
+ case 105:
+ return jjMoveStringLiteralDfa3_0(active0, 0x2000000000L, active1, 0x49100040L);
+ case 108:
+ return jjMoveStringLiteralDfa3_0(active0, 0x10020000000L, active1, 0xa000000000002010L);
+ case 109:
+ return jjMoveStringLiteralDfa3_0(active0, 0x400000000300000L, active1, 0x18000L);
+ case 110:
+ if ((active1 & 0x400L) != 0L)
+ {
+ jjmatchedKind = 74;
+ jjmatchedPos = 2;
+ }
+ return jjMoveStringLiteralDfa3_0(active0, 0x500000400000L, active1, 0L);
+ case 111:
+ return jjMoveStringLiteralDfa3_0(active0, 0x280200080400L, active1, 0L);
+ case 112:
+ return jjMoveStringLiteralDfa3_0(active0, 0x1100L, active1, 0x80000L);
+ case 114:
+ if ((active0 & 0x20000000000L) != 0L)
+ {
+ jjmatchedKind = 41;
+ jjmatchedPos = 2;
+ }
+ return jjMoveStringLiteralDfa3_0(active0, 0x1000040000020200L, active1, 0x200L);
+ case 115:
+ return jjMoveStringLiteralDfa3_0(active0, 0x80005c0000020L, active1, 0x1000000000400000L);
+ case 116:
+ if ((active0 & 0x200000000000000L) != 0L)
+ {
+ jjmatchedKind = 57;
+ jjmatchedPos = 2;
+ }
+ else if ((active1 & 0x4000L) != 0L)
+ {
+ jjmatchedKind = 78;
+ jjmatchedPos = 2;
+ }
+ return jjMoveStringLiteralDfa3_0(active0, 0x30004003010004L, active1, 0x400090cL);
+ case 117:
+ return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x4000000000000000L);
+ case 121:
+ if ((active0 & 0x40000000000000L) != 0L)
+ {
+ jjmatchedKind = 54;
+ jjmatchedPos = 2;
+ }
+ return jjMoveStringLiteralDfa3_0(active0, 0x80000000000000L, active1, 0L);
+ default :
+ break;
+ }
+ return jjMoveNfa_0(0, 2);
+}
+private int jjMoveStringLiteralDfa3_0(long old0, long active0, long old1, long active1)
+{
+ if (((active0 &= old0) | (active1 &= old1)) == 0L)
+ return jjMoveNfa_0(0, 2);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return jjMoveNfa_0(0, 2);
+ }
+ switch(curChar)
+ {
+ case 45:
+ return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x20L);
+ case 75:
+ return jjMoveStringLiteralDfa4_0(active0, 0x400L, active1, 0L);
+ case 78:
+ return jjMoveStringLiteralDfa4_0(active0, 0x800L, active1, 0L);
+ case 97:
+ return jjMoveStringLiteralDfa4_0(active0, 0x1000000003800000L, active1, 0x200000L);
+ case 99:
+ if ((active0 & 0x40000000L) != 0L)
+ {
+ jjmatchedKind = 30;
+ jjmatchedPos = 3;
+ }
+ return jjMoveStringLiteralDfa4_0(active0, 0x100080000000L, active1, 0L);
+ case 100:
+ if ((active0 & 0x8000000000L) != 0L)
+ {
+ jjmatchedKind = 39;
+ jjmatchedPos = 3;
+ }
+ else if ((active0 & 0x800000000000000L) != 0L)
+ {
+ jjmatchedKind = 59;
+ jjmatchedPos = 3;
+ }
+ break;
+ case 101:
+ if ((active0 & 0x400000000L) != 0L)
+ {
+ jjmatchedKind = 34;
+ jjmatchedPos = 3;
+ }
+ else if ((active1 & 0x8000L) != 0L)
+ {
+ jjmatchedKind = 79;
+ jjmatchedPos = 3;
+ }
+ else if ((active1 & 0x80000L) != 0L)
+ {
+ jjmatchedKind = 83;
+ jjmatchedPos = 3;
+ }
+ else if ((active1 & 0x4000000000000000L) != 0L)
+ {
+ jjmatchedKind = 126;
+ jjmatchedPos = 3;
+ }
+ return jjMoveStringLiteralDfa4_0(active0, 0x201e004020020100L, active1, 0x402202L);
+ case 104:
+ if ((active1 & 0x8L) != 0L)
+ {
+ jjmatchedKind = 67;
+ jjmatchedPos = 3;
+ }
+ else if ((active1 & 0x4000000L) != 0L)
+ {
+ jjmatchedKind = 90;
+ jjmatchedPos = 3;
+ }
+ break;
+ case 105:
+ return jjMoveStringLiteralDfa4_0(active0, 0x400000010000200L, active1, 0x810L);
+ case 107:
+ return jjMoveStringLiteralDfa4_0(active0, 0x400L, active1, 0L);
+ case 108:
+ if ((active1 & 0x2000000000000000L) != 0L)
+ {
+ jjmatchedKind = 125;
+ jjmatchedPos = 3;
+ }
+ return jjMoveStringLiteralDfa4_0(active0, 0x4001000L, active1, 0L);
+ case 109:
+ if ((active0 & 0x80000000000L) != 0L)
+ {
+ jjmatchedKind = 43;
+ jjmatchedPos = 3;
+ }
+ return jjMoveStringLiteralDfa4_0(active0, 0x40000000000L, active1, 0x40L);
+ case 110:
+ if ((active1 & 0x1L) != 0L)
+ {
+ jjmatchedKind = 64;
+ jjmatchedPos = 3;
+ }
+ else if ((active1 & 0x20000L) != 0L)
+ {
+ jjmatchedKind = 81;
+ jjmatchedPos = 3;
+ }
+ return jjMoveStringLiteralDfa4_0(active0, 0x400840L, active1, 0x1000000L);
+ case 111:
+ if ((active0 & 0x20000000000000L) != 0L)
+ {
+ jjmatchedKind = 53;
+ jjmatchedPos = 3;
+ }
+ return jjMoveStringLiteralDfa4_0(active0, 0x808010002L, active1, 0x101000L);
+ case 112:
+ if ((active0 & 0x200000000L) != 0L)
+ {
+ jjmatchedKind = 33;
+ jjmatchedPos = 3;
+ }
+ return jjMoveStringLiteralDfa4_0(active0, 0x100000000300000L, active1, 0x10004L);
+ case 114:
+ return jjMoveStringLiteralDfa4_0(active0, 0x1000000000L, active1, 0x2000080L);
+ case 115:
+ return jjMoveStringLiteralDfa4_0(active0, 0x4000002000080090L, active1, 0x9000000000000000L);
+ case 116:
+ return jjMoveStringLiteralDfa4_0(active0, 0x410100000000L, active1, 0x8000000L);
+ case 117:
+ return jjMoveStringLiteralDfa4_0(active0, 0x200000000024L, active1, 0x100L);
+ case 118:
+ if ((active1 & 0x40000000L) != 0L)
+ {
+ jjmatchedKind = 94;
+ jjmatchedPos = 3;
+ }
+ break;
+ case 119:
+ return jjMoveStringLiteralDfa4_0(active0, 0x80000000000000L, active1, 0L);
+ default :
+ break;
+ }
+ return jjMoveNfa_0(0, 3);
+}
+private int jjMoveStringLiteralDfa4_0(long old0, long active0, long old1, long active1)
+{
+ if (((active0 &= old0) | (active1 &= old1)) == 0L)
+ return jjMoveNfa_0(0, 3);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return jjMoveNfa_0(0, 3);
+ }
+ switch(curChar)
+ {
+ case 69:
+ return jjMoveStringLiteralDfa5_0(active0, 0x400L, active1, 0L);
+ case 78:
+ return jjMoveStringLiteralDfa5_0(active0, 0x800L, active1, 0L);
+ case 97:
+ return jjMoveStringLiteralDfa5_0(active0, 0x40004300000L, active1, 0x40L);
+ case 98:
+ return jjMoveStringLiteralDfa5_0(active0, 0x20L, active1, 0L);
+ case 99:
+ return jjMoveStringLiteralDfa5_0(active0, 0x90L, active1, 0x2010L);
+ case 101:
+ if ((active0 & 0x20000L) != 0L)
+ {
+ jjmatchedKind = 17;
+ jjmatchedPos = 4;
+ }
+ else if ((active1 & 0x200L) != 0L)
+ {
+ jjmatchedKind = 73;
+ jjmatchedPos = 4;
+ }
+ else if ((active1 & 0x2000000L) != 0L)
+ {
+ jjmatchedKind = 89;
+ jjmatchedPos = 4;
+ }
+ else if ((active1 & 0x8000000L) != 0L)
+ {
+ jjmatchedKind = 91;
+ jjmatchedPos = 4;
+ }
+ else if ((active1 & 0x8000000000000000L) != 0L)
+ {
+ jjmatchedKind = 127;
+ jjmatchedPos = 4;
+ }
+ return jjMoveStringLiteralDfa5_0(active0, 0x4000010000480400L, active1, 0x80L);
+ case 103:
+ if ((active1 & 0x1000000L) != 0L)
+ {
+ jjmatchedKind = 88;
+ jjmatchedPos = 4;
+ }
+ return jjMoveStringLiteralDfa5_0(active0, 0x2000000000010040L, active1, 0L);
+ case 105:
+ return jjMoveStringLiteralDfa5_0(active0, 0x100000100000000L, active1, 0x1000000000000000L);
+ case 109:
+ if ((active0 & 0x1000000000000000L) != 0L)
+ {
+ jjmatchedKind = 60;
+ jjmatchedPos = 4;
+ }
+ break;
+ case 110:
+ if ((active1 & 0x100000L) != 0L)
+ {
+ jjmatchedKind = 84;
+ jjmatchedPos = 4;
+ }
+ return jjMoveStringLiteralDfa5_0(active0, 0x10000800L, active1, 0x1000L);
+ case 111:
+ return jjMoveStringLiteralDfa5_0(active0, 0x80000080000200L, active1, 0x10000L);
+ case 112:
+ if ((active0 & 0x200000000000L) != 0L)
+ {
+ jjmatchedKind = 45;
+ jjmatchedPos = 4;
+ }
+ break;
+ case 114:
+ if ((active0 & 0x8000000L) != 0L)
+ {
+ jjmatchedKind = 27;
+ jjmatchedPos = 4;
+ }
+ else if ((active1 & 0x2L) != 0L)
+ {
+ jjmatchedKind = 65;
+ jjmatchedPos = 4;
+ }
+ return jjMoveStringLiteralDfa5_0(active0, 0x18004800000006L, active1, 0x400100L);
+ case 115:
+ if ((active0 & 0x400000000000L) != 0L)
+ {
+ jjmatchedKind = 46;
+ jjmatchedPos = 4;
+ }
+ return jjMoveStringLiteralDfa5_0(active0, 0x4000001000000L, active1, 0x820L);
+ case 116:
+ if ((active0 & 0x400000000000000L) != 0L)
+ {
+ jjmatchedKind = 58;
+ jjmatchedPos = 4;
+ }
+ return jjMoveStringLiteralDfa5_0(active0, 0x102020800100L, active1, 0x200000L);
+ case 117:
+ return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x4L);
+ case 118:
+ return jjMoveStringLiteralDfa5_0(active0, 0x2000000L, active1, 0L);
+ case 120:
+ if ((active0 & 0x2000000000000L) != 0L)
+ {
+ jjmatchedKind = 49;
+ jjmatchedPos = 4;
+ }
+ break;
+ case 121:
+ if ((active0 & 0x1000L) != 0L)
+ {
+ jjmatchedKind = 12;
+ jjmatchedPos = 4;
+ }
+ else if ((active0 & 0x1000000000L) != 0L)
+ {
+ jjmatchedKind = 36;
+ jjmatchedPos = 4;
+ }
+ break;
+ default :
+ break;
+ }
+ return jjMoveNfa_0(0, 4);
+}
+private int jjMoveStringLiteralDfa5_0(long old0, long active0, long old1, long active1)
+{
+ if (((active0 &= old0) | (active1 &= old1)) == 0L)
+ return jjMoveNfa_0(0, 4);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return jjMoveNfa_0(0, 4);
+ }
+ switch(curChar)
+ {
+ case 69:
+ return jjMoveStringLiteralDfa6_0(active0, 0x800L, active1, 0L);
+ case 82:
+ if ((active0 & 0x400L) != 0L)
+ {
+ jjmatchedKind = 10;
+ jjmatchedPos = 5;
+ }
+ break;
+ case 99:
+ return jjMoveStringLiteralDfa6_0(active0, 0x800700000L, active1, 0L);
+ case 100:
+ if ((active0 & 0x200L) != 0L)
+ {
+ jjmatchedKind = 9;
+ jjmatchedPos = 5;
+ }
+ else if ((active0 & 0x80000L) != 0L)
+ {
+ jjmatchedKind = 19;
+ jjmatchedPos = 5;
+ }
+ return jjMoveStringLiteralDfa6_0(active0, 0x2L, active1, 0x1000L);
+ case 101:
+ if ((active0 & 0x40L) != 0L)
+ {
+ jjmatchedKind = 6;
+ jjmatchedPos = 5;
+ }
+ else if ((active0 & 0x800000L) != 0L)
+ {
+ jjmatchedKind = 23;
+ jjmatchedPos = 5;
+ }
+ else if ((active0 & 0x20000000L) != 0L)
+ {
+ jjmatchedKind = 29;
+ jjmatchedPos = 5;
+ }
+ else if ((active1 & 0x200000L) != 0L)
+ {
+ jjmatchedKind = 85;
+ jjmatchedPos = 5;
+ }
+ return jjMoveStringLiteralDfa6_0(active0, 0x3010800L, active1, 0L);
+ case 102:
+ return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x800L);
+ case 105:
+ return jjMoveStringLiteralDfa6_0(active0, 0x100010000100L, active1, 0L);
+ case 110:
+ if ((active1 & 0x100L) != 0L)
+ {
+ jjmatchedKind = 72;
+ jjmatchedPos = 5;
+ }
+ return jjMoveStringLiteralDfa6_0(active0, 0x110004180000004L, active1, 0x1000000000000000L);
+ case 111:
+ return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x20L);
+ case 114:
+ if ((active0 & 0x400L) != 0L)
+ {
+ jjmatchedKind = 10;
+ jjmatchedPos = 5;
+ }
+ else if ((active0 & 0x10000000000L) != 0L)
+ {
+ jjmatchedKind = 40;
+ jjmatchedPos = 5;
+ }
+ return jjMoveStringLiteralDfa6_0(active0, 0x2080000004000090L, active1, 0x10040L);
+ case 115:
+ if ((active0 & 0x2000000000L) != 0L)
+ {
+ jjmatchedKind = 37;
+ jjmatchedPos = 5;
+ }
+ return jjMoveStringLiteralDfa6_0(active0, 0x20L, active1, 0x80L);
+ case 116:
+ if ((active0 & 0x40000000000L) != 0L)
+ {
+ jjmatchedKind = 42;
+ jjmatchedPos = 5;
+ }
+ else if ((active0 & 0x8000000000000L) != 0L)
+ {
+ jjmatchedKind = 51;
+ jjmatchedPos = 5;
+ }
+ else if ((active0 & 0x4000000000000000L) != 0L)
+ {
+ jjmatchedKind = 62;
+ jjmatchedPos = 5;
+ }
+ else if ((active1 & 0x4L) != 0L)
+ {
+ jjmatchedKind = 66;
+ jjmatchedPos = 5;
+ }
+ else if ((active1 & 0x2000L) != 0L)
+ {
+ jjmatchedKind = 77;
+ jjmatchedPos = 5;
+ }
+ else if ((active1 & 0x400000L) != 0L)
+ {
+ jjmatchedKind = 86;
+ jjmatchedPos = 5;
+ }
+ return jjMoveStringLiteralDfa6_0(active0, 0x4000000000000L, active1, 0L);
+ case 121:
+ if ((active1 & 0x10L) != 0L)
+ {
+ jjmatchedKind = 68;
+ jjmatchedPos = 5;
+ }
+ break;
+ default :
+ break;
+ }
+ return jjMoveNfa_0(0, 5);
+}
+private int jjMoveStringLiteralDfa6_0(long old0, long active0, long old1, long active1)
+{
+ if (((active0 &= old0) | (active1 &= old1)) == 0L)
+ return jjMoveNfa_0(0, 5);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return jjMoveNfa_0(0, 5);
+ }
+ switch(curChar)
+ {
+ case 76:
+ if ((active0 & 0x800L) != 0L)
+ {
+ jjmatchedKind = 11;
+ jjmatchedPos = 6;
+ }
+ break;
+ case 97:
+ return jjMoveStringLiteralDfa7_0(active0, 0x10004000000000L, active1, 0x11000L);
+ case 99:
+ return jjMoveStringLiteralDfa7_0(active0, 0x100000020L, active1, 0L);
+ case 100:
+ if ((active0 & 0x80000000000000L) != 0L)
+ {
+ jjmatchedKind = 55;
+ jjmatchedPos = 6;
+ }
+ break;
+ case 101:
+ if ((active0 & 0x4000000L) != 0L)
+ {
+ jjmatchedKind = 26;
+ jjmatchedPos = 6;
+ }
+ return jjMoveStringLiteralDfa7_0(active0, 0x800000000L, active1, 0L);
+ case 103:
+ if ((active0 & 0x100000000000000L) != 0L)
+ {
+ jjmatchedKind = 56;
+ jjmatchedPos = 6;
+ }
+ else if ((active1 & 0x1000000000000000L) != 0L)
+ {
+ jjmatchedKind = 124;
+ jjmatchedPos = 6;
+ }
+ break;
+ case 104:
+ if ((active1 & 0x80L) != 0L)
+ {
+ jjmatchedKind = 71;
+ jjmatchedPos = 6;
+ }
+ break;
+ case 105:
+ return jjMoveStringLiteralDfa7_0(active0, 0x4000000000094L, active1, 0x800L);
+ case 108:
+ if ((active0 & 0x800L) != 0L)
+ {
+ jjmatchedKind = 11;
+ jjmatchedPos = 6;
+ }
+ break;
+ case 110:
+ return jjMoveStringLiteralDfa7_0(active0, 0x80010000L, active1, 0L);
+ case 111:
+ return jjMoveStringLiteralDfa7_0(active0, 0x2000100000000000L, active1, 0L);
+ case 114:
+ return jjMoveStringLiteralDfa7_0(active0, 0x2000000L, active1, 0x20L);
+ case 115:
+ if ((active0 & 0x2L) != 0L)
+ {
+ jjmatchedKind = 1;
+ jjmatchedPos = 6;
+ }
+ break;
+ case 116:
+ if ((active0 & 0x100000L) != 0L)
+ {
+ jjmatchedKind = 20;
+ jjmatchedPos = 6;
+ }
+ else if ((active0 & 0x400000L) != 0L)
+ {
+ jjmatchedKind = 22;
+ jjmatchedPos = 6;
+ }
+ else if ((active0 & 0x1000000L) != 0L)
+ {
+ jjmatchedKind = 24;
+ jjmatchedPos = 6;
+ }
+ return jjMoveStringLiteralDfa7_0(active0, 0x10200100L, active1, 0L);
+ case 121:
+ if ((active1 & 0x40L) != 0L)
+ {
+ jjmatchedKind = 70;
+ jjmatchedPos = 6;
+ }
+ break;
+ default :
+ break;
+ }
+ return jjMoveNfa_0(0, 6);
+}
+private int jjMoveStringLiteralDfa7_0(long old0, long active0, long old1, long active1)
+{
+ if (((active0 &= old0) | (active1 &= old1)) == 0L)
+ return jjMoveNfa_0(0, 6);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return jjMoveNfa_0(0, 6);
+ }
+ switch(curChar)
+ {
+ case 98:
+ return jjMoveStringLiteralDfa8_0(active0, 0x10L, active1, 0L);
+ case 100:
+ if ((active0 & 0x800000000L) != 0L)
+ {
+ jjmatchedKind = 35;
+ jjmatchedPos = 7;
+ }
+ break;
+ case 101:
+ return jjMoveStringLiteralDfa8_0(active0, 0x80010000L, active1, 0x800L);
+ case 105:
+ return jjMoveStringLiteralDfa8_0(active0, 0x10200100L, active1, 0L);
+ case 108:
+ if ((active0 & 0x4000000000L) != 0L)
+ {
+ jjmatchedKind = 38;
+ jjmatchedPos = 7;
+ }
+ else if ((active0 & 0x10000000000000L) != 0L)
+ {
+ jjmatchedKind = 52;
+ jjmatchedPos = 7;
+ }
+ break;
+ case 110:
+ if ((active0 & 0x100000000000L) != 0L)
+ {
+ jjmatchedKind = 44;
+ jjmatchedPos = 7;
+ }
+ return jjMoveStringLiteralDfa8_0(active0, 0x4L, active1, 0L);
+ case 111:
+ return jjMoveStringLiteralDfa8_0(active0, 0x4000000000000L, active1, 0L);
+ case 112:
+ return jjMoveStringLiteralDfa8_0(active0, 0x80L, active1, 0L);
+ case 114:
+ return jjMoveStringLiteralDfa8_0(active0, 0x20L, active1, 0x11000L);
+ case 115:
+ return jjMoveStringLiteralDfa8_0(active0, 0x2000000L, active1, 0L);
+ case 116:
+ if ((active0 & 0x100000000L) != 0L)
+ {
+ jjmatchedKind = 32;
+ jjmatchedPos = 7;
+ }
+ return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x20L);
+ case 117:
+ return jjMoveStringLiteralDfa8_0(active0, 0x2000000000000000L, active1, 0L);
+ default :
+ break;
+ }
+ return jjMoveNfa_0(0, 7);
+}
+private int jjMoveStringLiteralDfa8_0(long old0, long active0, long old1, long active1)
+{
+ if (((active0 &= old0) | (active1 &= old1)) == 0L)
+ return jjMoveNfa_0(0, 7);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return jjMoveNfa_0(0, 7);
+ }
+ switch(curChar)
+ {
+ case 99:
+ return jjMoveStringLiteralDfa9_0(active0, 0x80000000L, active1, 0L);
+ case 101:
+ if ((active0 & 0x10L) != 0L)
+ {
+ jjmatchedKind = 4;
+ jjmatchedPos = 8;
+ }
+ else if ((active0 & 0x2000000L) != 0L)
+ {
+ jjmatchedKind = 25;
+ jjmatchedPos = 8;
+ }
+ return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0x20L);
+ case 103:
+ if ((active0 & 0x4L) != 0L)
+ {
+ jjmatchedKind = 2;
+ jjmatchedPos = 8;
+ }
+ break;
+ case 105:
+ return jjMoveStringLiteralDfa9_0(active0, 0x20L, active1, 0L);
+ case 110:
+ if ((active0 & 0x4000000000000L) != 0L)
+ {
+ jjmatchedKind = 50;
+ jjmatchedPos = 8;
+ }
+ break;
+ case 111:
+ return jjMoveStringLiteralDfa9_0(active0, 0x10200000L, active1, 0L);
+ case 112:
+ if ((active0 & 0x2000000000000000L) != 0L)
+ {
+ jjmatchedKind = 61;
+ jjmatchedPos = 8;
+ }
+ break;
+ case 114:
+ return jjMoveStringLiteralDfa9_0(active0, 0x10000L, active1, 0L);
+ case 115:
+ if ((active1 & 0x800L) != 0L)
+ {
+ jjmatchedKind = 75;
+ jjmatchedPos = 8;
+ }
+ break;
+ case 116:
+ return jjMoveStringLiteralDfa9_0(active0, 0x80L, active1, 0L);
+ case 118:
+ return jjMoveStringLiteralDfa9_0(active0, 0x100L, active1, 0L);
+ case 121:
+ if ((active1 & 0x1000L) != 0L)
+ {
+ jjmatchedKind = 76;
+ jjmatchedPos = 8;
+ }
+ else if ((active1 & 0x10000L) != 0L)
+ {
+ jjmatchedKind = 80;
+ jjmatchedPos = 8;
+ }
+ break;
+ default :
+ break;
+ }
+ return jjMoveNfa_0(0, 8);
+}
+private int jjMoveStringLiteralDfa9_0(long old0, long active0, long old1, long active1)
+{
+ if (((active0 &= old0) | (active1 &= old1)) == 0L)
+ return jjMoveNfa_0(0, 8);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return jjMoveNfa_0(0, 8);
+ }
+ switch(curChar)
+ {
+ case 97:
+ return jjMoveStringLiteralDfa10_0(active0, 0x10000L, active1, 0L);
+ case 98:
+ return jjMoveStringLiteralDfa10_0(active0, 0x20L, active1, 0L);
+ case 100:
+ if ((active1 & 0x20L) != 0L)
+ {
+ jjmatchedKind = 69;
+ jjmatchedPos = 9;
+ }
+ break;
+ case 101:
+ if ((active0 & 0x100L) != 0L)
+ {
+ jjmatchedKind = 8;
+ jjmatchedPos = 9;
+ }
+ break;
+ case 105:
+ return jjMoveStringLiteralDfa10_0(active0, 0x80L, active1, 0L);
+ case 110:
+ if ((active0 & 0x200000L) != 0L)
+ {
+ jjmatchedKind = 21;
+ jjmatchedPos = 9;
+ }
+ else if ((active0 & 0x10000000L) != 0L)
+ {
+ jjmatchedKind = 28;
+ jjmatchedPos = 9;
+ }
+ break;
+ case 116:
+ if ((active0 & 0x80000000L) != 0L)
+ {
+ jjmatchedKind = 31;
+ jjmatchedPos = 9;
+ }
+ break;
+ default :
+ break;
+ }
+ return jjMoveNfa_0(0, 9);
+}
+private int jjMoveStringLiteralDfa10_0(long old0, long active0, long old1, long active1)
+{
+ if (((active0 &= old0) | (active1 &= old1)) == 0L)
+ return jjMoveNfa_0(0, 9);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return jjMoveNfa_0(0, 9);
+ }
+ switch(curChar)
+ {
+ case 101:
+ if ((active0 & 0x20L) != 0L)
+ {
+ jjmatchedKind = 5;
+ jjmatchedPos = 10;
+ }
+ break;
+ case 111:
+ return jjMoveStringLiteralDfa11_0(active0, 0x80L);
+ case 116:
+ return jjMoveStringLiteralDfa11_0(active0, 0x10000L);
+ default :
+ break;
+ }
+ return jjMoveNfa_0(0, 10);
+}
+private int jjMoveStringLiteralDfa11_0(long old0, long active0)
+{
+ if (((active0 &= old0)) == 0L)
+ return jjMoveNfa_0(0, 10);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return jjMoveNfa_0(0, 10);
+ }
+ switch(curChar)
+ {
+ case 101:
+ return jjMoveStringLiteralDfa12_0(active0, 0x10000L);
+ case 110:
+ if ((active0 & 0x80L) != 0L)
+ {
+ jjmatchedKind = 7;
+ jjmatchedPos = 11;
+ }
+ break;
+ default :
+ break;
+ }
+ return jjMoveNfa_0(0, 11);
+}
+private int jjMoveStringLiteralDfa12_0(long old0, long active0)
+{
+ if (((active0 &= old0)) == 0L)
+ return jjMoveNfa_0(0, 11);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return jjMoveNfa_0(0, 11);
+ }
+ switch(curChar)
+ {
+ case 100:
+ if ((active0 & 0x10000L) != 0L)
+ {
+ jjmatchedKind = 16;
+ jjmatchedPos = 12;
+ }
+ break;
+ default :
+ break;
+ }
+ return jjMoveNfa_0(0, 12);
+}
+static final long[] jjbitVec0 = {
+ 0xfffffffffffffffeL, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL
+};
+static final long[] jjbitVec2 = {
+ 0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
+};
+private int jjMoveNfa_0(int startState, int curPos)
+{
+ int strKind = jjmatchedKind;
+ int strPos = jjmatchedPos;
+ int seenUpto;
+ input_stream.backup(seenUpto = curPos + 1);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { throw new Error("Internal Error"); }
+ curPos = 0;
+ int startsAt = 0;
+ jjnewStateCnt = 54;
+ int i = 1;
+ jjstateSet[0] = startState;
+ int kind = 0x7fffffff;
+ for (;;)
+ {
+ if (++jjround == 0x7fffffff)
+ ReInitRounds();
+ if (curChar < 64)
+ {
+ long l = 1L << curChar;
+ do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if ((0x3ff000000000000L & l) != 0L)
+ {
+ if (kind > 123)
+ kind = 123;
+ jjCheckNAddStates(0, 8);
+ }
+ else if ((0x201000000000L & l) != 0L)
+ {
+ if (kind > 133)
+ kind = 133;
+ }
+ else if (curChar == 47)
+ jjAddStates(9, 10);
+ else if (curChar == 46)
+ jjCheckNAddTwoStates(43, 44);
+ else if (curChar == 39)
+ jjCheckNAddStates(11, 13);
+ else if (curChar == 34)
+ jjCheckNAddStates(14, 16);
+ if (curChar == 36)
+ jjstateSet[jjnewStateCnt++] = 28;
+ break;
+ case 1:
+ case 5:
+ if (curChar == 34)
+ jjCheckNAddStates(14, 16);
+ break;
+ case 2:
+ if ((0xfffffffbffffffffL & l) != 0L)
+ jjCheckNAddStates(14, 16);
+ break;
+ case 3:
+ if (curChar == 34 && kind > 134)
+ kind = 134;
+ break;
+ case 7:
+ if (curChar == 47)
+ jjCheckNAddStates(14, 16);
+ break;
+ case 13:
+ case 17:
+ if (curChar == 39)
+ jjCheckNAddStates(11, 13);
+ break;
+ case 14:
+ if ((0xffffff7fffffffffL & l) != 0L)
+ jjCheckNAddStates(11, 13);
+ break;
+ case 15:
+ if (curChar == 39 && kind > 134)
+ kind = 134;
+ break;
+ case 19:
+ if (curChar == 47)
+ jjCheckNAddStates(11, 13);
+ break;
+ case 26:
+ if ((0x3ff201000000000L & l) == 0L)
+ break;
+ if (kind > 144)
+ kind = 144;
+ jjstateSet[jjnewStateCnt++] = 26;
+ break;
+ case 27:
+ if (curChar == 36)
+ jjstateSet[jjnewStateCnt++] = 28;
+ break;
+ case 29:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 145)
+ kind = 145;
+ jjstateSet[jjnewStateCnt++] = 29;
+ break;
+ case 30:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 123)
+ kind = 123;
+ jjCheckNAddStates(0, 8);
+ break;
+ case 31:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 123)
+ kind = 123;
+ jjCheckNAdd(31);
+ break;
+ case 32:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 129)
+ kind = 129;
+ jjCheckNAdd(32);
+ break;
+ case 33:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 129)
+ kind = 129;
+ jjCheckNAddTwoStates(33, 34);
+ break;
+ case 34:
+ if (curChar == 46)
+ jjCheckNAdd(35);
+ break;
+ case 35:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 129)
+ kind = 129;
+ jjCheckNAdd(35);
+ break;
+ case 36:
+ if ((0x3ff000000000000L & l) != 0L)
+ jjCheckNAddTwoStates(36, 37);
+ break;
+ case 38:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 130)
+ kind = 130;
+ jjCheckNAddTwoStates(38, 39);
+ break;
+ case 39:
+ if (curChar == 46)
+ jjCheckNAdd(40);
+ break;
+ case 40:
+ if ((0x3ff000000000000L & l) != 0L)
+ jjCheckNAddTwoStates(40, 37);
+ break;
+ case 41:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 131)
+ kind = 131;
+ jjCheckNAdd(41);
+ break;
+ case 42:
+ if (curChar == 46)
+ jjCheckNAddTwoStates(43, 44);
+ break;
+ case 43:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 129)
+ kind = 129;
+ jjCheckNAdd(43);
+ break;
+ case 44:
+ if ((0x3ff000000000000L & l) != 0L)
+ jjCheckNAddTwoStates(44, 37);
+ break;
+ case 45:
+ if (curChar == 47)
+ jjAddStates(9, 10);
+ break;
+ case 46:
+ if (curChar == 47)
+ jjCheckNAddTwoStates(47, 48);
+ break;
+ case 47:
+ if ((0xfffffffffffffbffL & l) != 0L)
+ jjCheckNAddTwoStates(47, 48);
+ break;
+ case 48:
+ if (curChar == 10 && kind > 150)
+ kind = 150;
+ break;
+ case 49:
+ if (curChar != 47)
+ break;
+ if (kind > 151)
+ kind = 151;
+ jjCheckNAddStates(17, 19);
+ break;
+ case 50:
+ if ((0xffffffffffffdbffL & l) == 0L)
+ break;
+ if (kind > 151)
+ kind = 151;
+ jjCheckNAddStates(17, 19);
+ break;
+ case 51:
+ if ((0x2400L & l) != 0L && kind > 151)
+ kind = 151;
+ break;
+ case 52:
+ if (curChar == 10 && kind > 151)
+ kind = 151;
+ break;
+ case 53:
+ if (curChar == 13)
+ jjstateSet[jjnewStateCnt++] = 52;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else if (curChar < 128)
+ {
+ long l = 1L << (curChar & 077);
+ do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if ((0x7fffffe07fffffeL & l) != 0L)
+ {
+ if (kind > 144)
+ kind = 144;
+ jjCheckNAdd(26);
+ }
+ else if (curChar == 95)
+ {
+ if (kind > 133)
+ kind = 133;
+ }
+ break;
+ case 2:
+ if ((0xffffffffefffffffL & l) != 0L)
+ jjCheckNAddStates(14, 16);
+ break;
+ case 4:
+ if (curChar == 92)
+ jjAddStates(20, 27);
+ break;
+ case 6:
+ if (curChar == 92)
+ jjCheckNAddStates(14, 16);
+ break;
+ case 8:
+ if (curChar == 98)
+ jjCheckNAddStates(14, 16);
+ break;
+ case 9:
+ if (curChar == 102)
+ jjCheckNAddStates(14, 16);
+ break;
+ case 10:
+ if (curChar == 110)
+ jjCheckNAddStates(14, 16);
+ break;
+ case 11:
+ if (curChar == 114)
+ jjCheckNAddStates(14, 16);
+ break;
+ case 12:
+ if (curChar == 116)
+ jjCheckNAddStates(14, 16);
+ break;
+ case 14:
+ if ((0xffffffffefffffffL & l) != 0L)
+ jjCheckNAddStates(11, 13);
+ break;
+ case 16:
+ if (curChar == 92)
+ jjAddStates(28, 35);
+ break;
+ case 18:
+ if (curChar == 92)
+ jjCheckNAddStates(11, 13);
+ break;
+ case 20:
+ if (curChar == 98)
+ jjCheckNAddStates(11, 13);
+ break;
+ case 21:
+ if (curChar == 102)
+ jjCheckNAddStates(11, 13);
+ break;
+ case 22:
+ if (curChar == 110)
+ jjCheckNAddStates(11, 13);
+ break;
+ case 23:
+ if (curChar == 114)
+ jjCheckNAddStates(11, 13);
+ break;
+ case 24:
+ if (curChar == 116)
+ jjCheckNAddStates(11, 13);
+ break;
+ case 25:
+ if ((0x7fffffe07fffffeL & l) == 0L)
+ break;
+ if (kind > 144)
+ kind = 144;
+ jjCheckNAdd(26);
+ break;
+ case 26:
+ if ((0x7fffffe87fffffeL & l) == 0L)
+ break;
+ if (kind > 144)
+ kind = 144;
+ jjCheckNAdd(26);
+ break;
+ case 28:
+ if ((0x7fffffe07fffffeL & l) == 0L)
+ break;
+ if (kind > 145)
+ kind = 145;
+ jjCheckNAdd(29);
+ break;
+ case 29:
+ if ((0x7fffffe87fffffeL & l) == 0L)
+ break;
+ if (kind > 145)
+ kind = 145;
+ jjCheckNAdd(29);
+ break;
+ case 37:
+ if ((0x4000000040L & l) != 0L && kind > 130)
+ kind = 130;
+ break;
+ case 47:
+ jjAddStates(36, 37);
+ break;
+ case 50:
+ if (kind > 151)
+ kind = 151;
+ jjAddStates(17, 19);
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else
+ {
+ int hiByte = (int)(curChar >> 8);
+ int i1 = hiByte >> 6;
+ long l1 = 1L << (hiByte & 077);
+ int i2 = (curChar & 0xff) >> 6;
+ long l2 = 1L << (curChar & 077);
+ do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 2:
+ if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+ jjAddStates(14, 16);
+ break;
+ case 14:
+ if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+ jjAddStates(11, 13);
+ break;
+ case 47:
+ if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+ jjAddStates(36, 37);
+ break;
+ case 50:
+ if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
+ break;
+ if (kind > 151)
+ kind = 151;
+ jjAddStates(17, 19);
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ if (kind != 0x7fffffff)
+ {
+ jjmatchedKind = kind;
+ jjmatchedPos = curPos;
+ kind = 0x7fffffff;
+ }
+ ++curPos;
+ if ((i = jjnewStateCnt) == (startsAt = 54 - (jjnewStateCnt = startsAt)))
+ break;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { break; }
+ }
+ if (jjmatchedPos > strPos)
+ return curPos;
+
+ int toRet = Math.max(curPos, seenUpto);
+
+ if (curPos < toRet)
+ for (i = toRet - Math.min(curPos, seenUpto); i-- > 0; )
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { throw new Error("Internal Error : Please send a bug report."); }
+
+ if (jjmatchedPos < strPos)
+ {
+ jjmatchedKind = strKind;
+ jjmatchedPos = strPos;
+ }
+ else if (jjmatchedPos == strPos && jjmatchedKind > strKind)
+ jjmatchedKind = strKind;
+
+ return toRet;
+}
+private int jjMoveStringLiteralDfa0_1()
+{
+ switch(curChar)
+ {
+ case 9:
+ jjmatchedKind = 147;
+ return jjMoveNfa_1(0, 0);
+ case 10:
+ jjmatchedKind = 149;
+ return jjMoveNfa_1(0, 0);
+ case 13:
+ jjmatchedKind = 148;
+ return jjMoveNfa_1(0, 0);
+ case 32:
+ jjmatchedKind = 146;
+ return jjMoveNfa_1(0, 0);
+ case 33:
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x1000000000000L, 0x0L);
+ case 35:
+ jjmatchedKind = 118;
+ return jjMoveNfa_1(0, 0);
+ case 37:
+ jjmatchedKind = 96;
+ return jjMoveNfa_1(0, 0);
+ case 40:
+ jjmatchedKind = 99;
+ return jjMoveNfa_1(0, 0);
+ case 41:
+ jjmatchedKind = 100;
+ return jjMoveNfa_1(0, 0);
+ case 42:
+ jjmatchedKind = 97;
+ return jjMoveNfa_1(0, 0);
+ case 43:
+ jjmatchedKind = 98;
+ return jjMoveNfa_1(0, 0);
+ case 44:
+ jjmatchedKind = 104;
+ return jjMoveNfa_1(0, 0);
+ case 45:
+ jjmatchedKind = 95;
+ return jjMoveNfa_1(0, 0);
+ case 46:
+ jjmatchedKind = 105;
+ return jjMoveNfa_1(0, 0);
+ case 47:
+ jjmatchedKind = 93;
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x1000000L);
+ case 58:
+ jjmatchedKind = 103;
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x4000000000000L, 0x0L);
+ case 60:
+ jjmatchedKind = 107;
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x200000000000L, 0x0L);
+ case 61:
+ jjmatchedKind = 111;
+ return jjMoveNfa_1(0, 0);
+ case 62:
+ jjmatchedKind = 108;
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x400000000000L, 0x0L);
+ case 63:
+ jjmatchedKind = 106;
+ return jjMoveNfa_1(0, 0);
+ case 64:
+ jjmatchedKind = 117;
+ return jjMoveNfa_1(0, 0);
+ case 66:
+ return jjMoveStringLiteralDfa1_1(0x400L, 0x0L, 0x0L);
+ case 67:
+ return jjMoveStringLiteralDfa1_1(0x800L, 0x0L, 0x0L);
+ case 91:
+ jjmatchedKind = 101;
+ return jjMoveNfa_1(0, 0);
+ case 93:
+ jjmatchedKind = 102;
+ return jjMoveNfa_1(0, 0);
+ case 94:
+ jjmatchedKind = 92;
+ return jjMoveNfa_1(0, 0);
+ case 97:
+ return jjMoveStringLiteralDfa1_1(0x1f000L, 0x8000000000000L, 0x0L);
+ case 98:
+ return jjMoveStringLiteralDfa1_1(0x60400L, 0x0L, 0x0L);
+ case 99:
+ return jjMoveStringLiteralDfa1_1(0xf80800L, 0x0L, 0x0L);
+ case 100:
+ return jjMoveStringLiteralDfa1_1(0x3ff000000L, 0x0L, 0x0L);
+ case 101:
+ return jjMoveStringLiteralDfa1_1(0x7c00000000L, 0x0L, 0x0L);
+ case 102:
+ return jjMoveStringLiteralDfa1_1(0x1f8000000000L, 0x8000000000000000L, 0x0L);
+ case 103:
+ return jjMoveStringLiteralDfa1_1(0x200000000000L, 0x0L, 0x0L);
+ case 104:
+ return jjMoveStringLiteralDfa1_1(0x400000000000L, 0x0L, 0x0L);
+ case 105:
+ return jjMoveStringLiteralDfa1_1(0x3f800000000000L, 0x40000000L, 0x0L);
+ case 107:
+ return jjMoveStringLiteralDfa1_1(0x1c0000000000000L, 0x0L, 0x0L);
+ case 108:
+ return jjMoveStringLiteralDfa1_1(0xe00000000000000L, 0x0L, 0x0L);
+ case 109:
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x1000000000000000L, 0x0L);
+ case 110:
+ return jjMoveStringLiteralDfa1_1(0x3000000000000000L, 0x2000000000000000L, 0x0L);
+ case 111:
+ return jjMoveStringLiteralDfa1_1(0xc000000000000000L, 0x10000000000007L, 0x0L);
+ case 112:
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x78L, 0x0L);
+ case 114:
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x780L, 0x0L);
+ case 115:
+ return jjMoveStringLiteralDfa1_1(0x0L, 0xf800L, 0x0L);
+ case 116:
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x40000000000f0000L, 0x0L);
+ case 117:
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x1f00000L, 0x0L);
+ case 119:
+ return jjMoveStringLiteralDfa1_1(0x0L, 0xe000000L, 0x0L);
+ case 123:
+ jjmatchedKind = 119;
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x200000000000000L, 0x0L);
+ case 125:
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x400000000000000L, 0x0L);
+ case 126:
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x2000000000000L, 0x0L);
+ default :
+ return jjMoveNfa_1(0, 0);
+ }
+}
+private int jjMoveStringLiteralDfa1_1(long active0, long active1, long active2)
+{
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return jjMoveNfa_1(0, 0);
+ }
+ switch(curChar)
+ {
+ case 42:
+ if ((active2 & 0x1000000L) != 0L)
+ {
+ jjmatchedKind = 152;
+ jjmatchedPos = 1;
+ }
+ break;
+ case 61:
+ if ((active1 & 0x200000000000L) != 0L)
+ {
+ jjmatchedKind = 109;
+ jjmatchedPos = 1;
+ }
+ else if ((active1 & 0x400000000000L) != 0L)
+ {
+ jjmatchedKind = 110;
+ jjmatchedPos = 1;
+ }
+ else if ((active1 & 0x1000000000000L) != 0L)
+ {
+ jjmatchedKind = 112;
+ jjmatchedPos = 1;
+ }
+ else if ((active1 & 0x2000000000000L) != 0L)
+ {
+ jjmatchedKind = 113;
+ jjmatchedPos = 1;
+ }
+ else if ((active1 & 0x4000000000000L) != 0L)
+ {
+ jjmatchedKind = 114;
+ jjmatchedPos = 1;
+ }
+ break;
+ case 72:
+ return jjMoveStringLiteralDfa2_1(active0, 0x800L, active1, 0L, active2, 0L);
+ case 82:
+ return jjMoveStringLiteralDfa2_1(active0, 0x400L, active1, 0L, active2, 0L);
+ case 97:
+ return jjMoveStringLiteralDfa2_1(active0, 0x3000000L, active1, 0x8000000000000808L, active2, 0L);
+ case 100:
+ return jjMoveStringLiteralDfa2_1(active0, 0L, active1, 0x40000000L, active2, 0L);
+ case 101:
+ return jjMoveStringLiteralDfa2_1(active0, 0x3c000807c000000L, active1, 0x17180L, active2, 0L);
+ case 102:
+ if ((active0 & 0x800000000000L) != 0L)
+ {
+ jjmatchedKind = 47;
+ jjmatchedPos = 1;
+ }
+ return jjMoveStringLiteralDfa2_1(active0, 0x4000000000000000L, active1, 0L, active2, 0L);
+ case 103:
+ return jjMoveStringLiteralDfa2_1(active0, 0x1000000000000000L, active1, 0L, active2, 0L);
+ case 104:
+ return jjMoveStringLiteralDfa2_1(active0, 0x800L, active1, 0x2020000L, active2, 0L);
+ case 105:
+ return jjMoveStringLiteralDfa2_1(active0, 0x400410180000000L, active1, 0x1000000004000000L, active2, 0L);
+ case 108:
+ return jjMoveStringLiteralDfa2_1(active0, 0x400080000L, active1, 0L, active2, 0L);
+ case 110:
+ if ((active0 & 0x1000000000000L) != 0L)
+ {
+ jjmatchedKind = 48;
+ jjmatchedPos = 1;
+ }
+ else if ((active0 & 0x8000000000000000L) != 0L)
+ {
+ jjmatchedKind = 63;
+ jjmatchedPos = 1;
+ }
+ return jjMoveStringLiteralDfa2_1(active0, 0x3e000800000000L, active1, 0x8000000100000L, active2, 0L);
+ case 111:
+ if ((active1 & 0x40000L) != 0L)
+ {
+ jjmatchedKind = 82;
+ jjmatchedPos = 1;
+ }
+ return jjMoveStringLiteralDfa2_1(active0, 0x2800060000700000L, active1, 0x8010L, active2, 0L);
+ case 112:
+ return jjMoveStringLiteralDfa2_1(active0, 0x1000L, active1, 0x600001L, active2, 0L);
+ case 114:
+ if ((active1 & 0x10000000000000L) != 0L)
+ {
+ jjmatchedKind = 116;
+ jjmatchedPos = 1;
+ }
+ return jjMoveStringLiteralDfa2_1(active0, 0x280200800400L, active1, 0x4000000008000062L, active2, 0L);
+ case 115:
+ if ((active0 & 0x2000L) != 0L)
+ {
+ jjmatchedKind = 13;
+ jjmatchedPos = 1;
+ }
+ return jjMoveStringLiteralDfa2_1(active0, 0x4000L, active1, 0x1800000L, active2, 0L);
+ case 116:
+ if ((active0 & 0x8000L) != 0L)
+ {
+ jjmatchedKind = 15;
+ jjmatchedPos = 1;
+ }
+ return jjMoveStringLiteralDfa2_1(active0, 0x20000L, active1, 0x200L, active2, 0L);
+ case 117:
+ return jjMoveStringLiteralDfa2_1(active0, 0x100000010000L, active1, 0x2000000000000404L, active2, 0L);
+ case 118:
+ return jjMoveStringLiteralDfa2_1(active0, 0x1000000000L, active1, 0L, active2, 0L);
+ case 120:
+ return jjMoveStringLiteralDfa2_1(active0, 0x6000000000L, active1, 0L, active2, 0L);
+ case 121:
+ if ((active0 & 0x40000L) != 0L)
+ {
+ jjmatchedKind = 18;
+ jjmatchedPos = 1;
+ }
+ return jjMoveStringLiteralDfa2_1(active0, 0L, active1, 0x80000L, active2, 0L);
+ case 123:
+ if ((active1 & 0x200000000000000L) != 0L)
+ {
+ jjmatchedKind = 121;
+ jjmatchedPos = 1;
+ }
+ break;
+ case 125:
+ if ((active1 & 0x400000000000000L) != 0L)
+ {
+ jjmatchedKind = 122;
+ jjmatchedPos = 1;
+ }
+ break;
+ default :
+ break;
+ }
+ return jjMoveNfa_1(0, 1);
+}
+private int jjMoveStringLiteralDfa2_1(long old0, long active0, long old1, long active1, long old2, long active2)
+{
+ if (((active0 &= old0) | (active1 &= old1) | (active2 &= old2)) == 0L)
+ return jjMoveNfa_1(0, 1);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return jjMoveNfa_1(0, 1);
+ }
+ switch(curChar)
+ {
+ case 65:
+ return jjMoveStringLiteralDfa3_1(active0, 0x800L, active1, 0L);
+ case 79:
+ return jjMoveStringLiteralDfa3_1(active0, 0x400L, active1, 0L);
+ case 97:
+ return jjMoveStringLiteralDfa3_1(active0, 0x800000000000800L, active1, 0L);
+ case 99:
+ if ((active0 & 0x4000L) != 0L)
+ {
+ jjmatchedKind = 14;
+ jjmatchedPos = 2;
+ }
+ return jjMoveStringLiteralDfa3_1(active0, 0xc000000L, active1, 0x1000L);
+ case 100:
+ if ((active1 & 0x8000000000000L) != 0L)
+ {
+ jjmatchedKind = 115;
+ jjmatchedPos = 2;
+ }
+ return jjMoveStringLiteralDfa3_1(active0, 0x2002000000000000L, active1, 0x200002L);
+ case 101:
+ if ((active1 & 0x800000L) != 0L)
+ {
+ jjmatchedKind = 87;
+ jjmatchedPos = 2;
+ }
+ return jjMoveStringLiteralDfa3_1(active0, 0x100009000800000L, active1, 0x2020021L);
+ case 102:
+ return jjMoveStringLiteralDfa3_1(active0, 0x4000000810000000L, active1, 0x80L);
+ case 103:
+ return jjMoveStringLiteralDfa3_1(active0, 0x4000000000000L, active1, 0L);
+ case 105:
+ return jjMoveStringLiteralDfa3_1(active0, 0x2000000000L, active1, 0x49100040L);
+ case 108:
+ return jjMoveStringLiteralDfa3_1(active0, 0x10020000000L, active1, 0xa000000000002010L);
+ case 109:
+ return jjMoveStringLiteralDfa3_1(active0, 0x400000000300000L, active1, 0x18000L);
+ case 110:
+ if ((active1 & 0x400L) != 0L)
+ {
+ jjmatchedKind = 74;
+ jjmatchedPos = 2;
+ }
+ return jjMoveStringLiteralDfa3_1(active0, 0x500000400000L, active1, 0L);
+ case 111:
+ return jjMoveStringLiteralDfa3_1(active0, 0x280200080400L, active1, 0L);
+ case 112:
+ return jjMoveStringLiteralDfa3_1(active0, 0x1000L, active1, 0x80000L);
+ case 114:
+ if ((active0 & 0x20000000000L) != 0L)
+ {
+ jjmatchedKind = 41;
+ jjmatchedPos = 2;
+ }
+ return jjMoveStringLiteralDfa3_1(active0, 0x1000040000020000L, active1, 0x200L);
+ case 115:
+ return jjMoveStringLiteralDfa3_1(active0, 0x80005c0000000L, active1, 0x1000000000400000L);
+ case 116:
+ if ((active0 & 0x200000000000000L) != 0L)
+ {
+ jjmatchedKind = 57;
+ jjmatchedPos = 2;
+ }
+ else if ((active1 & 0x4000L) != 0L)
+ {
+ jjmatchedKind = 78;
+ jjmatchedPos = 2;
+ }
+ return jjMoveStringLiteralDfa3_1(active0, 0x30004003010000L, active1, 0x400090cL);
+ case 117:
+ return jjMoveStringLiteralDfa3_1(active0, 0L, active1, 0x4000000000000000L);
+ case 121:
+ if ((active0 & 0x40000000000000L) != 0L)
+ {
+ jjmatchedKind = 54;
+ jjmatchedPos = 2;
+ }
+ return jjMoveStringLiteralDfa3_1(active0, 0x80000000000000L, active1, 0L);
+ default :
+ break;
+ }
+ return jjMoveNfa_1(0, 2);
+}
+private int jjMoveStringLiteralDfa3_1(long old0, long active0, long old1, long active1)
+{
+ if (((active0 &= old0) | (active1 &= old1)) == 0L)
+ return jjMoveNfa_1(0, 2);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return jjMoveNfa_1(0, 2);
+ }
+ switch(curChar)
+ {
+ case 45:
+ return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0x20L);
+ case 75:
+ return jjMoveStringLiteralDfa4_1(active0, 0x400L, active1, 0L);
+ case 78:
+ return jjMoveStringLiteralDfa4_1(active0, 0x800L, active1, 0L);
+ case 97:
+ return jjMoveStringLiteralDfa4_1(active0, 0x1000000003800000L, active1, 0x200000L);
+ case 99:
+ if ((active0 & 0x40000000L) != 0L)
+ {
+ jjmatchedKind = 30;
+ jjmatchedPos = 3;
+ }
+ return jjMoveStringLiteralDfa4_1(active0, 0x100080000000L, active1, 0L);
+ case 100:
+ if ((active0 & 0x8000000000L) != 0L)
+ {
+ jjmatchedKind = 39;
+ jjmatchedPos = 3;
+ }
+ else if ((active0 & 0x800000000000000L) != 0L)
+ {
+ jjmatchedKind = 59;
+ jjmatchedPos = 3;
+ }
+ break;
+ case 101:
+ if ((active0 & 0x400000000L) != 0L)
+ {
+ jjmatchedKind = 34;
+ jjmatchedPos = 3;
+ }
+ else if ((active1 & 0x8000L) != 0L)
+ {
+ jjmatchedKind = 79;
+ jjmatchedPos = 3;
+ }
+ else if ((active1 & 0x80000L) != 0L)
+ {
+ jjmatchedKind = 83;
+ jjmatchedPos = 3;
+ }
+ else if ((active1 & 0x4000000000000000L) != 0L)
+ {
+ jjmatchedKind = 126;
+ jjmatchedPos = 3;
+ }
+ return jjMoveStringLiteralDfa4_1(active0, 0x201e004020020000L, active1, 0x402202L);
+ case 104:
+ if ((active1 & 0x8L) != 0L)
+ {
+ jjmatchedKind = 67;
+ jjmatchedPos = 3;
+ }
+ else if ((active1 & 0x4000000L) != 0L)
+ {
+ jjmatchedKind = 90;
+ jjmatchedPos = 3;
+ }
+ break;
+ case 105:
+ return jjMoveStringLiteralDfa4_1(active0, 0x400000010000000L, active1, 0x810L);
+ case 107:
+ return jjMoveStringLiteralDfa4_1(active0, 0x400L, active1, 0L);
+ case 108:
+ if ((active1 & 0x2000000000000000L) != 0L)
+ {
+ jjmatchedKind = 125;
+ jjmatchedPos = 3;
+ }
+ return jjMoveStringLiteralDfa4_1(active0, 0x4001000L, active1, 0L);
+ case 109:
+ if ((active0 & 0x80000000000L) != 0L)
+ {
+ jjmatchedKind = 43;
+ jjmatchedPos = 3;
+ }
+ return jjMoveStringLiteralDfa4_1(active0, 0x40000000000L, active1, 0x40L);
+ case 110:
+ if ((active1 & 0x1L) != 0L)
+ {
+ jjmatchedKind = 64;
+ jjmatchedPos = 3;
+ }
+ else if ((active1 & 0x20000L) != 0L)
+ {
+ jjmatchedKind = 81;
+ jjmatchedPos = 3;
+ }
+ return jjMoveStringLiteralDfa4_1(active0, 0x400800L, active1, 0x1000000L);
+ case 111:
+ if ((active0 & 0x20000000000000L) != 0L)
+ {
+ jjmatchedKind = 53;
+ jjmatchedPos = 3;
+ }
+ return jjMoveStringLiteralDfa4_1(active0, 0x808010000L, active1, 0x101000L);
+ case 112:
+ if ((active0 & 0x200000000L) != 0L)
+ {
+ jjmatchedKind = 33;
+ jjmatchedPos = 3;
+ }
+ return jjMoveStringLiteralDfa4_1(active0, 0x100000000300000L, active1, 0x10004L);
+ case 114:
+ return jjMoveStringLiteralDfa4_1(active0, 0x1000000000L, active1, 0x2000080L);
+ case 115:
+ return jjMoveStringLiteralDfa4_1(active0, 0x4000002000080000L, active1, 0x9000000000000000L);
+ case 116:
+ return jjMoveStringLiteralDfa4_1(active0, 0x410100000000L, active1, 0x8000000L);
+ case 117:
+ return jjMoveStringLiteralDfa4_1(active0, 0x200000000000L, active1, 0x100L);
+ case 118:
+ if ((active1 & 0x40000000L) != 0L)
+ {
+ jjmatchedKind = 94;
+ jjmatchedPos = 3;
+ }
+ break;
+ case 119:
+ return jjMoveStringLiteralDfa4_1(active0, 0x80000000000000L, active1, 0L);
+ default :
+ break;
+ }
+ return jjMoveNfa_1(0, 3);
+}
+private int jjMoveStringLiteralDfa4_1(long old0, long active0, long old1, long active1)
+{
+ if (((active0 &= old0) | (active1 &= old1)) == 0L)
+ return jjMoveNfa_1(0, 3);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return jjMoveNfa_1(0, 3);
+ }
+ switch(curChar)
+ {
+ case 69:
+ return jjMoveStringLiteralDfa5_1(active0, 0x400L, active1, 0L);
+ case 78:
+ return jjMoveStringLiteralDfa5_1(active0, 0x800L, active1, 0L);
+ case 97:
+ return jjMoveStringLiteralDfa5_1(active0, 0x40004300000L, active1, 0x40L);
+ case 99:
+ return jjMoveStringLiteralDfa5_1(active0, 0L, active1, 0x2010L);
+ case 101:
+ if ((active0 & 0x20000L) != 0L)
+ {
+ jjmatchedKind = 17;
+ jjmatchedPos = 4;
+ }
+ else if ((active1 & 0x200L) != 0L)
+ {
+ jjmatchedKind = 73;
+ jjmatchedPos = 4;
+ }
+ else if ((active1 & 0x2000000L) != 0L)
+ {
+ jjmatchedKind = 89;
+ jjmatchedPos = 4;
+ }
+ else if ((active1 & 0x8000000L) != 0L)
+ {
+ jjmatchedKind = 91;
+ jjmatchedPos = 4;
+ }
+ else if ((active1 & 0x8000000000000000L) != 0L)
+ {
+ jjmatchedKind = 127;
+ jjmatchedPos = 4;
+ }
+ return jjMoveStringLiteralDfa5_1(active0, 0x4000010000480400L, active1, 0x80L);
+ case 103:
+ if ((active1 & 0x1000000L) != 0L)
+ {
+ jjmatchedKind = 88;
+ jjmatchedPos = 4;
+ }
+ return jjMoveStringLiteralDfa5_1(active0, 0x2000000000010000L, active1, 0L);
+ case 105:
+ return jjMoveStringLiteralDfa5_1(active0, 0x100000100000000L, active1, 0x1000000000000000L);
+ case 109:
+ if ((active0 & 0x1000000000000000L) != 0L)
+ {
+ jjmatchedKind = 60;
+ jjmatchedPos = 4;
+ }
+ break;
+ case 110:
+ if ((active1 & 0x100000L) != 0L)
+ {
+ jjmatchedKind = 84;
+ jjmatchedPos = 4;
+ }
+ return jjMoveStringLiteralDfa5_1(active0, 0x10000800L, active1, 0x1000L);
+ case 111:
+ return jjMoveStringLiteralDfa5_1(active0, 0x80000080000000L, active1, 0x10000L);
+ case 112:
+ if ((active0 & 0x200000000000L) != 0L)
+ {
+ jjmatchedKind = 45;
+ jjmatchedPos = 4;
+ }
+ break;
+ case 114:
+ if ((active0 & 0x8000000L) != 0L)
+ {
+ jjmatchedKind = 27;
+ jjmatchedPos = 4;
+ }
+ else if ((active1 & 0x2L) != 0L)
+ {
+ jjmatchedKind = 65;
+ jjmatchedPos = 4;
+ }
+ return jjMoveStringLiteralDfa5_1(active0, 0x18004800000000L, active1, 0x400100L);
+ case 115:
+ if ((active0 & 0x400000000000L) != 0L)
+ {
+ jjmatchedKind = 46;
+ jjmatchedPos = 4;
+ }
+ return jjMoveStringLiteralDfa5_1(active0, 0x4000001000000L, active1, 0x820L);
+ case 116:
+ if ((active0 & 0x400000000000000L) != 0L)
+ {
+ jjmatchedKind = 58;
+ jjmatchedPos = 4;
+ }
+ return jjMoveStringLiteralDfa5_1(active0, 0x102020800000L, active1, 0x200000L);
+ case 117:
+ return jjMoveStringLiteralDfa5_1(active0, 0L, active1, 0x4L);
+ case 118:
+ return jjMoveStringLiteralDfa5_1(active0, 0x2000000L, active1, 0L);
+ case 120:
+ if ((active0 & 0x2000000000000L) != 0L)
+ {
+ jjmatchedKind = 49;
+ jjmatchedPos = 4;
+ }
+ break;
+ case 121:
+ if ((active0 & 0x1000L) != 0L)
+ {
+ jjmatchedKind = 12;
+ jjmatchedPos = 4;
+ }
+ else if ((active0 & 0x1000000000L) != 0L)
+ {
+ jjmatchedKind = 36;
+ jjmatchedPos = 4;
+ }
+ break;
+ default :
+ break;
+ }
+ return jjMoveNfa_1(0, 4);
+}
+private int jjMoveStringLiteralDfa5_1(long old0, long active0, long old1, long active1)
+{
+ if (((active0 &= old0) | (active1 &= old1)) == 0L)
+ return jjMoveNfa_1(0, 4);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return jjMoveNfa_1(0, 4);
+ }
+ switch(curChar)
+ {
+ case 69:
+ return jjMoveStringLiteralDfa6_1(active0, 0x800L, active1, 0L);
+ case 82:
+ if ((active0 & 0x400L) != 0L)
+ {
+ jjmatchedKind = 10;
+ jjmatchedPos = 5;
+ }
+ break;
+ case 99:
+ return jjMoveStringLiteralDfa6_1(active0, 0x800700000L, active1, 0L);
+ case 100:
+ if ((active0 & 0x80000L) != 0L)
+ {
+ jjmatchedKind = 19;
+ jjmatchedPos = 5;
+ }
+ return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0x1000L);
+ case 101:
+ if ((active0 & 0x800000L) != 0L)
+ {
+ jjmatchedKind = 23;
+ jjmatchedPos = 5;
+ }
+ else if ((active0 & 0x20000000L) != 0L)
+ {
+ jjmatchedKind = 29;
+ jjmatchedPos = 5;
+ }
+ else if ((active1 & 0x200000L) != 0L)
+ {
+ jjmatchedKind = 85;
+ jjmatchedPos = 5;
+ }
+ return jjMoveStringLiteralDfa6_1(active0, 0x3010800L, active1, 0L);
+ case 102:
+ return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0x800L);
+ case 105:
+ return jjMoveStringLiteralDfa6_1(active0, 0x100010000000L, active1, 0L);
+ case 110:
+ if ((active1 & 0x100L) != 0L)
+ {
+ jjmatchedKind = 72;
+ jjmatchedPos = 5;
+ }
+ return jjMoveStringLiteralDfa6_1(active0, 0x110004180000000L, active1, 0x1000000000000000L);
+ case 111:
+ return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0x20L);
+ case 114:
+ if ((active0 & 0x400L) != 0L)
+ {
+ jjmatchedKind = 10;
+ jjmatchedPos = 5;
+ }
+ else if ((active0 & 0x10000000000L) != 0L)
+ {
+ jjmatchedKind = 40;
+ jjmatchedPos = 5;
+ }
+ return jjMoveStringLiteralDfa6_1(active0, 0x2080000004000000L, active1, 0x10040L);
+ case 115:
+ if ((active0 & 0x2000000000L) != 0L)
+ {
+ jjmatchedKind = 37;
+ jjmatchedPos = 5;
+ }
+ return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0x80L);
+ case 116:
+ if ((active0 & 0x40000000000L) != 0L)
+ {
+ jjmatchedKind = 42;
+ jjmatchedPos = 5;
+ }
+ else if ((active0 & 0x8000000000000L) != 0L)
+ {
+ jjmatchedKind = 51;
+ jjmatchedPos = 5;
+ }
+ else if ((active0 & 0x4000000000000000L) != 0L)
+ {
+ jjmatchedKind = 62;
+ jjmatchedPos = 5;
+ }
+ else if ((active1 & 0x4L) != 0L)
+ {
+ jjmatchedKind = 66;
+ jjmatchedPos = 5;
+ }
+ else if ((active1 & 0x2000L) != 0L)
+ {
+ jjmatchedKind = 77;
+ jjmatchedPos = 5;
+ }
+ else if ((active1 & 0x400000L) != 0L)
+ {
+ jjmatchedKind = 86;
+ jjmatchedPos = 5;
+ }
+ return jjMoveStringLiteralDfa6_1(active0, 0x4000000000000L, active1, 0L);
+ case 121:
+ if ((active1 & 0x10L) != 0L)
+ {
+ jjmatchedKind = 68;
+ jjmatchedPos = 5;
+ }
+ break;
+ default :
+ break;
+ }
+ return jjMoveNfa_1(0, 5);
+}
+private int jjMoveStringLiteralDfa6_1(long old0, long active0, long old1, long active1)
+{
+ if (((active0 &= old0) | (active1 &= old1)) == 0L)
+ return jjMoveNfa_1(0, 5);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return jjMoveNfa_1(0, 5);
+ }
+ switch(curChar)
+ {
+ case 76:
+ if ((active0 & 0x800L) != 0L)
+ {
+ jjmatchedKind = 11;
+ jjmatchedPos = 6;
+ }
+ break;
+ case 97:
+ return jjMoveStringLiteralDfa7_1(active0, 0x10004000000000L, active1, 0x11000L);
+ case 99:
+ return jjMoveStringLiteralDfa7_1(active0, 0x100000000L, active1, 0L);
+ case 100:
+ if ((active0 & 0x80000000000000L) != 0L)
+ {
+ jjmatchedKind = 55;
+ jjmatchedPos = 6;
+ }
+ break;
+ case 101:
+ if ((active0 & 0x4000000L) != 0L)
+ {
+ jjmatchedKind = 26;
+ jjmatchedPos = 6;
+ }
+ return jjMoveStringLiteralDfa7_1(active0, 0x800000000L, active1, 0L);
+ case 103:
+ if ((active0 & 0x100000000000000L) != 0L)
+ {
+ jjmatchedKind = 56;
+ jjmatchedPos = 6;
+ }
+ else if ((active1 & 0x1000000000000000L) != 0L)
+ {
+ jjmatchedKind = 124;
+ jjmatchedPos = 6;
+ }
+ break;
+ case 104:
+ if ((active1 & 0x80L) != 0L)
+ {
+ jjmatchedKind = 71;
+ jjmatchedPos = 6;
+ }
+ break;
+ case 105:
+ return jjMoveStringLiteralDfa7_1(active0, 0x4000000000000L, active1, 0x800L);
+ case 108:
+ if ((active0 & 0x800L) != 0L)
+ {
+ jjmatchedKind = 11;
+ jjmatchedPos = 6;
+ }
+ break;
+ case 110:
+ return jjMoveStringLiteralDfa7_1(active0, 0x80010000L, active1, 0L);
+ case 111:
+ return jjMoveStringLiteralDfa7_1(active0, 0x2000100000000000L, active1, 0L);
+ case 114:
+ return jjMoveStringLiteralDfa7_1(active0, 0x2000000L, active1, 0x20L);
+ case 116:
+ if ((active0 & 0x100000L) != 0L)
+ {
+ jjmatchedKind = 20;
+ jjmatchedPos = 6;
+ }
+ else if ((active0 & 0x400000L) != 0L)
+ {
+ jjmatchedKind = 22;
+ jjmatchedPos = 6;
+ }
+ else if ((active0 & 0x1000000L) != 0L)
+ {
+ jjmatchedKind = 24;
+ jjmatchedPos = 6;
+ }
+ return jjMoveStringLiteralDfa7_1(active0, 0x10200000L, active1, 0L);
+ case 121:
+ if ((active1 & 0x40L) != 0L)
+ {
+ jjmatchedKind = 70;
+ jjmatchedPos = 6;
+ }
+ break;
+ default :
+ break;
+ }
+ return jjMoveNfa_1(0, 6);
+}
+private int jjMoveStringLiteralDfa7_1(long old0, long active0, long old1, long active1)
+{
+ if (((active0 &= old0) | (active1 &= old1)) == 0L)
+ return jjMoveNfa_1(0, 6);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return jjMoveNfa_1(0, 6);
+ }
+ switch(curChar)
+ {
+ case 100:
+ if ((active0 & 0x800000000L) != 0L)
+ {
+ jjmatchedKind = 35;
+ jjmatchedPos = 7;
+ }
+ break;
+ case 101:
+ return jjMoveStringLiteralDfa8_1(active0, 0x80010000L, active1, 0x800L);
+ case 105:
+ return jjMoveStringLiteralDfa8_1(active0, 0x10200000L, active1, 0L);
+ case 108:
+ if ((active0 & 0x4000000000L) != 0L)
+ {
+
<TRUNCATED>
[12/12] asterixdb-bad git commit: Initial commit
Posted by sj...@apache.org.
Initial commit
Project: http://git-wip-us.apache.org/repos/asf/asterixdb-bad/repo
Commit: http://git-wip-us.apache.org/repos/asf/asterixdb-bad/commit/bdba1b86
Tree: http://git-wip-us.apache.org/repos/asf/asterixdb-bad/tree/bdba1b86
Diff: http://git-wip-us.apache.org/repos/asf/asterixdb-bad/diff/bdba1b86
Branch: refs/heads/master
Commit: bdba1b863020f90549095fead46e63184e55d25a
Parents:
Author: Steven Glenn Jacobs <sj...@ucr.edu>
Authored: Fri Sep 9 13:40:18 2016 -0700
Committer: Steven Glenn Jacobs <sj...@ucr.edu>
Committed: Fri Sep 9 13:40:18 2016 -0700
----------------------------------------------------------------------
.classpath | 42 +
.project | 28 +
.settings/org.eclipse.core.resources.prefs | 7 +
.settings/org.eclipse.jdt.core.prefs | 5 +
.settings/org.eclipse.m2e.core.prefs | 4 +
.../current/VERSION | 5 +
.../dncp_block_verification.log.curr | 0
build/test/data/dfs/data/data1/current/VERSION | 6 +
build/test/data/dfs/data/data1/in_use.lock | 1 +
.../current/VERSION | 5 +
build/test/data/dfs/data/data2/current/VERSION | 6 +
build/test/data/dfs/data/data2/in_use.lock | 1 +
.../current/VERSION | 5 +
.../dncp_block_verification.log.curr | 0
build/test/data/dfs/data/data3/current/VERSION | 6 +
build/test/data/dfs/data/data3/in_use.lock | 1 +
.../current/VERSION | 5 +
build/test/data/dfs/data/data4/current/VERSION | 6 +
build/test/data/dfs/data/data4/in_use.lock | 1 +
build/test/data/dfs/name1/current/VERSION | 7 +
.../edits_inprogress_0000000000000000001 | Bin 0 -> 1048576 bytes
.../name1/current/fsimage_0000000000000000000 | Bin 0 -> 204 bytes
.../current/fsimage_0000000000000000000.md5 | 1 +
build/test/data/dfs/name1/current/seen_txid | 1 +
build/test/data/dfs/name1/in_use.lock | 1 +
build/test/data/dfs/name2/current/VERSION | 7 +
.../edits_inprogress_0000000000000000001 | Bin 0 -> 1048576 bytes
.../name2/current/fsimage_0000000000000000000 | Bin 0 -> 204 bytes
.../current/fsimage_0000000000000000000.md5 | 1 +
build/test/data/dfs/name2/current/seen_txid | 1 +
build/test/data/dfs/name2/in_use.lock | 1 +
pom.xml | 206 +
.../org/apache/asterix/bad/BADConstants.java | 41 +
.../org/apache/asterix/bad/ChannelJobInfo.java | 48 +
.../apache/asterix/bad/ChannelJobService.java | 145 +
.../bad/lang/BADCompilationProvider.java | 52 +
.../asterix/bad/lang/BADLangExtension.java | 106 +
.../asterix/bad/lang/BADParserFactory.java | 38 +
.../bad/lang/BADQueryTranslatorExtension.java | 53 +
.../bad/lang/BADQueryTranslatorFactory.java | 41 +
.../asterix/bad/lang/BADStatementExecutor.java | 46 +
.../bad/lang/statement/BrokerDropStatement.java | 99 +
.../lang/statement/ChannelDropStatement.java | 166 +
.../statement/ChannelSubscribeStatement.java | 202 +
.../statement/ChannelUnsubscribeStatement.java | 154 +
.../lang/statement/CreateBrokerStatement.java | 105 +
.../lang/statement/CreateChannelStatement.java | 373 ++
.../bad/metadata/BADMetadataExtension.java | 109 +
.../bad/metadata/BADMetadataIndexes.java | 66 +
.../bad/metadata/BADMetadataRecordTypes.java | 89 +
.../org/apache/asterix/bad/metadata/Broker.java | 69 +
.../asterix/bad/metadata/BrokerSearchKey.java | 45 +
.../bad/metadata/BrokerTupleTranslator.java | 118 +
.../apache/asterix/bad/metadata/Channel.java | 96 +
.../bad/metadata/ChannelEventsListener.java | 237 +
.../asterix/bad/metadata/ChannelSearchKey.java | 45 +
.../bad/metadata/ChannelTupleTranslator.java | 159 +
.../InsertBrokerNotifierForChannelRule.java | 317 ++
.../bad/runtime/NotifyBrokerOperator.java | 90 +
.../bad/runtime/NotifyBrokerPOperator.java | 111 +
.../bad/runtime/NotifyBrokerRuntime.java | 138 +
.../bad/runtime/NotifyBrokerRuntimeFactory.java | 55 +
.../RepetitiveChannelOperatorDescriptor.java | 83 +
.../RepetitiveChannelOperatorNodePushable.java | 125 +
src/main/resources/git.properties | 22 +
src/main/resources/lang-extension/lang.txt | 179 +
.../asterix/bad/test/BADExecutionTest.java | 98 +
.../asterix/bad/test/BADOptimizerTest.java | 60 +
.../conf/asterix-build-configuration.xml | 110 +
src/test/resources/conf/cluster.xml | 49 +
.../conf/hyracks-deployment.properties | 21 +
src/test/resources/conf/test.properties | 22 +
.../queries/channel/channel-create.aql | 36 +
.../queries/channel/channel-subscribe.aql | 40 +
.../queries/channel/channel-unsubscribe.aql | 38 +
.../results/channel/channel-create.plan | 30 +
.../results/channel/channel-subscribe.plan | 44 +
.../results/channel/channel-unsubscribe.plan | 44 +
.../create_channel_check_datasets.1.ddl.aql | 34 +
.../create_channel_check_datasets.2.update.aql | 0
.../create_channel_check_datasets.3.query.aql | 7 +
.../create_channel_check_metadata.1.ddl.aql | 34 +
.../create_channel_check_metadata.2.update.aql | 0
.../create_channel_check_metadata.3.query.aql | 3 +
.../drop_channel_check_datasets.1.ddl.aql | 38 +
.../drop_channel_check_datasets.2.update.aql | 3 +
.../drop_channel_check_datasets.3.query.aql | 7 +
.../drop_channel_check_metadata.1.ddl.aql | 38 +
.../drop_channel_check_metadata.2.update.aql | 3 +
.../drop_channel_check_metadata.3.query.aql | 3 +
...scribe_channel_check_subscriptions.1.ddl.aql | 34 +
...ibe_channel_check_subscriptions.2.update.aql | 7 +
...ribe_channel_check_subscriptions.3.query.aql | 4 +
.../create_channel_check_datasets.1.adm | 3 +
.../create_channel_check_metadata.1.adm | 2 +
.../drop_channel_check_datasets.1.adm | 5 +
.../drop_channel_check_metadata.1.adm | 3 +
.../subscribe_channel_check_subscriptions.1.adm | 4 +
target/.plxarc | 1 +
target/asterix-opt-0.8.9-SNAPSHOT.jar | Bin 0 -> 165124 bytes
target/checkstyle-checker.xml | 5 +
target/checkstyle-result.xml | 119 +
target/checkstyle-rules.xml | 5 +
target/classes/META-INF/DEPENDENCIES | 489 ++
target/classes/META-INF/LICENSE | 202 +
target/classes/META-INF/NOTICE | 8 +
target/classes/git.properties | 22 +
target/classes/lang-extension/lang.txt | 179 +
.../bad/BADConstants$ChannelJobType.class | Bin 0 -> 1190 bytes
.../org/apache/asterix/bad/BADConstants.class | Bin 0 -> 1005 bytes
.../org/apache/asterix/bad/ChannelJobInfo.class | Bin 0 -> 1673 bytes
.../apache/asterix/bad/ChannelJobService.class | Bin 0 -> 6182 bytes
.../asterix/bad/lang/BADAQLParser$1.class | Bin 0 -> 240 bytes
.../bad/lang/BADAQLParser$FunctionName.class | Bin 0 -> 725 bytes
.../bad/lang/BADAQLParser$IndexParams.class | Bin 0 -> 794 bytes
.../asterix/bad/lang/BADAQLParser$JJCalls.class | Bin 0 -> 521 bytes
.../lang/BADAQLParser$LookaheadSuccess.class | Bin 0 -> 567 bytes
.../apache/asterix/bad/lang/BADAQLParser.class | Bin 0 -> 100260 bytes
.../bad/lang/BADAQLParserConstants.class | Bin 0 -> 8427 bytes
.../bad/lang/BADAQLParserTokenManager.class | Bin 0 -> 47691 bytes
.../bad/lang/BADCompilationProvider.class | Bin 0 -> 1308 bytes
.../asterix/bad/lang/BADLangExtension$1.class | Bin 0 -> 912 bytes
.../asterix/bad/lang/BADLangExtension.class | Bin 0 -> 6111 bytes
.../asterix/bad/lang/BADParserFactory.class | Bin 0 -> 855 bytes
...BADQueryTranslatorExtension$LazyHolder.class | Bin 0 -> 1155 bytes
.../bad/lang/BADQueryTranslatorExtension.class | Bin 0 -> 1573 bytes
.../bad/lang/BADQueryTranslatorFactory.class | Bin 0 -> 1892 bytes
.../asterix/bad/lang/BADStatementExecutor.class | Bin 0 -> 1750 bytes
.../asterix/bad/lang/JavaCharStream.class | Bin 0 -> 9889 bytes
.../asterix/bad/lang/ParseException.class | Bin 0 -> 3760 bytes
.../org/apache/asterix/bad/lang/Token.class | Bin 0 -> 1265 bytes
.../apache/asterix/bad/lang/TokenMgrError.class | Bin 0 -> 2865 bytes
.../lang/statement/BrokerDropStatement.class | Bin 0 -> 5083 bytes
.../lang/statement/ChannelDropStatement.class | Bin 0 -> 9347 bytes
.../statement/ChannelSubscribeStatement.class | Bin 0 -> 10902 bytes
.../statement/ChannelUnsubscribeStatement.class | Bin 0 -> 4351 bytes
.../lang/statement/CreateBrokerStatement.class | Bin 0 -> 5718 bytes
.../lang/statement/CreateChannelStatement.class | Bin 0 -> 23785 bytes
.../bad/metadata/BADMetadataExtension.class | Bin 0 -> 4750 bytes
.../bad/metadata/BADMetadataIndexes.class | Bin 0 -> 2816 bytes
.../bad/metadata/BADMetadataRecordTypes.class | Bin 0 -> 3178 bytes
.../apache/asterix/bad/metadata/Broker.class | Bin 0 -> 1509 bytes
.../asterix/bad/metadata/BrokerSearchKey.class | Bin 0 -> 1266 bytes
.../bad/metadata/BrokerTupleTranslator.class | Bin 0 -> 5829 bytes
.../apache/asterix/bad/metadata/Channel.class | Bin 0 -> 2781 bytes
.../bad/metadata/ChannelEventsListener$1.class | Bin 0 -> 906 bytes
.../bad/metadata/ChannelEventsListener.class | Bin 0 -> 12124 bytes
.../asterix/bad/metadata/ChannelSearchKey.class | Bin 0 -> 1271 bytes
.../bad/metadata/ChannelTupleTranslator.class | Bin 0 -> 7302 bytes
.../InsertBrokerNotifierForChannelRule.class | Bin 0 -> 15855 bytes
.../bad/runtime/NotifyBrokerOperator.class | Bin 0 -> 2629 bytes
.../bad/runtime/NotifyBrokerPOperator.class | Bin 0 -> 7083 bytes
.../bad/runtime/NotifyBrokerRuntime.class | Bin 0 -> 7215 bytes
.../runtime/NotifyBrokerRuntimeFactory.class | Bin 0 -> 1944 bytes
.../RepetitiveChannelOperatorDescriptor.class | Bin 0 -> 3383 bytes
...epetitiveChannelOperatorNodePushable$1.class | Bin 0 -> 1000 bytes
.../RepetitiveChannelOperatorNodePushable.class | Bin 0 -> 4481 bytes
target/generated-resources/javacc/grammar.jj | 2949 ++++++++++++
.../apache/asterix/bad/lang/BADAQLParser.java | 4407 ++++++++++++++++++
.../asterix/bad/lang/BADAQLParserConstants.java | 454 ++
.../bad/lang/BADAQLParserTokenManager.java | 3701 +++++++++++++++
.../apache/asterix/bad/lang/JavaCharStream.java | 617 +++
.../apache/asterix/bad/lang/ParseException.java | 187 +
.../org/apache/asterix/bad/lang/Token.java | 131 +
.../apache/asterix/bad/lang/TokenMgrError.java | 147 +
target/maven-archiver/pom.properties | 5 +
.../META-INF/DEPENDENCIES | 489 ++
.../META-INF/LICENSE | 202 +
.../META-INF/NOTICE | 8 +
.../compile/default-compile/createdFiles.lst | 49 +
.../compile/default-compile/inputFiles.lst | 39 +
.../default-testCompile/createdFiles.lst | 2 +
.../default-testCompile/inputFiles.lst | 2 +
target/rat.txt | 72 +
target/test-classes/META-INF/DEPENDENCIES | 489 ++
target/test-classes/META-INF/LICENSE | 202 +
target/test-classes/META-INF/NOTICE | 8 +
.../conf/asterix-build-configuration.xml | 110 +
target/test-classes/conf/cluster.xml | 49 +
.../conf/hyracks-deployment.properties | 21 +
target/test-classes/conf/test.properties | 22 +
.../queries/channel/channel-create.aql | 36 +
.../queries/channel/channel-subscribe.aql | 40 +
.../queries/channel/channel-unsubscribe.aql | 38 +
.../results/channel/channel-create.plan | 30 +
.../results/channel/channel-subscribe.plan | 44 +
.../results/channel/channel-unsubscribe.plan | 44 +
.../asterix/bad/test/BADExecutionTest.class | Bin 0 -> 4444 bytes
.../asterix/bad/test/BADOptimizerTest.class | Bin 0 -> 1922 bytes
.../create_channel_check_datasets.1.ddl.aql | 34 +
.../create_channel_check_datasets.2.update.aql | 0
.../create_channel_check_datasets.3.query.aql | 7 +
.../create_channel_check_metadata.1.ddl.aql | 34 +
.../create_channel_check_metadata.2.update.aql | 0
.../create_channel_check_metadata.3.query.aql | 3 +
.../drop_channel_check_datasets.1.ddl.aql | 38 +
.../drop_channel_check_datasets.2.update.aql | 3 +
.../drop_channel_check_datasets.3.query.aql | 7 +
.../drop_channel_check_metadata.1.ddl.aql | 38 +
.../drop_channel_check_metadata.2.update.aql | 3 +
.../drop_channel_check_metadata.3.query.aql | 3 +
...scribe_channel_check_subscriptions.1.ddl.aql | 34 +
...ibe_channel_check_subscriptions.2.update.aql | 7 +
...ribe_channel_check_subscriptions.3.query.aql | 4 +
.../create_channel_check_datasets.1.adm | 3 +
.../create_channel_check_metadata.1.adm | 2 +
.../drop_channel_check_datasets.1.adm | 5 +
.../drop_channel_check_metadata.1.adm | 3 +
.../subscribe_channel_check_subscriptions.1.adm | 4 +
209 files changed, 20862 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/.classpath
----------------------------------------------------------------------
diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..dfab2cd
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" output="target/classes" path="src/main/java">
+ <attributes>
+ <attribute name="optional" value="true"/>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="src" output="target/classes" path="target/generated-sources/javacc">
+ <attributes>
+ <attribute name="optional" value="true"/>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="src" output="target/test-classes" path="src/test/java">
+ <attributes>
+ <attribute name="optional" value="true"/>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/.project
----------------------------------------------------------------------
diff --git a/.project b/.project
new file mode 100644
index 0000000..4234ee0
--- /dev/null
+++ b/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>asterix-active</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ </natures>
+</projectDescription>
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/.settings/org.eclipse.core.resources.prefs
----------------------------------------------------------------------
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..12e1c9a
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding//src/main/resources=UTF-8
+encoding//src/test/java=UTF-8
+encoding//src/test/resources=UTF-8
+encoding//target/generated-sources/javacc=UTF-8
+encoding/<project>=UTF-8
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/.settings/org.eclipse.jdt.core.prefs
----------------------------------------------------------------------
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..714351a
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.8
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/.settings/org.eclipse.m2e.core.prefs
----------------------------------------------------------------------
diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/data/data1/current/BP-1853864992-192.168.8.104-1473442535767/current/VERSION
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/data/data1/current/BP-1853864992-192.168.8.104-1473442535767/current/VERSION b/build/test/data/dfs/data/data1/current/BP-1853864992-192.168.8.104-1473442535767/current/VERSION
new file mode 100644
index 0000000..7b1e796
--- /dev/null
+++ b/build/test/data/dfs/data/data1/current/BP-1853864992-192.168.8.104-1473442535767/current/VERSION
@@ -0,0 +1,5 @@
+#Fri Sep 09 10:35:37 PDT 2016
+namespaceID=404750972
+cTime=0
+blockpoolID=BP-1853864992-192.168.8.104-1473442535767
+layoutVersion=-47
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/data/data1/current/BP-1853864992-192.168.8.104-1473442535767/dncp_block_verification.log.curr
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/data/data1/current/BP-1853864992-192.168.8.104-1473442535767/dncp_block_verification.log.curr b/build/test/data/dfs/data/data1/current/BP-1853864992-192.168.8.104-1473442535767/dncp_block_verification.log.curr
new file mode 100644
index 0000000..e69de29
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/data/data1/current/VERSION
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/data/data1/current/VERSION b/build/test/data/dfs/data/data1/current/VERSION
new file mode 100644
index 0000000..a58b113
--- /dev/null
+++ b/build/test/data/dfs/data/data1/current/VERSION
@@ -0,0 +1,6 @@
+#Fri Sep 09 10:35:37 PDT 2016
+storageID=DS-142611376-192.168.8.104-52719-1473442537270
+clusterID=testClusterID
+cTime=0
+storageType=DATA_NODE
+layoutVersion=-47
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/data/data1/in_use.lock
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/data/data1/in_use.lock b/build/test/data/dfs/data/data1/in_use.lock
new file mode 100644
index 0000000..e2d3355
--- /dev/null
+++ b/build/test/data/dfs/data/data1/in_use.lock
@@ -0,0 +1 @@
+44184@Sisyphus.local
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/data/data2/current/BP-1853864992-192.168.8.104-1473442535767/current/VERSION
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/data/data2/current/BP-1853864992-192.168.8.104-1473442535767/current/VERSION b/build/test/data/dfs/data/data2/current/BP-1853864992-192.168.8.104-1473442535767/current/VERSION
new file mode 100644
index 0000000..7b1e796
--- /dev/null
+++ b/build/test/data/dfs/data/data2/current/BP-1853864992-192.168.8.104-1473442535767/current/VERSION
@@ -0,0 +1,5 @@
+#Fri Sep 09 10:35:37 PDT 2016
+namespaceID=404750972
+cTime=0
+blockpoolID=BP-1853864992-192.168.8.104-1473442535767
+layoutVersion=-47
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/data/data2/current/VERSION
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/data/data2/current/VERSION b/build/test/data/dfs/data/data2/current/VERSION
new file mode 100644
index 0000000..a58b113
--- /dev/null
+++ b/build/test/data/dfs/data/data2/current/VERSION
@@ -0,0 +1,6 @@
+#Fri Sep 09 10:35:37 PDT 2016
+storageID=DS-142611376-192.168.8.104-52719-1473442537270
+clusterID=testClusterID
+cTime=0
+storageType=DATA_NODE
+layoutVersion=-47
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/data/data2/in_use.lock
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/data/data2/in_use.lock b/build/test/data/dfs/data/data2/in_use.lock
new file mode 100644
index 0000000..e2d3355
--- /dev/null
+++ b/build/test/data/dfs/data/data2/in_use.lock
@@ -0,0 +1 @@
+44184@Sisyphus.local
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/data/data3/current/BP-1853864992-192.168.8.104-1473442535767/current/VERSION
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/data/data3/current/BP-1853864992-192.168.8.104-1473442535767/current/VERSION b/build/test/data/dfs/data/data3/current/BP-1853864992-192.168.8.104-1473442535767/current/VERSION
new file mode 100644
index 0000000..7b1e796
--- /dev/null
+++ b/build/test/data/dfs/data/data3/current/BP-1853864992-192.168.8.104-1473442535767/current/VERSION
@@ -0,0 +1,5 @@
+#Fri Sep 09 10:35:37 PDT 2016
+namespaceID=404750972
+cTime=0
+blockpoolID=BP-1853864992-192.168.8.104-1473442535767
+layoutVersion=-47
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/data/data3/current/BP-1853864992-192.168.8.104-1473442535767/dncp_block_verification.log.curr
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/data/data3/current/BP-1853864992-192.168.8.104-1473442535767/dncp_block_verification.log.curr b/build/test/data/dfs/data/data3/current/BP-1853864992-192.168.8.104-1473442535767/dncp_block_verification.log.curr
new file mode 100644
index 0000000..e69de29
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/data/data3/current/VERSION
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/data/data3/current/VERSION b/build/test/data/dfs/data/data3/current/VERSION
new file mode 100644
index 0000000..7e828bf
--- /dev/null
+++ b/build/test/data/dfs/data/data3/current/VERSION
@@ -0,0 +1,6 @@
+#Fri Sep 09 10:35:37 PDT 2016
+storageID=DS-178448150-192.168.8.104-52786-1473442537270
+clusterID=testClusterID
+cTime=0
+storageType=DATA_NODE
+layoutVersion=-47
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/data/data3/in_use.lock
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/data/data3/in_use.lock b/build/test/data/dfs/data/data3/in_use.lock
new file mode 100644
index 0000000..e2d3355
--- /dev/null
+++ b/build/test/data/dfs/data/data3/in_use.lock
@@ -0,0 +1 @@
+44184@Sisyphus.local
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/data/data4/current/BP-1853864992-192.168.8.104-1473442535767/current/VERSION
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/data/data4/current/BP-1853864992-192.168.8.104-1473442535767/current/VERSION b/build/test/data/dfs/data/data4/current/BP-1853864992-192.168.8.104-1473442535767/current/VERSION
new file mode 100644
index 0000000..7b1e796
--- /dev/null
+++ b/build/test/data/dfs/data/data4/current/BP-1853864992-192.168.8.104-1473442535767/current/VERSION
@@ -0,0 +1,5 @@
+#Fri Sep 09 10:35:37 PDT 2016
+namespaceID=404750972
+cTime=0
+blockpoolID=BP-1853864992-192.168.8.104-1473442535767
+layoutVersion=-47
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/data/data4/current/VERSION
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/data/data4/current/VERSION b/build/test/data/dfs/data/data4/current/VERSION
new file mode 100644
index 0000000..7e828bf
--- /dev/null
+++ b/build/test/data/dfs/data/data4/current/VERSION
@@ -0,0 +1,6 @@
+#Fri Sep 09 10:35:37 PDT 2016
+storageID=DS-178448150-192.168.8.104-52786-1473442537270
+clusterID=testClusterID
+cTime=0
+storageType=DATA_NODE
+layoutVersion=-47
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/data/data4/in_use.lock
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/data/data4/in_use.lock b/build/test/data/dfs/data/data4/in_use.lock
new file mode 100644
index 0000000..e2d3355
--- /dev/null
+++ b/build/test/data/dfs/data/data4/in_use.lock
@@ -0,0 +1 @@
+44184@Sisyphus.local
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/name1/current/VERSION
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/name1/current/VERSION b/build/test/data/dfs/name1/current/VERSION
new file mode 100644
index 0000000..71ca2e0
--- /dev/null
+++ b/build/test/data/dfs/name1/current/VERSION
@@ -0,0 +1,7 @@
+#Fri Sep 09 10:35:35 PDT 2016
+namespaceID=404750972
+clusterID=testClusterID
+cTime=0
+storageType=NAME_NODE
+blockpoolID=BP-1853864992-192.168.8.104-1473442535767
+layoutVersion=-47
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/name1/current/edits_inprogress_0000000000000000001
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/name1/current/edits_inprogress_0000000000000000001 b/build/test/data/dfs/name1/current/edits_inprogress_0000000000000000001
new file mode 100644
index 0000000..f1ff235
Binary files /dev/null and b/build/test/data/dfs/name1/current/edits_inprogress_0000000000000000001 differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/name1/current/fsimage_0000000000000000000
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/name1/current/fsimage_0000000000000000000 b/build/test/data/dfs/name1/current/fsimage_0000000000000000000
new file mode 100644
index 0000000..c22c27e
Binary files /dev/null and b/build/test/data/dfs/name1/current/fsimage_0000000000000000000 differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/name1/current/fsimage_0000000000000000000.md5
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/name1/current/fsimage_0000000000000000000.md5 b/build/test/data/dfs/name1/current/fsimage_0000000000000000000.md5
new file mode 100644
index 0000000..645a3b7
--- /dev/null
+++ b/build/test/data/dfs/name1/current/fsimage_0000000000000000000.md5
@@ -0,0 +1 @@
+b8bf059807312f9ac971661b83eb3c56 *fsimage_0000000000000000000
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/name1/current/seen_txid
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/name1/current/seen_txid b/build/test/data/dfs/name1/current/seen_txid
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/build/test/data/dfs/name1/current/seen_txid
@@ -0,0 +1 @@
+1
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/name1/in_use.lock
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/name1/in_use.lock b/build/test/data/dfs/name1/in_use.lock
new file mode 100644
index 0000000..e2d3355
--- /dev/null
+++ b/build/test/data/dfs/name1/in_use.lock
@@ -0,0 +1 @@
+44184@Sisyphus.local
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/name2/current/VERSION
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/name2/current/VERSION b/build/test/data/dfs/name2/current/VERSION
new file mode 100644
index 0000000..71ca2e0
--- /dev/null
+++ b/build/test/data/dfs/name2/current/VERSION
@@ -0,0 +1,7 @@
+#Fri Sep 09 10:35:35 PDT 2016
+namespaceID=404750972
+clusterID=testClusterID
+cTime=0
+storageType=NAME_NODE
+blockpoolID=BP-1853864992-192.168.8.104-1473442535767
+layoutVersion=-47
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/name2/current/edits_inprogress_0000000000000000001
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/name2/current/edits_inprogress_0000000000000000001 b/build/test/data/dfs/name2/current/edits_inprogress_0000000000000000001
new file mode 100644
index 0000000..f1ff235
Binary files /dev/null and b/build/test/data/dfs/name2/current/edits_inprogress_0000000000000000001 differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/name2/current/fsimage_0000000000000000000
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/name2/current/fsimage_0000000000000000000 b/build/test/data/dfs/name2/current/fsimage_0000000000000000000
new file mode 100644
index 0000000..c22c27e
Binary files /dev/null and b/build/test/data/dfs/name2/current/fsimage_0000000000000000000 differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/name2/current/fsimage_0000000000000000000.md5
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/name2/current/fsimage_0000000000000000000.md5 b/build/test/data/dfs/name2/current/fsimage_0000000000000000000.md5
new file mode 100644
index 0000000..645a3b7
--- /dev/null
+++ b/build/test/data/dfs/name2/current/fsimage_0000000000000000000.md5
@@ -0,0 +1 @@
+b8bf059807312f9ac971661b83eb3c56 *fsimage_0000000000000000000
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/name2/current/seen_txid
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/name2/current/seen_txid b/build/test/data/dfs/name2/current/seen_txid
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/build/test/data/dfs/name2/current/seen_txid
@@ -0,0 +1 @@
+1
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/build/test/data/dfs/name2/in_use.lock
----------------------------------------------------------------------
diff --git a/build/test/data/dfs/name2/in_use.lock b/build/test/data/dfs/name2/in_use.lock
new file mode 100644
index 0000000..e2d3355
--- /dev/null
+++ b/build/test/data/dfs/name2/in_use.lock
@@ -0,0 +1 @@
+44184@Sisyphus.local
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..72dcd33
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,206 @@
+<!--
+ ! Licensed to the Apache Software Foundation (ASF) under one
+ ! or more contributor license agreements. See the NOTICE file
+ ! distributed with this work for additional information
+ ! regarding copyright ownership. The ASF licenses this file
+ ! to you under the Apache License, Version 2.0 (the
+ ! "License"); you may not use this file except in compliance
+ ! with the License. You may obtain a copy of the License at
+ !
+ ! http://www.apache.org/licenses/LICENSE-2.0
+ !
+ ! Unless required by applicable law or agreed to in writing,
+ ! software distributed under the License is distributed on an
+ ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ! KIND, either express or implied. See the License for the
+ ! specific language governing permissions and limitations
+ ! under the License.
+ !-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.asterix</groupId>
+ <artifactId>apache-asterixdb</artifactId>
+ <version>0.8.9-SNAPSHOT</version>
+ </parent>
+ <artifactId>asterix-opt</artifactId>
+ <properties>
+ <asterix.version>0.8.9-SNAPSHOT</asterix.version>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.asterix</groupId>
+ <artifactId>asterix-grammar-extension-maven-plugin</artifactId>
+ <version>${asterix.version}</version>
+ <configuration>
+ <base>${project.basedir}</base>
+ <gbase>../asterix-lang-aql/src/main/javacc/AQL.jj</gbase>
+ <gextension>src/main/resources/lang-extension/lang.txt</gextension>
+ <output>target/generated-resources/javacc/grammar.jj</output>
+ <parserClassName>BADAQLParser</parserClassName>
+ <packageName>org.apache.asterix.bad.lang</packageName>
+ </configuration>
+ <executions>
+ <execution>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>grammarix</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>javacc-maven-plugin</artifactId>
+ <version>2.6</version>
+ <executions>
+ <execution>
+ <id>javacc</id>
+ <goals>
+ <goal>javacc</goal>
+ </goals>
+ <configuration>
+ <isStatic>false</isStatic>
+ <javaUnicodeEscape>true</javaUnicodeEscape>
+ <sourceDirectory>target/generated-resources/javacc</sourceDirectory>
+ </configuration>
+ </execution>
+ <execution>
+ <id>javacc-jjdoc</id>
+ <goals>
+ <goal>jjdoc</goal>
+ </goals>
+ <phase>process-sources</phase>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.9</version>
+ <executions>
+ <execution>
+ <id>add-source</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>${project.build.directory}/generated-sources/javacc/</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ <pluginManagement>
+ <plugins>
+ <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
+ <plugin>
+ <groupId>org.eclipse.m2e</groupId>
+ <artifactId>lifecycle-mapping</artifactId>
+ <version>1.0.0</version>
+ <configuration>
+ <lifecycleMappingMetadata>
+ <pluginExecutions>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <groupId>org.apache.asterix</groupId>
+ <artifactId>asterix-grammar-extension-maven-plugin</artifactId>
+ <versionRange>[${asterix.version},)</versionRange>
+ <goals>
+ <goal>grammarix</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <ignore></ignore>
+ </action>
+ </pluginExecution>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>javacc-maven-plugin</artifactId>
+ <versionRange>[2.6,)</versionRange>
+ <goals>
+ <goal>javacc</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <ignore></ignore>
+ </action>
+ </pluginExecution>
+ </pluginExecutions>
+ </lifecycleMappingMetadata>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.asterix</groupId>
+ <artifactId>asterix-om</artifactId>
+ <version>${project.version}</version>
+ <type>jar</type>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.hyracks</groupId>
+ <artifactId>hyracks-test-support</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.asterix</groupId>
+ <artifactId>asterix-runtime</artifactId>
+ <version>${project.version}</version>
+ <type>jar</type>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.hyracks</groupId>
+ <artifactId>algebricks-compiler</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.hyracks</groupId>
+ <artifactId>hyracks-hdfs-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.asterix</groupId>
+ <artifactId>asterix-common</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.asterix</groupId>
+ <artifactId>asterix-test-framework</artifactId>
+ <version>${asterix.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.asterix</groupId>
+ <artifactId>asterix-active</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.asterix</groupId>
+ <artifactId>asterix-app</artifactId>
+ <version>${asterix.version}</version>
+ <type>jar</type>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.asterix</groupId>
+ <artifactId>asterix-app</artifactId>
+ <version>${asterix.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.asterix</groupId>
+ <artifactId>asterix-common</artifactId>
+ <version>${asterix.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project>
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/BADConstants.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/BADConstants.java b/src/main/java/org/apache/asterix/bad/BADConstants.java
new file mode 100644
index 0000000..aeef031
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/BADConstants.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad;
+
+public interface BADConstants {
+ final String SubscriptionId = "subscriptionId";
+ final String BrokerName = "BrokerName";
+ final String BrokerDataverse = "DataverseName";
+ final String BrokerEndPoint = "BrokerEndPoint";
+ final String DeliveryTime = "deliveryTime";
+ final String ResultId = "resultId";
+ final String ChannelExecutionTime = "channelExecutionTime";
+ final String ChannelSubscriptionsType = "ChannelSubscriptionsType";
+ final String ChannelResultsType = "ChannelResultsType";
+ final String FEED_EXTENSION_NAME = "Feed";
+ final String CHANNEL_EXTENSION_NAME = "Subscriptions";
+ final String subscriptionEnding = "Results";
+ final String resultsEnding = "Channel";
+ final String BAD_METADATA_EXTENSION_NAME = "BADMetadataExtension";
+ final String BAD_DATAVERSE_NAME = "BAD";
+
+ public enum ChannelJobType {
+ REPETITIVE
+ }
+}
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/ChannelJobInfo.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/ChannelJobInfo.java b/src/main/java/org/apache/asterix/bad/ChannelJobInfo.java
new file mode 100644
index 0000000..da0c43b
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/ChannelJobInfo.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad;
+
+import java.util.List;
+
+import org.apache.asterix.active.ActiveJob;
+import org.apache.asterix.active.ActivityState;
+import org.apache.asterix.active.EntityId;
+import org.apache.asterix.bad.BADConstants.ChannelJobType;
+import org.apache.hyracks.api.job.JobId;
+import org.apache.hyracks.api.job.JobSpecification;
+
+public class ChannelJobInfo extends ActiveJob {
+
+ private static final long serialVersionUID = 1L;
+ private List<String> locations;
+
+ public ChannelJobInfo(EntityId entityId, JobId jobId, ActivityState state, JobSpecification spec) {
+ super(entityId, jobId, state, ChannelJobType.REPETITIVE, spec);
+ }
+
+ public List<String> getLocations() {
+ return locations;
+
+ }
+
+ public void setLocations(List<String> locations) {
+ this.locations = locations;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/ChannelJobService.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/ChannelJobService.java b/src/main/java/org/apache/asterix/bad/ChannelJobService.java
new file mode 100644
index 0000000..8310f70
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/ChannelJobService.java
@@ -0,0 +1,145 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad;
+
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.asterix.active.EntityId;
+import org.apache.asterix.common.exceptions.AsterixException;
+import org.apache.asterix.om.base.AOrderedList;
+import org.apache.asterix.om.base.AUUID;
+import org.apache.hyracks.api.client.HyracksConnection;
+import org.apache.hyracks.api.client.IHyracksClientConnection;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.api.job.JobId;
+import org.apache.hyracks.api.job.JobSpecification;
+import org.json.JSONException;
+
+/**
+ * Provides functionality for running channel jobs and communicating with Brokers
+ */
+public class ChannelJobService {
+
+ private static final Logger LOGGER = Logger.getLogger(ChannelJobService.class.getName());
+ IHyracksClientConnection hcc;
+
+ public ChannelJobService() throws AsterixException {
+
+ }
+
+ public void runChannelJob(JobSpecification channeljobSpec, String strIP, int port) throws Exception {
+ hcc = new HyracksConnection(strIP, port);
+ JobId jobId = hcc.startJob(channeljobSpec);
+ hcc.waitForCompletion(jobId);
+ }
+
+ public void sendBrokerNotificationsForChannel(EntityId activeJobId, String brokerEndpoint,
+ AOrderedList subscriptionIds, String channelExecutionTime) throws HyracksDataException {
+ String formattedString;
+ try {
+ formattedString = formatJSON(activeJobId, subscriptionIds, channelExecutionTime);
+ } catch (JSONException e) {
+ throw new HyracksDataException(e);
+ }
+ sendMessage(brokerEndpoint, formattedString);
+ }
+
+ public String formatJSON(EntityId activeJobId, AOrderedList subscriptionIds, String channelExecutionTime)
+ throws JSONException {
+ String JSON = "{ \"dataverseName\":\"" + activeJobId.getDataverse() + "\", \"channelName\":\""
+ + activeJobId.getEntityName() + "\", \"" + BADConstants.ChannelExecutionTime + "\":\""
+ + channelExecutionTime + "\", \"subscriptionIds\":[";
+ for (int i = 0; i < subscriptionIds.size(); i++) {
+ AUUID subId = (AUUID) subscriptionIds.getItem(i);
+ String subString = subId.toSimpleString();
+ JSON += "\"" + subString + "\"";
+ if (i < subscriptionIds.size() - 1) {
+ JSON += ",";
+ }
+ }
+ JSON += "]}";
+ return JSON;
+
+ }
+
+ public static void sendMessage(String targetURL, String urlParameters) {
+ HttpURLConnection connection = null;
+ try {
+ //Create connection
+ URL url = new URL(targetURL);
+ connection = (HttpURLConnection) url.openConnection();
+ connection.setRequestMethod("POST");
+ connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
+
+ connection.setRequestProperty("Content-Length", Integer.toString(urlParameters.getBytes().length));
+ connection.setRequestProperty("Content-Language", "en-US");
+
+ connection.setUseCaches(false);
+ connection.setDoOutput(true);
+
+ //Send message
+ try {
+ DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
+ wr.writeBytes(urlParameters);
+ wr.close();
+ } catch (Exception e) {
+ throw new AsterixException("Broker connection failed to write", e);
+ }
+
+ if (LOGGER.isLoggable(Level.INFO)) {
+ int responseCode = connection.getResponseCode();
+ LOGGER.info("\nSending 'POST' request to URL : " + url);
+ LOGGER.info("Post parameters : " + urlParameters);
+ LOGGER.info("Response Code : " + responseCode);
+ }
+
+ BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
+ String inputLine;
+ StringBuffer response = new StringBuffer();
+
+ while ((inputLine = in.readLine()) != null) {
+ response.append(inputLine);
+ }
+ in.close();
+
+ if (LOGGER.isLoggable(Level.INFO)) {
+ System.out.println(response.toString());
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ if (connection != null) {
+ connection.disconnect();
+ }
+ }
+ }
+
+ @Override
+ public String toString() {
+ return "ChannelJobService";
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/lang/BADCompilationProvider.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/lang/BADCompilationProvider.java b/src/main/java/org/apache/asterix/bad/lang/BADCompilationProvider.java
new file mode 100644
index 0000000..42036af
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/lang/BADCompilationProvider.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad.lang;
+
+import org.apache.asterix.algebra.base.ILangExpressionToPlanTranslatorFactory;
+import org.apache.asterix.compiler.provider.ILangCompilationProvider;
+import org.apache.asterix.lang.aql.rewrites.AQLRewriterFactory;
+import org.apache.asterix.lang.aql.visitor.AQLAstPrintVisitorFactory;
+import org.apache.asterix.lang.common.base.IAstPrintVisitorFactory;
+import org.apache.asterix.lang.common.base.IParserFactory;
+import org.apache.asterix.lang.common.base.IRewriterFactory;
+import org.apache.asterix.translator.AqlExpressionToPlanTranslatorFactory;
+
+public class BADCompilationProvider implements ILangCompilationProvider {
+
+ @Override
+ public IParserFactory getParserFactory() {
+ return new BADParserFactory();
+ }
+
+ @Override
+ public IRewriterFactory getRewriterFactory() {
+ return new AQLRewriterFactory();
+ }
+
+ @Override
+ public IAstPrintVisitorFactory getAstPrintVisitorFactory() {
+ return new AQLAstPrintVisitorFactory();
+ }
+
+ @Override
+ public ILangExpressionToPlanTranslatorFactory getExpressionToPlanTranslatorFactory() {
+ return new AqlExpressionToPlanTranslatorFactory();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/lang/BADLangExtension.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/lang/BADLangExtension.java b/src/main/java/org/apache/asterix/bad/lang/BADLangExtension.java
new file mode 100644
index 0000000..9832fe6
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/lang/BADLangExtension.java
@@ -0,0 +1,106 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad.lang;
+
+import java.util.List;
+
+import org.apache.asterix.algebra.base.ILangExtension;
+import org.apache.asterix.bad.metadata.Broker;
+import org.apache.asterix.bad.metadata.BrokerSearchKey;
+import org.apache.asterix.bad.metadata.Channel;
+import org.apache.asterix.bad.metadata.ChannelSearchKey;
+import org.apache.asterix.common.api.ExtensionId;
+import org.apache.asterix.compiler.provider.ILangCompilationProvider;
+import org.apache.asterix.compiler.provider.SqlppCompilationProvider;
+import org.apache.asterix.metadata.MetadataManager;
+import org.apache.asterix.metadata.MetadataTransactionContext;
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.common.utils.Pair;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
+import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.UnnestOperator;
+
+public class BADLangExtension implements ILangExtension {
+
+ public static final ExtensionId EXTENSION_ID = new ExtensionId(BADLangExtension.class.getSimpleName(), 0);
+
+ @Override
+ public ExtensionId getId() {
+ return EXTENSION_ID;
+ }
+
+ @Override
+ public void configure(List<Pair<String, String>> args) {
+ }
+
+ @Override
+ public ILangCompilationProvider getLangCompilationProvider(Language lang) {
+ switch (lang) {
+ case AQL:
+ return new BADCompilationProvider();
+ case SQLPP:
+ return new SqlppCompilationProvider();
+ default:
+ return null;
+ }
+ }
+
+ @Override
+ public ExtensionKind getExtensionKind() {
+ return ExtensionKind.LANG;
+ }
+
+ @Override
+ public boolean unnestToDataScan(Mutable<ILogicalOperator> opRef, IOptimizationContext context,
+ UnnestOperator unnestOp, ILogicalExpression unnestExpr, AbstractFunctionCallExpression functionCallExpr)
+ throws AlgebricksException {
+ // TODO I dont need this?????
+ return false;
+ }
+
+ public static Broker getBroker(MetadataTransactionContext mdTxnCtx, String dataverseName, String brokerName)
+ throws AlgebricksException {
+ BrokerSearchKey brokerSearchKey = new BrokerSearchKey(dataverseName, brokerName);
+ List<Broker> brokers = MetadataManager.INSTANCE.getEntities(mdTxnCtx, brokerSearchKey);
+ if (brokers.isEmpty()) {
+ return null;
+ } else if (brokers.size() > 1) {
+ throw new AlgebricksException("Broker search key returned more than one broker");
+ } else {
+ return brokers.get(0);
+ }
+ }
+
+ public static Channel getChannel(MetadataTransactionContext mdTxnCtx, String dataverseName, String channelName)
+ throws AlgebricksException {
+ ChannelSearchKey channelSearchKey = new ChannelSearchKey(dataverseName, channelName);
+ List<Channel> channels = MetadataManager.INSTANCE.getEntities(mdTxnCtx, channelSearchKey);
+ if (channels.isEmpty()) {
+ return null;
+ } else if (channels.size() > 1) {
+ throw new AlgebricksException("Channel search key returned more than one channel");
+ } else {
+ return channels.get(0);
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/lang/BADParserFactory.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/lang/BADParserFactory.java b/src/main/java/org/apache/asterix/bad/lang/BADParserFactory.java
new file mode 100644
index 0000000..58bca17
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/lang/BADParserFactory.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad.lang;
+
+import java.io.Reader;
+
+import org.apache.asterix.lang.common.base.IParser;
+import org.apache.asterix.lang.common.base.IParserFactory;
+
+public class BADParserFactory implements IParserFactory {
+
+ @Override
+ public IParser createParser(String query) {
+ return new BADAQLParser(query);
+ }
+
+ @Override
+ public IParser createParser(Reader reader) {
+ return new BADAQLParser(reader);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/lang/BADQueryTranslatorExtension.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/lang/BADQueryTranslatorExtension.java b/src/main/java/org/apache/asterix/bad/lang/BADQueryTranslatorExtension.java
new file mode 100644
index 0000000..4198230
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/lang/BADQueryTranslatorExtension.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad.lang;
+
+import java.util.List;
+
+import org.apache.asterix.app.cc.CompilerExtensionManager;
+import org.apache.asterix.app.cc.IStatementExecutorExtension;
+import org.apache.asterix.common.api.ExtensionId;
+import org.apache.asterix.runtime.util.AsterixAppContextInfo;
+import org.apache.asterix.translator.IStatementExecutorFactory;
+import org.apache.hyracks.algebricks.common.utils.Pair;
+
+public class BADQueryTranslatorExtension implements IStatementExecutorExtension {
+
+ public static final ExtensionId BAD_QUERY_TRANSLATOR_EXTENSION_ID = new ExtensionId(
+ BADQueryTranslatorExtension.class.getSimpleName(), 0);
+
+ private static class LazyHolder {
+ private static final IStatementExecutorFactory INSTANCE = new BADQueryTranslatorFactory(
+ (CompilerExtensionManager) AsterixAppContextInfo.INSTANCE.getExtensionManager());
+ }
+
+ @Override
+ public ExtensionId getId() {
+ return BAD_QUERY_TRANSLATOR_EXTENSION_ID;
+ }
+
+ @Override
+ public void configure(List<Pair<String, String>> args) {
+ }
+
+ @Override
+ public IStatementExecutorFactory getQueryTranslatorFactory() {
+ return LazyHolder.INSTANCE;
+ }
+}
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/lang/BADQueryTranslatorFactory.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/lang/BADQueryTranslatorFactory.java b/src/main/java/org/apache/asterix/bad/lang/BADQueryTranslatorFactory.java
new file mode 100644
index 0000000..b8a6050
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/lang/BADQueryTranslatorFactory.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad.lang;
+
+import java.util.List;
+
+import org.apache.asterix.app.cc.CompilerExtensionManager;
+import org.apache.asterix.app.translator.DefaultStatementExecutorFactory;
+import org.apache.asterix.app.translator.QueryTranslator;
+import org.apache.asterix.common.app.SessionConfig;
+import org.apache.asterix.compiler.provider.ILangCompilationProvider;
+import org.apache.asterix.lang.common.base.Statement;
+
+public class BADQueryTranslatorFactory extends DefaultStatementExecutorFactory {
+
+ public BADQueryTranslatorFactory(CompilerExtensionManager ccExtensionManager) {
+ super(ccExtensionManager);
+ }
+
+ @Override
+ public QueryTranslator create(List<Statement> statements, SessionConfig conf,
+ ILangCompilationProvider compilationProvider) {
+ return new BADStatementExecutor(statements, conf, compilationProvider, cExtensionManager);
+ }
+}
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/lang/BADStatementExecutor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/lang/BADStatementExecutor.java b/src/main/java/org/apache/asterix/bad/lang/BADStatementExecutor.java
new file mode 100644
index 0000000..1c17794
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/lang/BADStatementExecutor.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad.lang;
+
+import java.util.List;
+
+import org.apache.asterix.app.cc.CompilerExtensionManager;
+import org.apache.asterix.app.translator.QueryTranslator;
+import org.apache.asterix.common.app.SessionConfig;
+import org.apache.asterix.compiler.provider.ILangCompilationProvider;
+import org.apache.asterix.lang.common.base.Statement;
+import org.apache.asterix.metadata.declared.AqlMetadataProvider;
+import org.apache.hyracks.api.client.IHyracksClientConnection;
+
+public class BADStatementExecutor extends QueryTranslator {
+
+ public BADStatementExecutor(List<Statement> aqlStatements, SessionConfig conf,
+ ILangCompilationProvider compliationProvider, CompilerExtensionManager ccExtensionManager) {
+ super(aqlStatements, conf, compliationProvider, ccExtensionManager);
+ }
+
+ @Override
+ protected void handleDataverseDropStatement(AqlMetadataProvider metadataProvider, Statement stmt,
+ IHyracksClientConnection hcc) throws Exception {
+ //super(metadataProvider, stmt, hcc);
+ //TODO: need to drop channels and brokers
+ //TODO: need to check if datasets or functions are in use by channels
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/lang/statement/BrokerDropStatement.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/lang/statement/BrokerDropStatement.java b/src/main/java/org/apache/asterix/bad/lang/statement/BrokerDropStatement.java
new file mode 100644
index 0000000..d89617b
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/lang/statement/BrokerDropStatement.java
@@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad.lang.statement;
+
+import org.apache.asterix.algebra.extension.IExtensionStatement;
+import org.apache.asterix.app.translator.QueryTranslator;
+import org.apache.asterix.bad.lang.BADLangExtension;
+import org.apache.asterix.bad.metadata.Broker;
+import org.apache.asterix.common.exceptions.AsterixException;
+import org.apache.asterix.lang.common.struct.Identifier;
+import org.apache.asterix.lang.common.visitor.base.ILangVisitor;
+import org.apache.asterix.metadata.MetadataManager;
+import org.apache.asterix.metadata.MetadataTransactionContext;
+import org.apache.asterix.metadata.declared.AqlMetadataProvider;
+import org.apache.asterix.translator.IStatementExecutor;
+import org.apache.asterix.translator.IStatementExecutor.ResultDelivery;
+import org.apache.asterix.translator.IStatementExecutor.Stats;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.api.client.IHyracksClientConnection;
+import org.apache.hyracks.api.dataset.IHyracksDataset;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class BrokerDropStatement implements IExtensionStatement {
+
+ private final Identifier dataverseName;
+ private final Identifier brokerName;
+ private boolean ifExists;
+
+ public BrokerDropStatement(Identifier dataverseName, Identifier brokerName, boolean ifExists) {
+ this.brokerName = brokerName;
+ this.dataverseName = dataverseName;
+ this.ifExists = ifExists;
+ }
+
+ public boolean getIfExists() {
+ return ifExists;
+ }
+
+ public Identifier getDataverseName() {
+ return dataverseName;
+ }
+
+ public Identifier getBrokerName() {
+ return brokerName;
+ }
+
+ @Override
+ public byte getKind() {
+ return Kind.EXTENSION;
+ }
+
+ @Override
+ public byte getCategory() {
+ return Category.DDL;
+ }
+
+ @Override
+ public <R, T> R accept(ILangVisitor<R, T> visitor, T arg) throws AsterixException {
+ return null;
+ }
+
+ @Override
+ public void handle(IStatementExecutor statementExecutor, AqlMetadataProvider metadataProvider,
+ IHyracksClientConnection hcc, IHyracksDataset hdc, ResultDelivery resultDelivery, Stats stats)
+ throws HyracksDataException, AlgebricksException {
+ //TODO: dont drop a broker that's being used
+ MetadataTransactionContext mdTxnCtx = null;
+ try {
+ mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
+ metadataProvider.setMetadataTxnContext(mdTxnCtx);
+ Broker broker = BADLangExtension.getBroker(mdTxnCtx, dataverseName.getValue(), brokerName.getValue());
+ if (broker == null) {
+ throw new AlgebricksException("A broker with this name " + brokerName + " doesn't exist.");
+ }
+ MetadataManager.INSTANCE.deleteEntity(mdTxnCtx, broker);
+ MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+ } catch (Exception e) {
+ QueryTranslator.abort(e, e, mdTxnCtx);
+ throw new HyracksDataException(e);
+ }
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/lang/statement/ChannelDropStatement.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/lang/statement/ChannelDropStatement.java b/src/main/java/org/apache/asterix/bad/lang/statement/ChannelDropStatement.java
new file mode 100644
index 0000000..60fcf1f
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/lang/statement/ChannelDropStatement.java
@@ -0,0 +1,166 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad.lang.statement;
+
+import org.apache.asterix.active.ActiveJobNotificationHandler;
+import org.apache.asterix.active.ActiveRuntimeId;
+import org.apache.asterix.active.EntityId;
+import org.apache.asterix.active.message.ActiveManagerMessage;
+import org.apache.asterix.algebra.extension.IExtensionStatement;
+import org.apache.asterix.app.translator.QueryTranslator;
+import org.apache.asterix.bad.BADConstants;
+import org.apache.asterix.bad.lang.BADLangExtension;
+import org.apache.asterix.bad.metadata.Channel;
+import org.apache.asterix.bad.metadata.ChannelEventsListener;
+import org.apache.asterix.bad.runtime.RepetitiveChannelOperatorNodePushable;
+import org.apache.asterix.common.exceptions.AsterixException;
+import org.apache.asterix.common.messaging.api.ICCMessageBroker;
+import org.apache.asterix.external.feed.api.IActiveLifecycleEventSubscriber;
+import org.apache.asterix.external.feed.api.IActiveLifecycleEventSubscriber.ActiveLifecycleEvent;
+import org.apache.asterix.external.feed.management.ActiveLifecycleEventSubscriber;
+import org.apache.asterix.lang.common.statement.DropDatasetStatement;
+import org.apache.asterix.lang.common.struct.Identifier;
+import org.apache.asterix.lang.common.visitor.base.ILangVisitor;
+import org.apache.asterix.metadata.MetadataManager;
+import org.apache.asterix.metadata.MetadataTransactionContext;
+import org.apache.asterix.metadata.declared.AqlMetadataProvider;
+import org.apache.asterix.runtime.util.AsterixAppContextInfo;
+import org.apache.asterix.translator.IStatementExecutor;
+import org.apache.asterix.translator.IStatementExecutor.ResultDelivery;
+import org.apache.asterix.translator.IStatementExecutor.Stats;
+import org.apache.hyracks.algebricks.common.constraints.AlgebricksAbsolutePartitionConstraint;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.api.client.IHyracksClientConnection;
+import org.apache.hyracks.api.dataset.IHyracksDataset;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class ChannelDropStatement implements IExtensionStatement {
+
+ private final Identifier dataverseName;
+ private final Identifier channelName;
+ private boolean ifExists;
+
+ public ChannelDropStatement(Identifier dataverseName, Identifier channelName, boolean ifExists) {
+ this.dataverseName = dataverseName;
+ this.channelName = channelName;
+ this.ifExists = ifExists;
+ }
+
+ public Identifier getDataverseName() {
+ return dataverseName;
+ }
+
+ public Identifier getChannelName() {
+ return channelName;
+ }
+
+ public boolean getIfExists() {
+ return ifExists;
+ }
+
+ @Override
+ public byte getKind() {
+ return Kind.EXTENSION;
+ }
+
+ @Override
+ public byte getCategory() {
+ return Category.DDL;
+ }
+
+ @Override
+ public <R, T> R accept(ILangVisitor<R, T> visitor, T arg) throws AsterixException {
+ return null;
+ }
+
+ @Override
+ public void handle(IStatementExecutor statementExecutor, AqlMetadataProvider metadataProvider,
+ IHyracksClientConnection hcc, IHyracksDataset hdc, ResultDelivery resultDelivery, Stats stats)
+ throws HyracksDataException, AlgebricksException {
+ boolean txnActive = false;
+ EntityId entityId = new EntityId(BADConstants.CHANNEL_EXTENSION_NAME, dataverseName.getValue(),
+ channelName.getValue());
+ ChannelEventsListener listener = (ChannelEventsListener) ActiveJobNotificationHandler.INSTANCE
+ .getActiveEntityListener(entityId);
+ IActiveLifecycleEventSubscriber eventSubscriber = new ActiveLifecycleEventSubscriber();
+ boolean subscriberRegistered = false;
+ Channel channel = null;
+
+ MetadataTransactionContext mdTxnCtx = null;
+ try {
+ mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
+ txnActive = true;
+ channel = BADLangExtension.getChannel(mdTxnCtx, dataverseName.getValue(), channelName.getValue());
+ MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+ txnActive = false;
+ if (channel == null) {
+ if (ifExists) {
+ MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+ return;
+ } else {
+ throw new AlgebricksException("There is no channel with this name " + channelName + ".");
+ }
+ }
+ if (listener != null) {
+ subscriberRegistered = listener.isChannelActive(entityId, eventSubscriber);
+ }
+ if (!subscriberRegistered) {
+ throw new AsterixException("Channel " + channelName + " is not running");
+ }
+
+ ICCMessageBroker messageBroker = (ICCMessageBroker) AsterixAppContextInfo.INSTANCE.getCCApplicationContext()
+ .getMessageBroker();
+ AlgebricksAbsolutePartitionConstraint locations = channel.getPartitionConstraint();
+ int partition = 0;
+ for (String location : locations.getLocations()) {
+ messageBroker.sendApplicationMessageToNC(
+ new ActiveManagerMessage(ActiveManagerMessage.STOP_ACTIVITY, "cc",
+ new ActiveRuntimeId(channel.getChannelId(),
+ RepetitiveChannelOperatorNodePushable.class.getSimpleName(), partition++)),
+ location);
+ }
+ eventSubscriber.assertEvent(ActiveLifecycleEvent.ACTIVE_JOB_ENDED);
+
+ //Drop the Channel Datasets
+ //TODO: Need to find some way to handle if this fails.
+ //TODO: Prevent datasets for Channels from being dropped elsewhere
+ DropDatasetStatement dropStmt = new DropDatasetStatement(dataverseName,
+ new Identifier(channel.getResultsDatasetName()), true);
+ ((QueryTranslator) statementExecutor).handleDatasetDropStatement(metadataProvider, dropStmt, hcc);
+
+ dropStmt = new DropDatasetStatement(dataverseName, new Identifier(channel.getSubscriptionsDataset()), true);
+ ((QueryTranslator) statementExecutor).handleDatasetDropStatement(metadataProvider, dropStmt, hcc);
+
+ if (subscriberRegistered) {
+ listener.deregisterEventSubscriber(eventSubscriber);
+ }
+
+ //Remove the Channel Metadata
+ MetadataManager.INSTANCE.deleteEntity(mdTxnCtx, channel);
+ MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+ } catch (Exception e) {
+ e.printStackTrace();
+ if (txnActive) {
+ QueryTranslator.abort(e, e, mdTxnCtx);
+ }
+ throw new HyracksDataException(e);
+ }
+ }
+
+}
\ No newline at end of file
[11/12] asterixdb-bad git commit: Initial commit
Posted by sj...@apache.org.
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/lang/statement/ChannelSubscribeStatement.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/lang/statement/ChannelSubscribeStatement.java b/src/main/java/org/apache/asterix/bad/lang/statement/ChannelSubscribeStatement.java
new file mode 100644
index 0000000..bfa6bf1
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/lang/statement/ChannelSubscribeStatement.java
@@ -0,0 +1,202 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad.lang.statement;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.asterix.algebra.extension.IExtensionStatement;
+import org.apache.asterix.app.translator.QueryTranslator;
+import org.apache.asterix.bad.BADConstants;
+import org.apache.asterix.bad.lang.BADLangExtension;
+import org.apache.asterix.bad.metadata.Broker;
+import org.apache.asterix.bad.metadata.Channel;
+import org.apache.asterix.common.exceptions.AsterixException;
+import org.apache.asterix.common.functions.FunctionSignature;
+import org.apache.asterix.lang.common.base.Expression;
+import org.apache.asterix.lang.common.expression.CallExpr;
+import org.apache.asterix.lang.common.expression.FieldBinding;
+import org.apache.asterix.lang.common.expression.LiteralExpr;
+import org.apache.asterix.lang.common.expression.RecordConstructor;
+import org.apache.asterix.lang.common.literal.StringLiteral;
+import org.apache.asterix.lang.common.statement.InsertStatement;
+import org.apache.asterix.lang.common.statement.Query;
+import org.apache.asterix.lang.common.statement.UpsertStatement;
+import org.apache.asterix.lang.common.struct.Identifier;
+import org.apache.asterix.lang.common.visitor.base.ILangVisitor;
+import org.apache.asterix.metadata.MetadataManager;
+import org.apache.asterix.metadata.MetadataTransactionContext;
+import org.apache.asterix.metadata.declared.AqlMetadataProvider;
+import org.apache.asterix.om.functions.AsterixBuiltinFunctions;
+import org.apache.asterix.translator.IStatementExecutor;
+import org.apache.asterix.translator.IStatementExecutor.ResultDelivery;
+import org.apache.asterix.translator.IStatementExecutor.Stats;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.api.client.IHyracksClientConnection;
+import org.apache.hyracks.api.dataset.IHyracksDataset;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class ChannelSubscribeStatement implements IExtensionStatement {
+
+ private final Identifier dataverseName;
+ private final Identifier channelName;
+ private final Identifier brokerDataverseName;
+ private final Identifier brokerName;
+ private final List<Expression> argList;
+ private final String subscriptionId;
+ private final int varCounter;
+
+ public ChannelSubscribeStatement(Identifier dataverseName, Identifier channelName, List<Expression> argList,
+ int varCounter, Identifier brokerDataverseName, Identifier brokerName, String subscriptionId) {
+ this.channelName = channelName;
+ this.dataverseName = dataverseName;
+ this.brokerDataverseName = brokerDataverseName;
+ this.brokerName = brokerName;
+ this.argList = argList;
+ this.subscriptionId = subscriptionId;
+ this.varCounter = varCounter;
+ }
+
+ public Identifier getDataverseName() {
+ return dataverseName;
+ }
+
+ public Identifier getBrokerDataverseName() {
+ return brokerDataverseName;
+ }
+
+ public Identifier getChannelName() {
+ return channelName;
+ }
+
+ public Identifier getBrokerName() {
+ return brokerName;
+ }
+
+ public List<Expression> getArgList() {
+ return argList;
+ }
+
+ public int getVarCounter() {
+ return varCounter;
+ }
+
+ public String getSubscriptionId() {
+ return subscriptionId;
+ }
+
+ @Override
+ public byte getKind() {
+ return Kind.EXTENSION;
+ }
+
+ @Override
+ public byte getCategory() {
+ return Category.QUERY;
+ }
+
+ @Override
+ public <R, T> R accept(ILangVisitor<R, T> visitor, T arg) throws AsterixException {
+ return null;
+ }
+
+ @Override
+ public void handle(IStatementExecutor statementExecutor, AqlMetadataProvider metadataProvider,
+ IHyracksClientConnection hcc, IHyracksDataset hdc, ResultDelivery resultDelivery, Stats stats)
+ throws HyracksDataException, AlgebricksException {
+
+ MetadataTransactionContext mdTxnCtx = null;
+ try {
+ mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
+
+ Channel channel = BADLangExtension.getChannel(mdTxnCtx, dataverseName.getValue(), channelName.getValue());
+ if (channel == null) {
+ throw new AsterixException("There is no channel with this name " + channelName + ".");
+ }
+ Broker broker = BADLangExtension.getBroker(mdTxnCtx, brokerDataverseName.getValue(), brokerName.getValue());
+ if (broker == null) {
+ throw new AsterixException("There is no broker with this name " + brokerName + ".");
+ }
+
+ String subscriptionsDatasetName = channel.getSubscriptionsDataset();
+ List<String> returnField = new ArrayList<String>();
+ returnField.add(BADConstants.SubscriptionId);
+
+ if (argList.size() != channel.getFunction().getArity()) {
+ throw new AsterixException("Channel expected " + channel.getFunction().getArity()
+ + " parameters but got " + argList.size());
+ }
+
+ Query subscriptionTuple = new Query(false);
+
+ List<FieldBinding> fb = new ArrayList<FieldBinding>();
+ LiteralExpr leftExpr = new LiteralExpr(new StringLiteral(BADConstants.BrokerDataverse));
+ Expression rightExpr = new LiteralExpr(new StringLiteral(broker.getDataverseName()));
+ fb.add(new FieldBinding(leftExpr, rightExpr));
+
+ leftExpr = new LiteralExpr(new StringLiteral(BADConstants.BrokerName));
+ rightExpr = new LiteralExpr(new StringLiteral(broker.getBrokerName()));
+ fb.add(new FieldBinding(leftExpr, rightExpr));
+
+ if (subscriptionId != null) {
+ leftExpr = new LiteralExpr(new StringLiteral(BADConstants.SubscriptionId));
+
+ List<Expression> UUIDList = new ArrayList<Expression>();
+ UUIDList.add(new LiteralExpr(new StringLiteral(subscriptionId)));
+ FunctionIdentifier function = AsterixBuiltinFunctions.UUID_CONSTRUCTOR;
+ FunctionSignature UUIDfunc = new FunctionSignature(function.getNamespace(), function.getName(),
+ function.getArity());
+ CallExpr UUIDCall = new CallExpr(UUIDfunc, UUIDList);
+
+ rightExpr = UUIDCall;
+ fb.add(new FieldBinding(leftExpr, rightExpr));
+ }
+
+ for (int i = 0; i < argList.size(); i++) {
+ leftExpr = new LiteralExpr(new StringLiteral("param" + i));
+ rightExpr = argList.get(i);
+ fb.add(new FieldBinding(leftExpr, rightExpr));
+ }
+ RecordConstructor recordCon = new RecordConstructor(fb);
+ subscriptionTuple.setBody(recordCon);
+
+ subscriptionTuple.setVarCounter(varCounter);
+
+ if (subscriptionId == null) {
+ InsertStatement insert = new InsertStatement(dataverseName, new Identifier(subscriptionsDatasetName),
+ subscriptionTuple, varCounter, false, returnField);
+ ((QueryTranslator) statementExecutor).handleInsertUpsertStatement(metadataProvider, insert, hcc, hdc,
+ resultDelivery, stats, false);
+ } else {
+ UpsertStatement upsert = new UpsertStatement(dataverseName, new Identifier(subscriptionsDatasetName),
+ subscriptionTuple, varCounter);
+ ((QueryTranslator) statementExecutor).handleInsertUpsertStatement(metadataProvider, upsert, hcc, hdc,
+ resultDelivery, stats, false);
+ }
+
+ MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+ } catch (Exception e) {
+ QueryTranslator.abort(e, e, mdTxnCtx);
+ throw new HyracksDataException(e);
+ }
+
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/lang/statement/ChannelUnsubscribeStatement.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/lang/statement/ChannelUnsubscribeStatement.java b/src/main/java/org/apache/asterix/bad/lang/statement/ChannelUnsubscribeStatement.java
new file mode 100644
index 0000000..17e3ad2
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/lang/statement/ChannelUnsubscribeStatement.java
@@ -0,0 +1,154 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad.lang.statement;
+
+import java.util.List;
+
+import org.apache.asterix.algebra.extension.IExtensionStatement;
+import org.apache.asterix.common.exceptions.AsterixException;
+import org.apache.asterix.lang.common.expression.VariableExpr;
+import org.apache.asterix.lang.common.struct.Identifier;
+import org.apache.asterix.lang.common.visitor.base.ILangVisitor;
+import org.apache.asterix.metadata.declared.AqlMetadataProvider;
+import org.apache.asterix.translator.IStatementExecutor;
+import org.apache.asterix.translator.IStatementExecutor.ResultDelivery;
+import org.apache.asterix.translator.IStatementExecutor.Stats;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.api.client.IHyracksClientConnection;
+import org.apache.hyracks.api.dataset.IHyracksDataset;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class ChannelUnsubscribeStatement implements IExtensionStatement {
+
+ private final Identifier dataverseName;
+ private final Identifier channelName;
+ private final String subscriptionId;
+ private final int varCounter;
+ private VariableExpr vars;
+ private List<String> dataverses;
+ private List<String> datasets;
+
+ public ChannelUnsubscribeStatement(VariableExpr vars, Identifier dataverseName, Identifier channelName,
+ String subscriptionId, int varCounter, List<String> dataverses, List<String> datasets) {
+ this.vars = vars;
+ this.channelName = channelName;
+ this.dataverseName = dataverseName;
+ this.subscriptionId = subscriptionId;
+ this.varCounter = varCounter;
+ this.dataverses = dataverses;
+ this.datasets = datasets;
+ }
+
+ public Identifier getDataverseName() {
+ return dataverseName;
+ }
+
+ public VariableExpr getVariableExpr() {
+ return vars;
+ }
+
+ public Identifier getChannelName() {
+ return channelName;
+ }
+
+ public String getsubScriptionId() {
+ return subscriptionId;
+ }
+
+ public List<String> getDataverses() {
+ return dataverses;
+ }
+
+ public List<String> getDatasets() {
+ return datasets;
+ }
+
+ public int getVarCounter() {
+ return varCounter;
+ }
+
+ @Override
+ public byte getKind() {
+ return Kind.EXTENSION;
+ }
+
+ @Override
+ public byte getCategory() {
+ return Category.UPDATE;
+ }
+
+ @Override
+ public <R, T> R accept(ILangVisitor<R, T> visitor, T arg) throws AsterixException {
+ return null;
+ }
+
+ @Override
+ public void handle(IStatementExecutor statementExecutor, AqlMetadataProvider metadataProvider,
+ IHyracksClientConnection hcc, IHyracksDataset hdc, ResultDelivery resultDelivery, Stats stats)
+ throws HyracksDataException, AlgebricksException {
+ /* ChannelUnsubscribeStatement stmtChannelSub = (ChannelUnsubscribeStatement) stmt;
+ String dataverseName = getActiveDataverse(stmtChannelSub.getDataverseName());
+ Identifier channelName = stmtChannelSub.getChannelName();
+ MetadataTransactionContext mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
+ metadataProvider.setMetadataTxnContext(mdTxnCtx);
+ MetadataLockManager.INSTANCE.readChannelBegin(dataverseName, dataverseName + "." + channelName);
+ try {
+ Channel channel = MetadataManager.INSTANCE.getChannel(mdTxnCtx, dataverseName, channelName.getValue());
+ if (channel == null) {
+ throw new AsterixException("There is no channel with this name " + channelName + ".");
+ }
+ Identifier subscriptionsDatasetName = new Identifier(channel.getSubscriptionsDataset());
+
+ VariableExpr vars = stmtChannelSub.getVariableExpr();
+
+ //Need a condition to say subscription-id = sid
+ OperatorExpr condition = new OperatorExpr();
+ FieldAccessor fa = new FieldAccessor(vars, new Identifier(ActiveConstants.SubscriptionId));
+ condition.addOperand(fa);
+ condition.setCurrentop(true);
+ condition.addOperator("=");
+
+ String sid = stmtChannelSub.getsubScriptionId();
+ List<Expression> UUIDList = new ArrayList<Expression>();
+ UUIDList.add(new LiteralExpr(new StringLiteral(sid)));
+
+ FunctionIdentifier function = AsterixBuiltinFunctions.UUID_CONSTRUCTOR;
+ FunctionSignature UUIDfunc = new FunctionSignature(function.getNamespace(), function.getName(),
+ function.getArity());
+ CallExpr UUIDCall = new CallExpr(UUIDfunc, UUIDList);
+
+ condition.addOperand(UUIDCall);
+
+ DeleteStatement delete = new DeleteStatement(vars, new Identifier(dataverseName), subscriptionsDatasetName,
+ condition, stmtChannelSub.getVarCounter(), stmtChannelSub.getDataverses(),
+ stmtChannelSub.getDatasets());
+ AqlDeleteRewriteVisitor visitor = new AqlDeleteRewriteVisitor();
+ delete.accept(visitor, null);
+
+ handleDeleteStatement(metadataProvider, delete, hcc);
+ MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+
+ } catch (Exception e) {
+ abort(e, e, mdTxnCtx);
+ throw e;
+ } finally {
+ MetadataLockManager.INSTANCE.readChannelEnd(dataverseName, dataverseName + "." + channelName);
+ }*/
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/lang/statement/CreateBrokerStatement.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/lang/statement/CreateBrokerStatement.java b/src/main/java/org/apache/asterix/bad/lang/statement/CreateBrokerStatement.java
new file mode 100644
index 0000000..5b480ae
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/lang/statement/CreateBrokerStatement.java
@@ -0,0 +1,105 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad.lang.statement;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.asterix.algebra.extension.IExtensionStatement;
+import org.apache.asterix.app.translator.QueryTranslator;
+import org.apache.asterix.bad.lang.BADLangExtension;
+import org.apache.asterix.bad.metadata.Broker;
+import org.apache.asterix.common.exceptions.AsterixException;
+import org.apache.asterix.lang.common.struct.Identifier;
+import org.apache.asterix.lang.common.visitor.base.ILangVisitor;
+import org.apache.asterix.metadata.MetadataManager;
+import org.apache.asterix.metadata.MetadataTransactionContext;
+import org.apache.asterix.metadata.declared.AqlMetadataProvider;
+import org.apache.asterix.translator.IStatementExecutor;
+import org.apache.asterix.translator.IStatementExecutor.ResultDelivery;
+import org.apache.asterix.translator.IStatementExecutor.Stats;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.api.client.IHyracksClientConnection;
+import org.apache.hyracks.api.dataset.IHyracksDataset;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class CreateBrokerStatement implements IExtensionStatement {
+
+ private static final Logger LOGGER = Logger.getLogger(CreateBrokerStatement.class.getName());
+ private final Identifier dataverseName;
+ private final Identifier brokerName;
+ private String endPointName;
+
+ public CreateBrokerStatement(Identifier dataverseName, Identifier brokerName, String endPointName) {
+ this.brokerName = brokerName;
+ this.dataverseName = dataverseName;
+ this.endPointName = endPointName;
+ }
+
+ public String getEndPointName() {
+ return endPointName;
+ }
+
+ public Identifier getDataverseName() {
+ return dataverseName;
+ }
+
+ public Identifier getBrokerName() {
+ return brokerName;
+ }
+
+ @Override
+ public byte getKind() {
+ return Kind.EXTENSION;
+ }
+
+ @Override
+ public byte getCategory() {
+ return Category.DDL;
+ }
+
+ @Override
+ public <R, T> R accept(ILangVisitor<R, T> visitor, T arg) throws AsterixException {
+ return null;
+ }
+
+ @Override
+ public void handle(IStatementExecutor statementExecutor, AqlMetadataProvider metadataProvider,
+ IHyracksClientConnection hcc, IHyracksDataset hdc, ResultDelivery resultDelivery, Stats stats)
+ throws HyracksDataException, AlgebricksException {
+ MetadataTransactionContext mdTxnCtx = null;
+ try {
+ mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
+ metadataProvider.setMetadataTxnContext(mdTxnCtx);
+ Broker broker = BADLangExtension.getBroker(mdTxnCtx, dataverseName.getValue(), brokerName.getValue());
+ if (broker != null) {
+ throw new AlgebricksException("A broker with this name " + brokerName + " already exists.");
+ }
+ broker = new Broker(dataverseName.getValue(), brokerName.getValue(), endPointName);
+ MetadataManager.INSTANCE.addEntity(mdTxnCtx, broker);
+ MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+ } catch (Exception e) {
+ if (mdTxnCtx != null) {
+ QueryTranslator.abort(e, e, mdTxnCtx);
+ }
+ LOGGER.log(Level.WARNING, "Failed creating a broker", e);
+ throw new HyracksDataException(e);
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/lang/statement/CreateChannelStatement.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/lang/statement/CreateChannelStatement.java b/src/main/java/org/apache/asterix/bad/lang/statement/CreateChannelStatement.java
new file mode 100644
index 0000000..d862052
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/lang/statement/CreateChannelStatement.java
@@ -0,0 +1,373 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad.lang.statement;
+
+import java.io.ByteArrayOutputStream;
+import java.io.DataOutputStream;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.asterix.active.ActiveJobNotificationHandler;
+import org.apache.asterix.active.ActivityState;
+import org.apache.asterix.active.EntityId;
+import org.apache.asterix.algebra.extension.IExtensionStatement;
+import org.apache.asterix.app.translator.QueryTranslator;
+import org.apache.asterix.bad.BADConstants;
+import org.apache.asterix.bad.ChannelJobInfo;
+import org.apache.asterix.bad.lang.BADLangExtension;
+import org.apache.asterix.bad.metadata.Channel;
+import org.apache.asterix.bad.metadata.ChannelEventsListener;
+import org.apache.asterix.bad.runtime.RepetitiveChannelOperatorDescriptor;
+import org.apache.asterix.common.config.DatasetConfig.DatasetType;
+import org.apache.asterix.common.exceptions.AsterixException;
+import org.apache.asterix.common.functions.FunctionSignature;
+import org.apache.asterix.external.feed.api.IActiveLifecycleEventSubscriber;
+import org.apache.asterix.external.feed.api.IActiveLifecycleEventSubscriber.ActiveLifecycleEvent;
+import org.apache.asterix.external.feed.management.ActiveLifecycleEventSubscriber;
+import org.apache.asterix.file.JobSpecificationUtils;
+import org.apache.asterix.lang.aql.parser.AQLParserFactory;
+import org.apache.asterix.lang.common.base.Expression;
+import org.apache.asterix.lang.common.base.Statement;
+import org.apache.asterix.lang.common.expression.CallExpr;
+import org.apache.asterix.lang.common.expression.LiteralExpr;
+import org.apache.asterix.lang.common.literal.StringLiteral;
+import org.apache.asterix.lang.common.statement.DatasetDecl;
+import org.apache.asterix.lang.common.statement.IDatasetDetailsDecl;
+import org.apache.asterix.lang.common.statement.InsertStatement;
+import org.apache.asterix.lang.common.statement.InternalDetailsDecl;
+import org.apache.asterix.lang.common.struct.Identifier;
+import org.apache.asterix.lang.common.visitor.base.ILangVisitor;
+import org.apache.asterix.metadata.MetadataException;
+import org.apache.asterix.metadata.MetadataManager;
+import org.apache.asterix.metadata.MetadataTransactionContext;
+import org.apache.asterix.metadata.declared.AqlMetadataProvider;
+import org.apache.asterix.metadata.entities.Function;
+import org.apache.asterix.om.base.temporal.ADurationParserFactory;
+import org.apache.asterix.runtime.util.AsterixAppContextInfo;
+import org.apache.asterix.runtime.util.AsterixClusterProperties;
+import org.apache.asterix.translator.IStatementExecutor;
+import org.apache.asterix.translator.IStatementExecutor.ResultDelivery;
+import org.apache.asterix.translator.IStatementExecutor.Stats;
+import org.apache.asterix.util.JobUtils;
+import org.apache.hyracks.algebricks.common.constraints.AlgebricksAbsolutePartitionConstraint;
+import org.apache.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraint;
+import org.apache.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraintHelper;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.common.utils.Pair;
+import org.apache.hyracks.api.application.ICCApplicationContext;
+import org.apache.hyracks.api.client.ClusterControllerInfo;
+import org.apache.hyracks.api.client.IHyracksClientConnection;
+import org.apache.hyracks.api.dataflow.IOperatorDescriptor;
+import org.apache.hyracks.api.dataset.IHyracksDataset;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.api.job.JobSpecification;
+import org.apache.hyracks.dataflow.common.data.parsers.IValueParser;
+
+public class CreateChannelStatement implements IExtensionStatement {
+
+ private static final Logger LOGGER = Logger.getLogger(CreateChannelStatement.class.getName());
+
+ private final Identifier dataverseName;
+ private final Identifier channelName;
+ private final FunctionSignature function;
+ private final CallExpr period;
+ private String duration;
+ private InsertStatement channelResultsInsertQuery;
+ private String subscriptionsTableName;
+ private String resultsTableName;
+
+ public CreateChannelStatement(Identifier dataverseName, Identifier channelName, FunctionSignature function,
+ Expression period) {
+ this.channelName = channelName;
+ this.dataverseName = dataverseName;
+ this.function = function;
+ this.period = (CallExpr) period;
+ this.duration = "";
+ }
+
+ public Identifier getDataverseName() {
+ return dataverseName;
+ }
+
+ public Identifier getChannelName() {
+ return channelName;
+ }
+
+ public String getResultsName() {
+ return resultsTableName;
+ }
+
+ public String getSubscriptionsName() {
+ return subscriptionsTableName;
+ }
+
+ public String getDuration() {
+ return duration;
+ }
+
+ public FunctionSignature getFunction() {
+ return function;
+ }
+
+ public Expression getPeriod() {
+ return period;
+ }
+
+ public InsertStatement getChannelResultsInsertQuery() {
+ return channelResultsInsertQuery;
+ }
+
+ @Override
+ public byte getCategory() {
+ return Category.DDL;
+ }
+
+ @Override
+ public <R, T> R accept(ILangVisitor<R, T> visitor, T arg) throws AsterixException {
+ return null;
+ }
+
+ public void initialize(MetadataTransactionContext mdTxnCtx, String subscriptionsTableName, String resultsTableName)
+ throws MetadataException, HyracksDataException {
+ Function lookup = MetadataManager.INSTANCE.getFunction(mdTxnCtx, function);
+ if (lookup == null) {
+ throw new MetadataException(" Unknown function " + function.getName());
+ }
+
+ if (!period.getFunctionSignature().getName().equals("duration")) {
+ throw new MetadataException(
+ "Expected argument period as a duration, but got " + period.getFunctionSignature().getName() + ".");
+ }
+ duration = ((StringLiteral) ((LiteralExpr) period.getExprList().get(0)).getValue()).getValue();
+ IValueParser durationParser = ADurationParserFactory.INSTANCE.createValueParser();
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ DataOutputStream outputStream = new DataOutputStream(bos);
+ durationParser.parse(duration.toCharArray(), 0, duration.toCharArray().length, outputStream);
+ this.resultsTableName = resultsTableName;
+ this.subscriptionsTableName = subscriptionsTableName;
+
+ }
+
+ @Override
+ public byte getKind() {
+ return Kind.EXTENSION;
+ }
+
+ public Pair<JobSpecification, AlgebricksAbsolutePartitionConstraint> buildChannelJobSpec(String dataverseName,
+ String channelName, String duration, AqlMetadataProvider metadataProvider, JobSpecification channeljobSpec,
+ String strIP, int port) throws Exception {
+ JobSpecification spec = JobSpecificationUtils.createJobSpecification();
+ IOperatorDescriptor channelQueryExecuter;
+ AlgebricksPartitionConstraint executerPc;
+
+ Pair<IOperatorDescriptor, AlgebricksAbsolutePartitionConstraint> p = buildChannelRuntime(spec, dataverseName,
+ channelName, duration, channeljobSpec, strIP, port);
+ channelQueryExecuter = p.first;
+ executerPc = p.second;
+ AlgebricksPartitionConstraintHelper.setPartitionConstraintInJobSpec(spec, channelQueryExecuter, executerPc);
+ spec.addRoot(channelQueryExecuter);
+ return new Pair<>(spec, p.second);
+
+ }
+
+ public Pair<IOperatorDescriptor, AlgebricksAbsolutePartitionConstraint> buildChannelRuntime(
+ JobSpecification jobSpec, String dataverseName, String channelName, String duration,
+ JobSpecification channeljobSpec, String strIP, int port) throws Exception {
+ RepetitiveChannelOperatorDescriptor channelOp = new RepetitiveChannelOperatorDescriptor(jobSpec, dataverseName,
+ channelName, duration, channeljobSpec, strIP, port);
+
+ String partition = AsterixClusterProperties.INSTANCE.getClusterLocations().getLocations()[0];
+ Set<String> ncs = new HashSet<>(Arrays.asList(partition));
+ AlgebricksAbsolutePartitionConstraint partitionConstraint = new AlgebricksAbsolutePartitionConstraint(
+ ncs.toArray(new String[ncs.size()]));
+ return new Pair<IOperatorDescriptor, AlgebricksAbsolutePartitionConstraint>(channelOp, partitionConstraint);
+ }
+
+ private void createDatasets(IStatementExecutor statementExecutor, Identifier subscriptionsName,
+ Identifier resultsName, AqlMetadataProvider metadataProvider, IHyracksClientConnection hcc,
+ IHyracksDataset hdc, Stats stats) throws AsterixException, Exception {
+
+ Identifier subscriptionsTypeName = new Identifier(BADConstants.ChannelSubscriptionsType);
+ Identifier resultsTypeName = new Identifier(BADConstants.ChannelResultsType);
+ //Setup the subscriptions dataset
+ List<List<String>> partitionFields = new ArrayList<List<String>>();
+ List<Integer> keyIndicators = new ArrayList<Integer>();
+ keyIndicators.add(0);
+ List<String> fieldNames = new ArrayList<String>();
+ fieldNames.add(BADConstants.SubscriptionId);
+ partitionFields.add(fieldNames);
+ IDatasetDetailsDecl idd = new InternalDetailsDecl(partitionFields, keyIndicators, true, null, false);
+ DatasetDecl createSubscriptionsDataset = new DatasetDecl(dataverseName, subscriptionsName,
+ new Identifier("Metadata"), subscriptionsTypeName, null, null, null, null,
+ new HashMap<String, String>(), new HashMap<String, String>(), DatasetType.INTERNAL, idd, true);
+
+ //Setup the results dataset
+ partitionFields = new ArrayList<List<String>>();
+ fieldNames = new ArrayList<String>();
+ fieldNames.add(BADConstants.ResultId);
+ partitionFields.add(fieldNames);
+ idd = new InternalDetailsDecl(partitionFields, keyIndicators, true, null, false);
+ DatasetDecl createResultsDataset = new DatasetDecl(dataverseName, resultsName, new Identifier("Metadata"),
+ resultsTypeName, null, null, null, null, new HashMap<String, String>(), new HashMap<String, String>(),
+ DatasetType.INTERNAL, idd, true);
+
+ //Run both statements to create datasets
+ ((QueryTranslator) statementExecutor).handleCreateDatasetStatement(metadataProvider, createSubscriptionsDataset,
+ hcc);
+ ((QueryTranslator) statementExecutor).handleCreateDatasetStatement(metadataProvider, createResultsDataset, hcc);
+
+ }
+
+ private JobSpecification createChannelJob(IStatementExecutor statementExecutor, Identifier subscriptionsName,
+ Identifier resultsName, AqlMetadataProvider metadataProvider, IHyracksClientConnection hcc,
+ IHyracksDataset hdc, Stats stats) throws Exception {
+ StringBuilder builder = new StringBuilder();
+ builder.append("insert into dataset " + dataverseName + "." + resultsName + " ");
+ builder.append(" (" + " let $" + BADConstants.ChannelExecutionTime + " := current-datetime() \n");
+
+ builder.append("for $sub in dataset " + dataverseName + "." + subscriptionsName + "\n");
+ builder.append("for $broker in dataset Metadata.Broker\n");
+ builder.append("where $broker." + BADConstants.BrokerName + "= $sub." + BADConstants.BrokerName + "\n");
+ builder.append("and $broker." + BADConstants.BrokerDataverse + "= $sub." + BADConstants.BrokerDataverse + "\n");
+ builder.append(" for $result in " + function.getNamespace() + "." + function.getName() + "(");
+ int i = 0;
+ for (; i < function.getArity() - 1; i++) {
+ builder.append("$sub.param" + i + ",");
+ }
+ builder.append("$sub.param" + i + ")\n");
+ builder.append("return {\n");
+ builder.append("\"" + BADConstants.ChannelExecutionTime + "\":$" + BADConstants.ChannelExecutionTime + ",");
+ builder.append("\"" + BADConstants.SubscriptionId + "\":$sub." + BADConstants.SubscriptionId + ",");
+ builder.append("\"" + BADConstants.DeliveryTime + "\":current-datetime(),");
+ builder.append("\"result\":$result");
+ builder.append("}");
+ builder.append(")");
+ builder.append(" return records");
+ builder.append(";");
+ AQLParserFactory aqlFact = new AQLParserFactory();
+ List<Statement> fStatements = aqlFact.createParser(new StringReader(builder.toString())).parse();
+ return ((QueryTranslator) statementExecutor).handleInsertUpsertStatement(metadataProvider, fStatements.get(0),
+ hcc, hdc, ResultDelivery.ASYNC, stats, true);
+ }
+
+ @Override
+ public void handle(IStatementExecutor statementExecutor, AqlMetadataProvider metadataProvider,
+ IHyracksClientConnection hcc, IHyracksDataset hdc, ResultDelivery resultDelivery, Stats stats)
+ throws HyracksDataException, AlgebricksException {
+
+ //This function performs three tasks:
+ //1. Create datasets for the Channel
+ //2. Create the compiled Channel Job
+ //3. Create the metadata entry for the channel
+
+ //TODO: Figure out how to handle when a subset of the 3 tasks fails
+ //TODO: The compiled job will break if anything changes to the function or two datasets
+ // Need to make sure we do proper checking when altering these things
+
+ Identifier subscriptionsName = new Identifier(channelName + BADConstants.subscriptionEnding);
+ Identifier resultsName = new Identifier(channelName + BADConstants.resultsEnding);
+ EntityId entityId = new EntityId(BADConstants.CHANNEL_EXTENSION_NAME, dataverseName.getValue(),
+ channelName.getValue());
+ ChannelEventsListener listener = (ChannelEventsListener) ActiveJobNotificationHandler.INSTANCE
+ .getActiveEntityListener(entityId);
+ IActiveLifecycleEventSubscriber eventSubscriber = new ActiveLifecycleEventSubscriber();
+ boolean subscriberRegistered = false;
+ Channel channel = null;
+
+ MetadataTransactionContext mdTxnCtx = null;
+ try {
+ mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
+ metadataProvider.setMetadataTxnContext(mdTxnCtx);
+ channel = BADLangExtension.getChannel(mdTxnCtx, dataverseName.getValue(), channelName.getValue());
+ if (channel != null) {
+ throw new AlgebricksException("A channel with this name " + channelName + " already exists.");
+ }
+ if (listener != null) {
+ subscriberRegistered = listener.isChannelActive(entityId, eventSubscriber);
+ }
+ if (subscriberRegistered) {
+ throw new AsterixException("Channel " + channelName + " is already running");
+ }
+ initialize(mdTxnCtx, subscriptionsName.getValue(), resultsName.getValue());
+ channel = new Channel(dataverseName.getValue(), channelName.getValue(), subscriptionsTableName,
+ resultsTableName, function, duration);
+
+ //check if names are available before creating anything
+ if (MetadataManager.INSTANCE.getDataset(mdTxnCtx, dataverseName.getValue(),
+ subscriptionsName.getValue()) != null) {
+ throw new AsterixException("The channel name:" + channelName + " is not available.");
+ }
+ if (MetadataManager.INSTANCE.getDataset(mdTxnCtx, dataverseName.getValue(),
+ resultsName.getValue()) != null) {
+ throw new AsterixException("The channel name:" + channelName + " is not available.");
+ }
+
+ // Now we subscribe
+ if (listener == null) {
+ listener = new ChannelEventsListener(entityId);
+ ActiveJobNotificationHandler.INSTANCE.registerListener(listener);
+ }
+ listener.registerEventSubscriber(eventSubscriber);
+ subscriberRegistered = true;
+
+ //Create Channel Datasets
+ createDatasets(statementExecutor, subscriptionsName, resultsName, metadataProvider, hcc, hdc, stats);
+
+ //Create Channel Internal Job
+ JobSpecification channeljobSpec = createChannelJob(statementExecutor, subscriptionsName, resultsName,
+ metadataProvider, hcc, hdc, stats);
+
+ //Create Channel Operator
+ ICCApplicationContext iCCApp = AsterixAppContextInfo.INSTANCE.getCCApplicationContext();
+ ClusterControllerInfo ccInfo = iCCApp.getCCContext().getClusterControllerInfo();
+ String strIP = ccInfo.getClientNetAddress();
+ int port = ccInfo.getClientNetPort();
+ Pair<JobSpecification, AlgebricksAbsolutePartitionConstraint> alteredJobSpec = buildChannelJobSpec(
+ dataverseName.getValue(), channelName.getValue(), duration, metadataProvider, channeljobSpec, strIP,
+ port);
+
+ channel.setPartitionConstraint(alteredJobSpec.second);
+
+ ChannelJobInfo channelJobInfo = new ChannelJobInfo(entityId, null, ActivityState.ACTIVE,
+ alteredJobSpec.first);
+ alteredJobSpec.first.setProperty(ActiveJobNotificationHandler.ACTIVE_ENTITY_PROPERTY_NAME, channelJobInfo);
+ JobUtils.runJob(hcc, alteredJobSpec.first, false);
+
+ eventSubscriber.assertEvent(ActiveLifecycleEvent.ACTIVE_JOB_STARTED);
+
+ MetadataManager.INSTANCE.addEntity(mdTxnCtx, channel);
+ MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+ } catch (Exception e) {
+ if (mdTxnCtx != null) {
+ QueryTranslator.abort(e, e, mdTxnCtx);
+ }
+ LOGGER.log(Level.WARNING, "Failed creating a channel", e);
+ throw new HyracksDataException(e);
+ }
+
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/metadata/BADMetadataExtension.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/metadata/BADMetadataExtension.java b/src/main/java/org/apache/asterix/bad/metadata/BADMetadataExtension.java
new file mode 100644
index 0000000..9129b0f
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/metadata/BADMetadataExtension.java
@@ -0,0 +1,109 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad.metadata;
+
+import java.rmi.RemoteException;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.asterix.bad.BADConstants;
+import org.apache.asterix.common.api.ExtensionId;
+import org.apache.asterix.common.exceptions.ACIDException;
+import org.apache.asterix.metadata.MetadataManager;
+import org.apache.asterix.metadata.MetadataTransactionContext;
+import org.apache.asterix.metadata.api.ExtensionMetadataDataset;
+import org.apache.asterix.metadata.api.IMetadataEntity;
+import org.apache.asterix.metadata.api.IMetadataExtension;
+import org.apache.asterix.metadata.api.IMetadataIndex;
+import org.apache.asterix.metadata.bootstrap.MetadataBootstrap;
+import org.apache.asterix.metadata.entities.Datatype;
+import org.apache.asterix.metadata.entities.Dataverse;
+import org.apache.asterix.metadata.entitytupletranslators.MetadataTupleTranslatorProvider;
+import org.apache.asterix.runtime.formats.NonTaggedDataFormat;
+import org.apache.hyracks.algebricks.common.utils.Pair;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class BADMetadataExtension implements IMetadataExtension {
+
+ public static final ExtensionId BAD_METADATA_EXTENSION_ID = new ExtensionId(
+ BADConstants.BAD_METADATA_EXTENSION_NAME, 0);
+ public static final Dataverse BAD_DATAVERSE = new Dataverse(BADConstants.BAD_DATAVERSE_NAME,
+ NonTaggedDataFormat.class.getName(), IMetadataEntity.PENDING_NO_OP);
+
+ public static final Datatype BAD_SUBSCRIPTION_DATATYPE = new Datatype(BADConstants.BAD_DATAVERSE_NAME,
+ BADConstants.ChannelSubscriptionsType, BADMetadataRecordTypes.channelSubscriptionsType, false);
+ public static final Datatype BAD_RESULT_DATATYPE = new Datatype(BADConstants.BAD_DATAVERSE_NAME,
+ BADConstants.ChannelResultsType, BADMetadataRecordTypes.channelResultsType, false);
+
+ @Override
+ public ExtensionId getId() {
+ return BAD_METADATA_EXTENSION_ID;
+ }
+
+ @Override
+ public void configure(List<Pair<String, String>> args) {
+ // do nothing??
+ }
+
+ @Override
+ public MetadataTupleTranslatorProvider getMetadataTupleTranslatorProvider() {
+ return new MetadataTupleTranslatorProvider();
+ }
+
+ @SuppressWarnings("rawtypes")
+ @Override
+ public List<ExtensionMetadataDataset> getExtensionIndexes() {
+ try {
+ ExtensionMetadataDataset A = BADMetadataIndexes.CHANNEL_DATASET;
+ ExtensionMetadataDataset B = BADMetadataIndexes.BROKER_DATASET;
+ return Arrays.asList(BADMetadataIndexes.CHANNEL_DATASET, BADMetadataIndexes.BROKER_DATASET);
+ } catch (Throwable th) {
+ th.printStackTrace();
+ throw th;
+ }
+ }
+
+ @Override
+ public void initializeMetadata() throws HyracksDataException, RemoteException, ACIDException {
+ // enlist datasets
+ MetadataBootstrap.enlistMetadataDataset(BADMetadataIndexes.CHANNEL_DATASET);
+ MetadataBootstrap.enlistMetadataDataset(BADMetadataIndexes.BROKER_DATASET);
+ if (MetadataBootstrap.isNewUniverse()) {
+ MetadataTransactionContext mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
+ try {
+ // add metadata datasets
+ MetadataBootstrap.insertMetadataDatasets(mdTxnCtx,
+ new IMetadataIndex[] { BADMetadataIndexes.CHANNEL_DATASET, BADMetadataIndexes.BROKER_DATASET });
+ // insert default dataverse
+ // TODO prevent user from dropping this dataverse
+ MetadataManager.INSTANCE.addDataverse(mdTxnCtx, BAD_DATAVERSE);
+ // insert default data type
+ MetadataManager.INSTANCE.addDatatype(mdTxnCtx, BAD_RESULT_DATATYPE);
+ MetadataManager.INSTANCE.addDatatype(mdTxnCtx, BAD_SUBSCRIPTION_DATATYPE);
+ // TODO prevent user from dropping these types
+ MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
+ } catch (Exception e) {
+ e.printStackTrace();
+ MetadataManager.INSTANCE.abortTransaction(mdTxnCtx);
+ }
+ }
+ // local recovery?
+ // nothing for now
+ }
+}
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/metadata/BADMetadataIndexes.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/metadata/BADMetadataIndexes.java b/src/main/java/org/apache/asterix/bad/metadata/BADMetadataIndexes.java
new file mode 100644
index 0000000..188f04f
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/metadata/BADMetadataIndexes.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad.metadata;
+
+import java.util.Arrays;
+
+import org.apache.asterix.common.metadata.MetadataIndexImmutableProperties;
+import org.apache.asterix.metadata.api.ExtensionMetadataDataset;
+import org.apache.asterix.metadata.api.ExtensionMetadataDatasetId;
+import org.apache.asterix.metadata.bootstrap.MetadataRecordTypes;
+import org.apache.asterix.om.types.BuiltinType;
+import org.apache.asterix.om.types.IAType;
+
+public class BADMetadataIndexes {
+
+ public static final String INDEX_NAME_CHANNEL = "Channel";
+ public static final String INDEX_NAME_BROKER = "Broker";
+
+ public static final ExtensionMetadataDatasetId BAD_CHANNEL_INDEX_ID = new ExtensionMetadataDatasetId(
+ BADMetadataExtension.BAD_METADATA_EXTENSION_ID, INDEX_NAME_CHANNEL);
+ public static final MetadataIndexImmutableProperties PROPERTIES_CHANNEL = new MetadataIndexImmutableProperties(
+ INDEX_NAME_CHANNEL, MetadataIndexImmutableProperties.FIRST_AVAILABLE_EXTENSION_METADATA_DATASET_ID,
+ MetadataIndexImmutableProperties.FIRST_AVAILABLE_EXTENSION_METADATA_DATASET_ID);
+
+ public static final ExtensionMetadataDatasetId BAD_BROKER_INDEX_ID = new ExtensionMetadataDatasetId(
+ BADMetadataExtension.BAD_METADATA_EXTENSION_ID, INDEX_NAME_BROKER);
+ public static final MetadataIndexImmutableProperties PROPERTIES_BROKER = new MetadataIndexImmutableProperties(
+ INDEX_NAME_BROKER, MetadataIndexImmutableProperties.FIRST_AVAILABLE_EXTENSION_METADATA_DATASET_ID,
+ MetadataIndexImmutableProperties.FIRST_AVAILABLE_EXTENSION_METADATA_DATASET_ID);
+
+ public static final int NUM_FIELDS_CHANNEL_IDX = 3;
+ public static final int NUM_FIELDS_BROKER_IDX = 3;
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ public static final ExtensionMetadataDataset CHANNEL_DATASET = new ExtensionMetadataDataset(PROPERTIES_CHANNEL,
+ NUM_FIELDS_CHANNEL_IDX, new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING },
+ Arrays.asList(Arrays.asList(MetadataRecordTypes.FIELD_NAME_DATAVERSE_NAME),
+ Arrays.asList(BADMetadataRecordTypes.FIELD_NAME_CHANNEL_NAME)),
+ 0, BADMetadataRecordTypes.CHANNEL_RECORDTYPE, true, new int[] { 0, 1 }, BAD_CHANNEL_INDEX_ID,
+ new ChannelTupleTranslator(true));
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ public static final ExtensionMetadataDataset BROKER_DATASET = new ExtensionMetadataDataset(PROPERTIES_BROKER,
+ NUM_FIELDS_BROKER_IDX, new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING },
+ Arrays.asList(Arrays.asList(MetadataRecordTypes.FIELD_NAME_DATAVERSE_NAME),
+ Arrays.asList(BADMetadataRecordTypes.FIELD_NAME_BROKER_NAME)),
+ 0, BADMetadataRecordTypes.BROKER_RECORDTYPE, true, new int[] { 0, 1 }, BAD_BROKER_INDEX_ID,
+ new BrokerTupleTranslator(true));
+
+}
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/metadata/BADMetadataRecordTypes.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/metadata/BADMetadataRecordTypes.java b/src/main/java/org/apache/asterix/bad/metadata/BADMetadataRecordTypes.java
new file mode 100644
index 0000000..d95570f
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/metadata/BADMetadataRecordTypes.java
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad.metadata;
+
+import org.apache.asterix.bad.BADConstants;
+import org.apache.asterix.metadata.bootstrap.MetadataRecordTypes;
+import org.apache.asterix.om.types.ARecordType;
+import org.apache.asterix.om.types.BuiltinType;
+import org.apache.asterix.om.types.IAType;
+
+public class BADMetadataRecordTypes {
+
+ // --------------------------------------- Fields Names --------------------------------------//
+ public static final String FIELD_NAME_BROKER_NAME = "BrokerName";
+ public static final String FIELD_NAME_BROKER_ENDPOINT = "BrokerEndPoint";
+ public static final String FIELD_NAME_CHANNEL_DURATION = "Duration";
+ public static final String FIELD_NAME_CHANNEL_FUNCTION = "Function";
+ public static final String FIELD_NAME_CHANNEL_NAME = "ChannelName";
+ public static final String FIELD_NAME_CHANNEL_RESULTS_DATASET = "ResultsDatasetName";
+ public static final String FIELD_NAME_CHANNEL_SUBSCRIPTIONS_DATASET = "SubscriptionsDatasetName";
+ public static final String FIELD_NAME_DATAVERSE_NAME = "DataverseName";
+
+ // -------------------------------------- Subscriptions --------------------------------------//
+ private static final String[] subTypeFieldNames = { BADConstants.BrokerDataverse, BADConstants.BrokerName,
+ BADConstants.SubscriptionId };
+ private static final IAType[] subTypeFieldTypes = { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.AUUID };
+ public static final ARecordType channelSubscriptionsType = new ARecordType(BADConstants.ChannelSubscriptionsType,
+ subTypeFieldNames, subTypeFieldTypes, true);
+
+ // ---------------------------------------- Results --------------------------------------------//
+ private static final String[] resultTypeFieldNames = { BADConstants.ResultId, BADConstants.ChannelExecutionTime,
+ BADConstants.SubscriptionId, BADConstants.DeliveryTime };
+ private static final IAType[] resultTypeFieldTypes = { BuiltinType.AUUID, BuiltinType.ADATETIME, BuiltinType.AUUID,
+ BuiltinType.ADATETIME };
+ public static final ARecordType channelResultsType = new ARecordType(BADConstants.ChannelResultsType,
+ resultTypeFieldNames, resultTypeFieldTypes, true);
+
+ //------------------------------------------ Channel ----------------------------------------//
+ public static final String RECORD_NAME_CHANNEL = "ChannelRecordType";
+ public static final int CHANNEL_ARECORD_DATAVERSE_NAME_FIELD_INDEX = 0;
+ public static final int CHANNEL_ARECORD_CHANNEL_NAME_FIELD_INDEX = 1;
+ public static final int CHANNEL_ARECORD_SUBSCRIPTIONS_NAME_FIELD_INDEX = 2;
+ public static final int CHANNEL_ARECORD_RESULTS_NAME_FIELD_INDEX = 3;
+ public static final int CHANNEL_ARECORD_FUNCTION_FIELD_INDEX = 4;
+ public static final int CHANNEL_ARECORD_DURATION_FIELD_INDEX = 5;
+ public static final ARecordType CHANNEL_RECORDTYPE = MetadataRecordTypes.createRecordType(
+ // RecordTypeName
+ RECORD_NAME_CHANNEL,
+ // FieldNames
+ new String[] { FIELD_NAME_DATAVERSE_NAME, FIELD_NAME_CHANNEL_NAME, FIELD_NAME_CHANNEL_SUBSCRIPTIONS_DATASET,
+ FIELD_NAME_CHANNEL_RESULTS_DATASET, FIELD_NAME_CHANNEL_FUNCTION, FIELD_NAME_CHANNEL_DURATION },
+ // FieldTypes
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING,
+ BuiltinType.ASTRING, BuiltinType.ASTRING },
+ //IsOpen?
+ true);
+ //------------------------------------------ Broker ----------------------------------------//
+ public static final String RECORD_NAME_BROKER = "BrokerRecordType";
+ public static final int BROKER_DATAVERSE_NAME_FIELD_INDEX = 0;
+ public static final int BROKER_NAME_FIELD_INDEX = 1;
+ public static final int BROKER_ENDPOINT_FIELD_INDEX = 2;
+ public static final ARecordType BROKER_RECORDTYPE = MetadataRecordTypes.createRecordType(
+ // RecordTypeName
+ RECORD_NAME_BROKER,
+ // FieldNames
+ new String[] { FIELD_NAME_DATAVERSE_NAME, FIELD_NAME_BROKER_NAME, FIELD_NAME_BROKER_ENDPOINT },
+ // FieldTypes
+ new IAType[] { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.ASTRING,
+ BuiltinType.ASTRING, BuiltinType.ASTRING },
+ //IsOpen?
+ true);
+
+}
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/metadata/Broker.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/metadata/Broker.java b/src/main/java/org/apache/asterix/bad/metadata/Broker.java
new file mode 100644
index 0000000..006f0dc
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/metadata/Broker.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2009-2015 by The Regents of the University of California
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * you may obtain a copy of the License from
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.asterix.bad.metadata;
+
+import org.apache.asterix.metadata.api.ExtensionMetadataDatasetId;
+import org.apache.asterix.metadata.api.IExtensionMetadataEntity;
+
+/**
+ * Metadata describing a broker.
+ */
+public class Broker implements IExtensionMetadataEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ private final String dataverseName;
+ private final String brokerName;
+ private final String endPointName;
+
+ public Broker(String dataverseName, String brokerName, String endPointName) {
+ this.endPointName = endPointName;
+ this.dataverseName = dataverseName;
+ this.brokerName = brokerName;
+ }
+
+ public String getDataverseName() {
+ return dataverseName;
+ }
+
+ public String getBrokerName() {
+ return brokerName;
+ }
+
+ public String getEndPointName() {
+ return endPointName;
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (this == other) {
+ return true;
+ }
+ if (!(other instanceof Broker)) {
+ return false;
+ }
+ Broker otherDataset = (Broker) other;
+ if (!otherDataset.brokerName.equals(brokerName)) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public ExtensionMetadataDatasetId getDatasetId() {
+ return BADMetadataIndexes.BAD_BROKER_INDEX_ID;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/metadata/BrokerSearchKey.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/metadata/BrokerSearchKey.java b/src/main/java/org/apache/asterix/bad/metadata/BrokerSearchKey.java
new file mode 100644
index 0000000..b73e9e3
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/metadata/BrokerSearchKey.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad.metadata;
+
+import org.apache.asterix.metadata.MetadataNode;
+import org.apache.asterix.metadata.api.ExtensionMetadataDatasetId;
+import org.apache.asterix.metadata.api.IExtensionMetadataSearchKey;
+import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
+
+public class BrokerSearchKey implements IExtensionMetadataSearchKey {
+ private static final long serialVersionUID = 1L;
+ private final String dataverse;
+ private final String broker;
+
+ public BrokerSearchKey(String dataverse, String broker) {
+ this.dataverse = dataverse;
+ this.broker = broker;
+ }
+
+ @Override
+ public ExtensionMetadataDatasetId getDatasetId() {
+ return BADMetadataIndexes.BAD_BROKER_INDEX_ID;
+ }
+
+ @Override
+ public ITupleReference getSearchKey() {
+ return MetadataNode.createTuple(dataverse, broker);
+ }
+}
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/metadata/BrokerTupleTranslator.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/metadata/BrokerTupleTranslator.java b/src/main/java/org/apache/asterix/bad/metadata/BrokerTupleTranslator.java
new file mode 100644
index 0000000..2b478f2
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/metadata/BrokerTupleTranslator.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * you may obtain a copy of the License from
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.asterix.bad.metadata;
+
+import java.io.ByteArrayInputStream;
+import java.io.DataInput;
+import java.io.DataInputStream;
+import java.io.IOException;
+
+import org.apache.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
+import org.apache.asterix.metadata.MetadataException;
+import org.apache.asterix.metadata.entitytupletranslators.AbstractTupleTranslator;
+import org.apache.asterix.om.base.ARecord;
+import org.apache.asterix.om.base.AString;
+import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
+
+/**
+ * Translates a Channel metadata entity to an ITupleReference and vice versa.
+ */
+public class BrokerTupleTranslator extends AbstractTupleTranslator<Broker> {
+ // Field indexes of serialized Broker in a tuple.
+ // Key field.
+ public static final int BROKER_DATAVERSE_NAME_FIELD_INDEX = 0;
+
+ public static final int BROKER_NAME_FIELD_INDEX = 1;
+
+ // Payload field containing serialized broker.
+ public static final int BROKER_PAYLOAD_TUPLE_FIELD_INDEX = 2;
+
+ @SuppressWarnings("unchecked")
+ private ISerializerDeserializer<ARecord> recordSerDes = AqlSerializerDeserializerProvider.INSTANCE
+ .getSerializerDeserializer(BADMetadataRecordTypes.BROKER_RECORDTYPE);
+
+ @SuppressWarnings("unchecked")
+ public BrokerTupleTranslator(boolean getTuple) {
+ super(getTuple, BADMetadataIndexes.BROKER_DATASET.getFieldCount());
+ }
+
+ @Override
+ public Broker getMetadataEntityFromTuple(ITupleReference frameTuple) throws IOException {
+ byte[] serRecord = frameTuple.getFieldData(BROKER_PAYLOAD_TUPLE_FIELD_INDEX);
+ int recordStartOffset = frameTuple.getFieldStart(BROKER_PAYLOAD_TUPLE_FIELD_INDEX);
+ int recordLength = frameTuple.getFieldLength(BROKER_PAYLOAD_TUPLE_FIELD_INDEX);
+ ByteArrayInputStream stream = new ByteArrayInputStream(serRecord, recordStartOffset, recordLength);
+ DataInput in = new DataInputStream(stream);
+ ARecord channelRecord = recordSerDes.deserialize(in);
+ return createBrokerFromARecord(channelRecord);
+ }
+
+ private Broker createBrokerFromARecord(ARecord brokerRecord) {
+ Broker broker = null;
+ String dataverseName = ((AString) brokerRecord
+ .getValueByPos(BADMetadataRecordTypes.BROKER_DATAVERSE_NAME_FIELD_INDEX)).getStringValue();
+ String brokerName = ((AString) brokerRecord.getValueByPos(BADMetadataRecordTypes.BROKER_NAME_FIELD_INDEX))
+ .getStringValue();
+ String endPointName = ((AString) brokerRecord.getValueByPos(BADMetadataRecordTypes.BROKER_ENDPOINT_FIELD_INDEX))
+ .getStringValue();
+
+ broker = new Broker(dataverseName, brokerName, endPointName);
+ return broker;
+ }
+
+ @Override
+ public ITupleReference getTupleFromMetadataEntity(Broker broker) throws IOException, MetadataException {
+ // write the key in the first fields of the tuple
+
+ tupleBuilder.reset();
+ aString.setValue(broker.getDataverseName());
+ stringSerde.serialize(aString, tupleBuilder.getDataOutput());
+ tupleBuilder.addFieldEndOffset();
+
+ aString.setValue(broker.getBrokerName());
+ stringSerde.serialize(aString, tupleBuilder.getDataOutput());
+ tupleBuilder.addFieldEndOffset();
+
+ recordBuilder.reset(BADMetadataRecordTypes.BROKER_RECORDTYPE);
+
+ // write field 0
+ fieldValue.reset();
+ aString.setValue(broker.getDataverseName());
+ stringSerde.serialize(aString, fieldValue.getDataOutput());
+ recordBuilder.addField(BADMetadataRecordTypes.BROKER_DATAVERSE_NAME_FIELD_INDEX, fieldValue);
+
+ // write field 1
+ fieldValue.reset();
+ aString.setValue(broker.getBrokerName());
+ stringSerde.serialize(aString, fieldValue.getDataOutput());
+ recordBuilder.addField(BADMetadataRecordTypes.BROKER_NAME_FIELD_INDEX, fieldValue);
+
+ // write field 2
+ fieldValue.reset();
+ aString.setValue(broker.getEndPointName());
+ stringSerde.serialize(aString, fieldValue.getDataOutput());
+ recordBuilder.addField(BADMetadataRecordTypes.BROKER_ENDPOINT_FIELD_INDEX, fieldValue);
+
+ // write record
+ recordBuilder.write(tupleBuilder.getDataOutput(), true);
+
+ tupleBuilder.addFieldEndOffset();
+
+ tuple.reset(tupleBuilder.getFieldEndOffsets(), tupleBuilder.getByteArray());
+ return tuple;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/metadata/Channel.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/metadata/Channel.java b/src/main/java/org/apache/asterix/bad/metadata/Channel.java
new file mode 100644
index 0000000..1025748
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/metadata/Channel.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2009-2015 by The Regents of the University of California
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * you may obtain a copy of the License from
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.asterix.bad.metadata;
+
+import org.apache.asterix.active.EntityId;
+import org.apache.asterix.bad.BADConstants;
+import org.apache.asterix.common.functions.FunctionSignature;
+import org.apache.asterix.metadata.api.ExtensionMetadataDatasetId;
+import org.apache.asterix.metadata.api.IExtensionMetadataEntity;
+import org.apache.hyracks.algebricks.common.constraints.AlgebricksAbsolutePartitionConstraint;
+
+/**
+ * Metadata describing a channel.
+ */
+public class Channel implements IExtensionMetadataEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** A unique identifier for the channel */
+ protected final EntityId channelId;
+ private final String subscriptionsDatasetName;
+ private final String resultsDatasetName;
+ private final String duration;
+ private final FunctionSignature function;
+ private AlgebricksAbsolutePartitionConstraint partitionConstraint;
+
+ public Channel(String dataverseName, String channelName, String subscriptionsDataset, String resultsDataset,
+ FunctionSignature function, String duration) {
+ this.channelId = new EntityId(BADConstants.CHANNEL_EXTENSION_NAME, dataverseName, channelName);
+ this.function = function;
+ this.duration = duration;
+ this.resultsDatasetName = resultsDataset;
+ this.subscriptionsDatasetName = subscriptionsDataset;
+ }
+
+ public EntityId getChannelId() {
+ return channelId;
+ }
+
+ public String getSubscriptionsDataset() {
+ return subscriptionsDatasetName;
+ }
+
+ public String getResultsDatasetName() {
+ return resultsDatasetName;
+ }
+
+ public String getDuration() {
+ return duration;
+ }
+
+ public FunctionSignature getFunction() {
+ return function;
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (this == other) {
+ return true;
+ }
+ if (!(other instanceof Channel)) {
+ return false;
+ }
+ Channel otherDataset = (Channel) other;
+ if (!otherDataset.channelId.equals(channelId)) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public ExtensionMetadataDatasetId getDatasetId() {
+ return BADMetadataIndexes.BAD_CHANNEL_INDEX_ID;
+ }
+
+ public AlgebricksAbsolutePartitionConstraint getPartitionConstraint() {
+ return partitionConstraint;
+ }
+
+ public void setPartitionConstraint(AlgebricksAbsolutePartitionConstraint partitionConstraint) {
+ this.partitionConstraint = partitionConstraint;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/metadata/ChannelEventsListener.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/metadata/ChannelEventsListener.java b/src/main/java/org/apache/asterix/bad/metadata/ChannelEventsListener.java
new file mode 100644
index 0000000..b48478d
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/metadata/ChannelEventsListener.java
@@ -0,0 +1,237 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad.metadata;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.apache.asterix.active.ActiveEvent;
+import org.apache.asterix.active.ActiveJob;
+import org.apache.asterix.active.ActivityState;
+import org.apache.asterix.active.EntityId;
+import org.apache.asterix.active.IActiveEntityEventsListener;
+import org.apache.asterix.bad.BADConstants;
+import org.apache.asterix.bad.ChannelJobInfo;
+import org.apache.asterix.bad.runtime.RepetitiveChannelOperatorDescriptor;
+import org.apache.asterix.external.feed.api.IActiveLifecycleEventSubscriber;
+import org.apache.asterix.external.feed.api.IActiveLifecycleEventSubscriber.ActiveLifecycleEvent;
+import org.apache.asterix.external.feed.management.FeedConnectionId;
+import org.apache.asterix.runtime.util.AsterixAppContextInfo;
+import org.apache.hyracks.api.client.IHyracksClientConnection;
+import org.apache.hyracks.api.dataflow.IOperatorDescriptor;
+import org.apache.hyracks.api.dataflow.OperatorDescriptorId;
+import org.apache.hyracks.api.job.JobId;
+import org.apache.hyracks.api.job.JobInfo;
+import org.apache.hyracks.api.job.JobSpecification;
+import org.apache.hyracks.api.job.JobStatus;
+import org.apache.log4j.Logger;
+
+public class ChannelEventsListener implements IActiveEntityEventsListener {
+ private static final Logger LOGGER = Logger.getLogger(ChannelEventsListener.class);
+ private final List<IActiveLifecycleEventSubscriber> subscribers;
+ private final Map<Long, ActiveJob> jobs;
+ private final Map<EntityId, ChannelJobInfo> jobInfos;
+ private EntityId entityId;
+
+ public ChannelEventsListener(EntityId entityId) {
+ this.entityId = entityId;
+ subscribers = new ArrayList<>();
+ jobs = new HashMap<>();
+ jobInfos = new HashMap<>();
+ }
+
+ @Override
+ public void notify(ActiveEvent event) {
+ try {
+ switch (event.getEventKind()) {
+ case JOB_START:
+ handleJobStartEvent(event);
+ break;
+ case JOB_FINISH:
+ handleJobFinishEvent(event);
+ break;
+ default:
+ LOGGER.warn("Unknown Channel Event" + event);
+ break;
+ }
+ } catch (Exception e) {
+ LOGGER.error("Unhandled Exception", e);
+ }
+ }
+
+ private synchronized void handleJobStartEvent(ActiveEvent message) throws Exception {
+ ActiveJob jobInfo = jobs.get(message.getJobId().getId());
+ handleJobStartMessage((ChannelJobInfo) jobInfo);
+ }
+
+ private synchronized void handleJobFinishEvent(ActiveEvent message) throws Exception {
+ ActiveJob jobInfo = jobs.get(message.getJobId().getId());
+ if (LOGGER.isInfoEnabled()) {
+ LOGGER.info("Channel Job finished for " + jobInfo);
+ }
+ handleJobFinishMessage((ChannelJobInfo) jobInfo);
+ }
+
+ private synchronized void handleJobFinishMessage(ChannelJobInfo cInfo) throws Exception {
+ EntityId channelJobId = cInfo.getEntityId();
+
+ IHyracksClientConnection hcc = AsterixAppContextInfo.INSTANCE.getHcc();
+ JobInfo info = hcc.getJobInfo(cInfo.getJobId());
+ JobStatus status = info.getStatus();
+ boolean failure = status != null && status.equals(JobStatus.FAILURE);
+
+ jobInfos.remove(channelJobId);
+ jobs.remove(cInfo.getJobId().getId());
+ // notify event listeners
+ ActiveLifecycleEvent event = failure ? ActiveLifecycleEvent.ACTIVE_JOB_FAILED
+ : ActiveLifecycleEvent.ACTIVE_JOB_ENDED;
+ notifyEventSubscribers(event);
+ }
+
+ private void notifyEventSubscribers(ActiveLifecycleEvent event) {
+ if (subscribers != null && !subscribers.isEmpty()) {
+ for (IActiveLifecycleEventSubscriber subscriber : subscribers) {
+ subscriber.handleEvent(event);
+ }
+ }
+ }
+
+ private static synchronized void handleJobStartMessage(ChannelJobInfo cInfo) throws Exception {
+ List<OperatorDescriptorId> channelOperatorIds = new ArrayList<>();
+ Map<OperatorDescriptorId, IOperatorDescriptor> operators = cInfo.getSpec().getOperatorMap();
+ for (Entry<OperatorDescriptorId, IOperatorDescriptor> entry : operators.entrySet()) {
+ IOperatorDescriptor opDesc = entry.getValue();
+ if (opDesc instanceof RepetitiveChannelOperatorDescriptor) {
+ channelOperatorIds.add(opDesc.getOperatorId());
+ }
+ }
+
+ IHyracksClientConnection hcc = AsterixAppContextInfo.INSTANCE.getHcc();
+ JobInfo info = hcc.getJobInfo(cInfo.getJobId());
+ List<String> locations = new ArrayList<>();
+ for (OperatorDescriptorId channelOperatorId : channelOperatorIds) {
+ Map<Integer, String> operatorLocations = info.getOperatorLocations().get(channelOperatorId);
+ int nOperatorInstances = operatorLocations.size();
+ for (int i = 0; i < nOperatorInstances; i++) {
+ locations.add(operatorLocations.get(i));
+ }
+ }
+ // intakeLocations is an ordered list;
+ // element at position i corresponds to location of i'th instance of operator
+ cInfo.setLocations(locations);
+ cInfo.setState(ActivityState.ACTIVE);
+ }
+
+ @Override
+ public void notifyJobCreation(JobId jobId, JobSpecification spec) {
+ EntityId channelId = null;
+ try {
+ for (IOperatorDescriptor opDesc : spec.getOperatorMap().values()) {
+ if (opDesc instanceof RepetitiveChannelOperatorDescriptor) {
+ channelId = ((RepetitiveChannelOperatorDescriptor) opDesc).getEntityId();
+ registerJob(channelId, jobId, spec);
+ return;
+ }
+ }
+ } catch (Exception e) {
+ LOGGER.error(e);
+ }
+ }
+
+ public synchronized void registerJob(EntityId entityId, JobId jobId, JobSpecification jobSpec) {
+ if (jobs.get(jobId.getId()) != null) {
+ throw new IllegalStateException("Channel job already registered");
+ }
+ if (jobInfos.containsKey(jobId.getId())) {
+ throw new IllegalStateException("Channel job already registered");
+ }
+
+ ChannelJobInfo cInfo = new ChannelJobInfo(entityId, jobId, ActivityState.CREATED, jobSpec);
+ jobs.put(jobId.getId(), cInfo);
+ jobInfos.put(entityId, cInfo);
+
+ if (LOGGER.isInfoEnabled()) {
+ LOGGER.info("Registered channel job [" + jobId + "]" + " for channel " + entityId);
+ }
+
+ notifyEventSubscribers(ActiveLifecycleEvent.ACTIVE_JOB_STARTED);
+
+ }
+
+ public JobSpecification getJobSpecification(EntityId activeJobId) {
+ return jobInfos.get(activeJobId).getSpec();
+ }
+
+ public ChannelJobInfo getJobInfo(EntityId activeJobId) {
+ return jobInfos.get(activeJobId);
+ }
+
+ public synchronized void registerEventSubscriber(IActiveLifecycleEventSubscriber subscriber) {
+ subscribers.add(subscriber);
+ }
+
+ public void deregisterEventSubscriber(IActiveLifecycleEventSubscriber subscriber) {
+ subscribers.remove(subscriber);
+ }
+
+ public synchronized boolean isChannelActive(EntityId activeJobId, IActiveLifecycleEventSubscriber eventSubscriber) {
+ boolean active = false;
+ ChannelJobInfo cInfo = jobInfos.get(activeJobId);
+ if (cInfo != null) {
+ active = cInfo.getState().equals(ActivityState.ACTIVE);
+ }
+ if (active) {
+ registerEventSubscriber(eventSubscriber);
+ }
+ return active;
+ }
+
+ public ChannelJobInfo getFeedConnectJobInfo(EntityId activeJobId) {
+ return jobInfos.get(activeJobId);
+ }
+
+ public FeedConnectionId[] getConnections() {
+ return jobInfos.keySet().toArray(new FeedConnectionId[jobInfos.size()]);
+ }
+
+ @Override
+ public boolean isEntityActive() {
+ return !jobs.isEmpty();
+ }
+
+ @Override
+ public EntityId getEntityId() {
+ return entityId;
+ }
+
+ @Override
+ public boolean isEntityUsingDataset(String dataverseName, String datasetName) {
+ if (entityId.getDataverse().equals(dataverseName)) {
+ String subscriptionsName = entityId.getEntityName() + BADConstants.subscriptionEnding;
+ String resultsName = entityId.getEntityName() + BADConstants.resultsEnding;
+ if (datasetName.equals(subscriptionsName) || datasetName.equals(resultsName)) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/metadata/ChannelSearchKey.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/metadata/ChannelSearchKey.java b/src/main/java/org/apache/asterix/bad/metadata/ChannelSearchKey.java
new file mode 100644
index 0000000..679548c
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/metadata/ChannelSearchKey.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad.metadata;
+
+import org.apache.asterix.metadata.MetadataNode;
+import org.apache.asterix.metadata.api.ExtensionMetadataDatasetId;
+import org.apache.asterix.metadata.api.IExtensionMetadataSearchKey;
+import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
+
+public class ChannelSearchKey implements IExtensionMetadataSearchKey {
+ private static final long serialVersionUID = 1L;
+ private final String dataverse;
+ private final String channel;
+
+ public ChannelSearchKey(String dataverse, String channel) {
+ this.dataverse = dataverse;
+ this.channel = channel;
+ }
+
+ @Override
+ public ExtensionMetadataDatasetId getDatasetId() {
+ return BADMetadataIndexes.BAD_CHANNEL_INDEX_ID;
+ }
+
+ @Override
+ public ITupleReference getSearchKey() {
+ return MetadataNode.createTuple(dataverse, channel);
+ }
+}
[05/12] asterixdb-bad git commit: Initial commit
Posted by sj...@apache.org.
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/generated-sources/javacc/org/apache/asterix/bad/lang/BADAQLParserConstants.java
----------------------------------------------------------------------
diff --git a/target/generated-sources/javacc/org/apache/asterix/bad/lang/BADAQLParserConstants.java b/target/generated-sources/javacc/org/apache/asterix/bad/lang/BADAQLParserConstants.java
new file mode 100644
index 0000000..efb5946
--- /dev/null
+++ b/target/generated-sources/javacc/org/apache/asterix/bad/lang/BADAQLParserConstants.java
@@ -0,0 +1,454 @@
+/* Generated By:JavaCC: Do not edit this line. BADAQLParserConstants.java */
+package org.apache.asterix.bad.lang;
+
+
+/**
+ * Token literal values and constants.
+ * Generated by org.javacc.parser.OtherFilesGen#start()
+ */
+public interface BADAQLParserConstants {
+
+ /** End of File. */
+ int EOF = 0;
+ /** RegularExpression Id. */
+ int BROKER = 10;
+ /** RegularExpression Id. */
+ int CHANNEL = 11;
+ /** RegularExpression Id. */
+ int APPLY = 12;
+ /** RegularExpression Id. */
+ int AS = 13;
+ /** RegularExpression Id. */
+ int ASC = 14;
+ /** RegularExpression Id. */
+ int AT = 15;
+ /** RegularExpression Id. */
+ int AUTOGENERATED = 16;
+ /** RegularExpression Id. */
+ int BTREE = 17;
+ /** RegularExpression Id. */
+ int BY = 18;
+ /** RegularExpression Id. */
+ int CLOSED = 19;
+ /** RegularExpression Id. */
+ int COMPACT = 20;
+ /** RegularExpression Id. */
+ int COMPACTION = 21;
+ /** RegularExpression Id. */
+ int CONNECT = 22;
+ /** RegularExpression Id. */
+ int CREATE = 23;
+ /** RegularExpression Id. */
+ int DATASET = 24;
+ /** RegularExpression Id. */
+ int DATAVERSE = 25;
+ /** RegularExpression Id. */
+ int DECLARE = 26;
+ /** RegularExpression Id. */
+ int DECOR = 27;
+ /** RegularExpression Id. */
+ int DEFINITION = 28;
+ /** RegularExpression Id. */
+ int DELETE = 29;
+ /** RegularExpression Id. */
+ int DESC = 30;
+ /** RegularExpression Id. */
+ int DISCONNECT = 31;
+ /** RegularExpression Id. */
+ int DISTINCT = 32;
+ /** RegularExpression Id. */
+ int DROP = 33;
+ /** RegularExpression Id. */
+ int ELSE = 34;
+ /** RegularExpression Id. */
+ int ENFORCED = 35;
+ /** RegularExpression Id. */
+ int EVERY = 36;
+ /** RegularExpression Id. */
+ int EXISTS = 37;
+ /** RegularExpression Id. */
+ int EXTERNAL = 38;
+ /** RegularExpression Id. */
+ int FEED = 39;
+ /** RegularExpression Id. */
+ int FILTER = 40;
+ /** RegularExpression Id. */
+ int FOR = 41;
+ /** RegularExpression Id. */
+ int FORMAT = 42;
+ /** RegularExpression Id. */
+ int FROM = 43;
+ /** RegularExpression Id. */
+ int FUNCTION = 44;
+ /** RegularExpression Id. */
+ int GROUP = 45;
+ /** RegularExpression Id. */
+ int HINTS = 46;
+ /** RegularExpression Id. */
+ int IF = 47;
+ /** RegularExpression Id. */
+ int IN = 48;
+ /** RegularExpression Id. */
+ int INDEX = 49;
+ /** RegularExpression Id. */
+ int INGESTION = 50;
+ /** RegularExpression Id. */
+ int INSERT = 51;
+ /** RegularExpression Id. */
+ int INTERNAL = 52;
+ /** RegularExpression Id. */
+ int INTO = 53;
+ /** RegularExpression Id. */
+ int KEY = 54;
+ /** RegularExpression Id. */
+ int KEYWORD = 55;
+ /** RegularExpression Id. */
+ int KEEPING = 56;
+ /** RegularExpression Id. */
+ int LET = 57;
+ /** RegularExpression Id. */
+ int LIMIT = 58;
+ /** RegularExpression Id. */
+ int LOAD = 59;
+ /** RegularExpression Id. */
+ int NGRAM = 60;
+ /** RegularExpression Id. */
+ int NODEGROUP = 61;
+ /** RegularExpression Id. */
+ int OFFSET = 62;
+ /** RegularExpression Id. */
+ int ON = 63;
+ /** RegularExpression Id. */
+ int OPEN = 64;
+ /** RegularExpression Id. */
+ int ORDER = 65;
+ /** RegularExpression Id. */
+ int OUTPUT = 66;
+ /** RegularExpression Id. */
+ int PATH = 67;
+ /** RegularExpression Id. */
+ int POLICY = 68;
+ /** RegularExpression Id. */
+ int PRESORTED = 69;
+ /** RegularExpression Id. */
+ int PRIMARY = 70;
+ /** RegularExpression Id. */
+ int REFRESH = 71;
+ /** RegularExpression Id. */
+ int RETURN = 72;
+ /** RegularExpression Id. */
+ int RTREE = 73;
+ /** RegularExpression Id. */
+ int RUN = 74;
+ /** RegularExpression Id. */
+ int SATISFIES = 75;
+ /** RegularExpression Id. */
+ int SECONDARY = 76;
+ /** RegularExpression Id. */
+ int SELECT = 77;
+ /** RegularExpression Id. */
+ int SET = 78;
+ /** RegularExpression Id. */
+ int SOME = 79;
+ /** RegularExpression Id. */
+ int TEMPORARY = 80;
+ /** RegularExpression Id. */
+ int THEN = 81;
+ /** RegularExpression Id. */
+ int TO = 82;
+ /** RegularExpression Id. */
+ int TYPE = 83;
+ /** RegularExpression Id. */
+ int UNION = 84;
+ /** RegularExpression Id. */
+ int UPDATE = 85;
+ /** RegularExpression Id. */
+ int UPSERT = 86;
+ /** RegularExpression Id. */
+ int USE = 87;
+ /** RegularExpression Id. */
+ int USING = 88;
+ /** RegularExpression Id. */
+ int WHERE = 89;
+ /** RegularExpression Id. */
+ int WITH = 90;
+ /** RegularExpression Id. */
+ int WRITE = 91;
+ /** RegularExpression Id. */
+ int CARET = 92;
+ /** RegularExpression Id. */
+ int DIV = 93;
+ /** RegularExpression Id. */
+ int IDIV = 94;
+ /** RegularExpression Id. */
+ int MINUS = 95;
+ /** RegularExpression Id. */
+ int MOD = 96;
+ /** RegularExpression Id. */
+ int MUL = 97;
+ /** RegularExpression Id. */
+ int PLUS = 98;
+ /** RegularExpression Id. */
+ int LEFTPAREN = 99;
+ /** RegularExpression Id. */
+ int RIGHTPAREN = 100;
+ /** RegularExpression Id. */
+ int LEFTBRACKET = 101;
+ /** RegularExpression Id. */
+ int RIGHTBRACKET = 102;
+ /** RegularExpression Id. */
+ int COLON = 103;
+ /** RegularExpression Id. */
+ int COMMA = 104;
+ /** RegularExpression Id. */
+ int DOT = 105;
+ /** RegularExpression Id. */
+ int QUES = 106;
+ /** RegularExpression Id. */
+ int LT = 107;
+ /** RegularExpression Id. */
+ int GT = 108;
+ /** RegularExpression Id. */
+ int LE = 109;
+ /** RegularExpression Id. */
+ int GE = 110;
+ /** RegularExpression Id. */
+ int EQ = 111;
+ /** RegularExpression Id. */
+ int NE = 112;
+ /** RegularExpression Id. */
+ int SIMILAR = 113;
+ /** RegularExpression Id. */
+ int ASSIGN = 114;
+ /** RegularExpression Id. */
+ int AND = 115;
+ /** RegularExpression Id. */
+ int OR = 116;
+ /** RegularExpression Id. */
+ int SYMBOLAT = 117;
+ /** RegularExpression Id. */
+ int SYMBOLHASH = 118;
+ /** RegularExpression Id. */
+ int LEFTBRACE = 119;
+ /** RegularExpression Id. */
+ int RIGHTBRACE = 120;
+ /** RegularExpression Id. */
+ int LEFTDBLBRACE = 121;
+ /** RegularExpression Id. */
+ int RIGHTDBLBRACE = 122;
+ /** RegularExpression Id. */
+ int INTEGER_LITERAL = 123;
+ /** RegularExpression Id. */
+ int MISSING = 124;
+ /** RegularExpression Id. */
+ int NULL = 125;
+ /** RegularExpression Id. */
+ int TRUE = 126;
+ /** RegularExpression Id. */
+ int FALSE = 127;
+ /** RegularExpression Id. */
+ int DIGIT = 128;
+ /** RegularExpression Id. */
+ int DOUBLE_LITERAL = 129;
+ /** RegularExpression Id. */
+ int FLOAT_LITERAL = 130;
+ /** RegularExpression Id. */
+ int DIGITS = 131;
+ /** RegularExpression Id. */
+ int LETTER = 132;
+ /** RegularExpression Id. */
+ int SPECIALCHARS = 133;
+ /** RegularExpression Id. */
+ int STRING_LITERAL = 134;
+ /** RegularExpression Id. */
+ int EscapeQuot = 135;
+ /** RegularExpression Id. */
+ int EscapeApos = 136;
+ /** RegularExpression Id. */
+ int EscapeBslash = 137;
+ /** RegularExpression Id. */
+ int EscapeSlash = 138;
+ /** RegularExpression Id. */
+ int EscapeBspace = 139;
+ /** RegularExpression Id. */
+ int EscapeFormf = 140;
+ /** RegularExpression Id. */
+ int EscapeNl = 141;
+ /** RegularExpression Id. */
+ int EscapeCr = 142;
+ /** RegularExpression Id. */
+ int EscapeTab = 143;
+ /** RegularExpression Id. */
+ int IDENTIFIER = 144;
+ /** RegularExpression Id. */
+ int VARIABLE = 145;
+
+ /** Lexical state. */
+ int DEFAULT = 0;
+ /** Lexical state. */
+ int IN_DBL_BRACE = 1;
+ /** Lexical state. */
+ int INSIDE_COMMENT = 2;
+
+ /** Literal token values. */
+ String[] tokenImage = {
+ "<EOF>",
+ "\"records\"",
+ "\"returning\"",
+ "\";\"",
+ "\"subscribe\"",
+ "\"unsubscribe\"",
+ "\"change\"",
+ "\"subscription\"",
+ "\"repetitive\"",
+ "\"period\"",
+ "\"broker\"",
+ "\"channel\"",
+ "\"apply\"",
+ "\"as\"",
+ "\"asc\"",
+ "\"at\"",
+ "\"autogenerated\"",
+ "\"btree\"",
+ "\"by\"",
+ "\"closed\"",
+ "\"compact\"",
+ "\"compaction\"",
+ "\"connect\"",
+ "\"create\"",
+ "\"dataset\"",
+ "\"dataverse\"",
+ "\"declare\"",
+ "\"decor\"",
+ "\"definition\"",
+ "\"delete\"",
+ "\"desc\"",
+ "\"disconnect\"",
+ "\"distinct\"",
+ "\"drop\"",
+ "\"else\"",
+ "\"enforced\"",
+ "\"every\"",
+ "\"exists\"",
+ "\"external\"",
+ "\"feed\"",
+ "\"filter\"",
+ "\"for\"",
+ "\"format\"",
+ "\"from\"",
+ "\"function\"",
+ "\"group\"",
+ "\"hints\"",
+ "\"if\"",
+ "\"in\"",
+ "\"index\"",
+ "\"ingestion\"",
+ "\"insert\"",
+ "\"internal\"",
+ "\"into\"",
+ "\"key\"",
+ "\"keyword\"",
+ "\"keeping\"",
+ "\"let\"",
+ "\"limit\"",
+ "\"load\"",
+ "\"ngram\"",
+ "\"nodegroup\"",
+ "\"offset\"",
+ "\"on\"",
+ "\"open\"",
+ "\"order\"",
+ "\"output\"",
+ "\"path\"",
+ "\"policy\"",
+ "\"pre-sorted\"",
+ "\"primary\"",
+ "\"refresh\"",
+ "\"return\"",
+ "\"rtree\"",
+ "\"run\"",
+ "\"satisfies\"",
+ "\"secondary\"",
+ "\"select\"",
+ "\"set\"",
+ "\"some\"",
+ "\"temporary\"",
+ "\"then\"",
+ "\"to\"",
+ "\"type\"",
+ "\"union\"",
+ "\"update\"",
+ "\"upsert\"",
+ "\"use\"",
+ "\"using\"",
+ "\"where\"",
+ "\"with\"",
+ "\"write\"",
+ "\"^\"",
+ "\"/\"",
+ "\"idiv\"",
+ "\"-\"",
+ "\"%\"",
+ "\"*\"",
+ "\"+\"",
+ "\"(\"",
+ "\")\"",
+ "\"[\"",
+ "\"]\"",
+ "\":\"",
+ "\",\"",
+ "\".\"",
+ "\"?\"",
+ "\"<\"",
+ "\">\"",
+ "\"<=\"",
+ "\">=\"",
+ "\"=\"",
+ "\"!=\"",
+ "\"~=\"",
+ "\":=\"",
+ "\"and\"",
+ "\"or\"",
+ "\"@\"",
+ "\"#\"",
+ "\"{\"",
+ "\"}\"",
+ "\"{{\"",
+ "\"}}\"",
+ "<INTEGER_LITERAL>",
+ "\"missing\"",
+ "\"null\"",
+ "\"true\"",
+ "\"false\"",
+ "<DIGIT>",
+ "<DOUBLE_LITERAL>",
+ "<FLOAT_LITERAL>",
+ "<DIGITS>",
+ "<LETTER>",
+ "<SPECIALCHARS>",
+ "<STRING_LITERAL>",
+ "\"\\\\\\\"\"",
+ "\"\\\\\\\'\"",
+ "\"\\\\\\\\\"",
+ "\"\\\\/\"",
+ "\"\\\\b\"",
+ "\"\\\\f\"",
+ "\"\\\\n\"",
+ "\"\\\\r\"",
+ "\"\\\\t\"",
+ "<IDENTIFIER>",
+ "<VARIABLE>",
+ "\" \"",
+ "\"\\t\"",
+ "\"\\r\"",
+ "\"\\n\"",
+ "<token of kind 150>",
+ "<token of kind 151>",
+ "\"/*\"",
+ "<token of kind 153>",
+ "\"/*\"",
+ "\"*/\"",
+ "<token of kind 156>",
+ };
+
+}
[09/12] asterixdb-bad git commit: Initial commit
Posted by sj...@apache.org.
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/optimizerts/results/channel/channel-unsubscribe.plan
----------------------------------------------------------------------
diff --git a/src/test/resources/optimizerts/results/channel/channel-unsubscribe.plan b/src/test/resources/optimizerts/results/channel/channel-unsubscribe.plan
new file mode 100644
index 0000000..a9e383a
--- /dev/null
+++ b/src/test/resources/optimizerts/results/channel/channel-unsubscribe.plan
@@ -0,0 +1,44 @@
+-- COMMIT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- INSERT_DELETE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$22] |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+-- COMMIT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- INSERT_DELETE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- MATERIALIZE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- BTREE_SEARCH |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/runtimets/queries/channel/create_channel_check_datasets/create_channel_check_datasets.1.ddl.aql
----------------------------------------------------------------------
diff --git a/src/test/resources/runtimets/queries/channel/create_channel_check_datasets/create_channel_check_datasets.1.ddl.aql b/src/test/resources/runtimets/queries/channel/create_channel_check_datasets/create_channel_check_datasets.1.ddl.aql
new file mode 100644
index 0000000..41b036a
--- /dev/null
+++ b/src/test/resources/runtimets/queries/channel/create_channel_check_datasets/create_channel_check_datasets.1.ddl.aql
@@ -0,0 +1,34 @@
+/*
+* Description : Create Channel Test. Confirms that the subscription and result datasets are created
+* Expected Res : Success
+* Date : March 2015
+* Author : Steven Jacobs
+*/
+
+drop dataverse channels if exists;
+create dataverse channels;
+use dataverse channels;
+
+create type TweetMessageTypeuuid as closed {
+ tweetid: uuid,
+ sender-location: point,
+ send-time: datetime,
+ referred-topics: {{ string }},
+ message-text: string,
+ countA: int32,
+ countB: int32
+}
+
+
+create dataset TweetMessageuuids(TweetMessageTypeuuid)
+primary key tweetid autogenerated;
+
+create function NearbyTweetsContainingText($location, $text) {
+ for $tweet in dataset TweetMessageuuids
+ let $circle := create-circle($location,30.0)
+ where contains($tweet.message-text,$text)
+ and spatial-intersect($tweet.sender-location, $location)
+ return $tweet.message-text
+};
+
+create repetitive channel nearbyTweetChannel using NearbyTweetsContainingText@2 period duration("PT10M");
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/runtimets/queries/channel/create_channel_check_datasets/create_channel_check_datasets.2.update.aql
----------------------------------------------------------------------
diff --git a/src/test/resources/runtimets/queries/channel/create_channel_check_datasets/create_channel_check_datasets.2.update.aql b/src/test/resources/runtimets/queries/channel/create_channel_check_datasets/create_channel_check_datasets.2.update.aql
new file mode 100644
index 0000000..e69de29
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/runtimets/queries/channel/create_channel_check_datasets/create_channel_check_datasets.3.query.aql
----------------------------------------------------------------------
diff --git a/src/test/resources/runtimets/queries/channel/create_channel_check_datasets/create_channel_check_datasets.3.query.aql b/src/test/resources/runtimets/queries/channel/create_channel_check_datasets/create_channel_check_datasets.3.query.aql
new file mode 100644
index 0000000..eb341e9
--- /dev/null
+++ b/src/test/resources/runtimets/queries/channel/create_channel_check_datasets/create_channel_check_datasets.3.query.aql
@@ -0,0 +1,7 @@
+use dataverse channels;
+
+for $result in dataset Metadata.Channel where $result.ChannelName = "nearbyTweetChannel"
+for $x in dataset Metadata.Dataset
+where $x.DatasetName = $result.SubscriptionsDatasetName
+or $x.DatasetName = $result.ResultsDatasetName
+return $x;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/runtimets/queries/channel/create_channel_check_metadata/create_channel_check_metadata.1.ddl.aql
----------------------------------------------------------------------
diff --git a/src/test/resources/runtimets/queries/channel/create_channel_check_metadata/create_channel_check_metadata.1.ddl.aql b/src/test/resources/runtimets/queries/channel/create_channel_check_metadata/create_channel_check_metadata.1.ddl.aql
new file mode 100644
index 0000000..7bace03
--- /dev/null
+++ b/src/test/resources/runtimets/queries/channel/create_channel_check_metadata/create_channel_check_metadata.1.ddl.aql
@@ -0,0 +1,34 @@
+/*
+* Description : Create Channel Test
+* Expected Res : Success
+* Date : March 2015
+* Author : Steven Jacobs
+*/
+
+drop dataverse channels if exists;
+create dataverse channels;
+use dataverse channels;
+
+create type TweetMessageTypeuuid as closed {
+ tweetid: uuid,
+ sender-location: point,
+ send-time: datetime,
+ referred-topics: {{ string }},
+ message-text: string,
+ countA: int32,
+ countB: int32
+}
+
+
+create dataset TweetMessageuuids(TweetMessageTypeuuid)
+primary key tweetid autogenerated;
+
+create function NearbyTweetsContainingText($location, $text) {
+ for $tweet in dataset TweetMessageuuids
+ let $circle := create-circle($location,30.0)
+ where contains($tweet.message-text,$text)
+ and spatial-intersect($tweet.sender-location, $location)
+ return $tweet.message-text
+};
+
+create repetitive channel nearbyTweetChannel using NearbyTweetsContainingText@2 period duration("PT10M");
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/runtimets/queries/channel/create_channel_check_metadata/create_channel_check_metadata.2.update.aql
----------------------------------------------------------------------
diff --git a/src/test/resources/runtimets/queries/channel/create_channel_check_metadata/create_channel_check_metadata.2.update.aql b/src/test/resources/runtimets/queries/channel/create_channel_check_metadata/create_channel_check_metadata.2.update.aql
new file mode 100644
index 0000000..e69de29
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/runtimets/queries/channel/create_channel_check_metadata/create_channel_check_metadata.3.query.aql
----------------------------------------------------------------------
diff --git a/src/test/resources/runtimets/queries/channel/create_channel_check_metadata/create_channel_check_metadata.3.query.aql b/src/test/resources/runtimets/queries/channel/create_channel_check_metadata/create_channel_check_metadata.3.query.aql
new file mode 100644
index 0000000..9a1e170
--- /dev/null
+++ b/src/test/resources/runtimets/queries/channel/create_channel_check_metadata/create_channel_check_metadata.3.query.aql
@@ -0,0 +1,3 @@
+use dataverse channels;
+
+for $result in dataset Metadata.Channel return $result;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.1.ddl.aql
----------------------------------------------------------------------
diff --git a/src/test/resources/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.1.ddl.aql b/src/test/resources/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.1.ddl.aql
new file mode 100644
index 0000000..afc7d5e
--- /dev/null
+++ b/src/test/resources/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.1.ddl.aql
@@ -0,0 +1,38 @@
+/*
+* Description : Drop Channel Test. Check Metadata
+* Expected Res : Success
+* Date : March 2015
+* Author : Steven Jacobs
+*/
+
+drop dataverse channels if exists;
+create dataverse channels;
+use dataverse channels;
+
+create type TweetMessageTypeuuid as closed {
+ tweetid: uuid,
+ sender-location: point,
+ send-time: datetime,
+ referred-topics: {{ string }},
+ message-text: string,
+ countA: int32,
+ countB: int32
+}
+
+
+create dataset TweetMessageuuids(TweetMessageTypeuuid)
+primary key tweetid autogenerated;
+
+create function NearbyTweetsContainingText($location, $text) {
+ for $tweet in dataset TweetMessageuuids
+ let $circle := create-circle($location,30.0)
+ where contains($tweet.message-text,$text)
+ and spatial-intersect($tweet.sender-location, $location)
+ return $tweet.message-text
+};
+
+create repetitive channel nearbyTweetChannel1 using NearbyTweetsContainingText@2 period duration("PT10M");
+
+create repetitive channel nearbyTweetChannel2 using NearbyTweetsContainingText@2 period duration("PT10M");
+
+create repetitive channel nearbyTweetChannel3 using NearbyTweetsContainingText@2 period duration("PT10M");
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.2.update.aql
----------------------------------------------------------------------
diff --git a/src/test/resources/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.2.update.aql b/src/test/resources/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.2.update.aql
new file mode 100644
index 0000000..f466b9c
--- /dev/null
+++ b/src/test/resources/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.2.update.aql
@@ -0,0 +1,3 @@
+use dataverse channels;
+
+drop channel nearbyTweetChannel2;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.3.query.aql
----------------------------------------------------------------------
diff --git a/src/test/resources/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.3.query.aql b/src/test/resources/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.3.query.aql
new file mode 100644
index 0000000..e762a27
--- /dev/null
+++ b/src/test/resources/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.3.query.aql
@@ -0,0 +1,7 @@
+use dataverse channels;
+
+for $result in dataset Metadata.Channel
+for $x in dataset Metadata.Dataset
+where $x.DatasetName = $result.SubscriptionsDatasetName
+or $x.DatasetName = $result.ResultsDatasetName
+return $x;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.1.ddl.aql
----------------------------------------------------------------------
diff --git a/src/test/resources/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.1.ddl.aql b/src/test/resources/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.1.ddl.aql
new file mode 100644
index 0000000..afc7d5e
--- /dev/null
+++ b/src/test/resources/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.1.ddl.aql
@@ -0,0 +1,38 @@
+/*
+* Description : Drop Channel Test. Check Metadata
+* Expected Res : Success
+* Date : March 2015
+* Author : Steven Jacobs
+*/
+
+drop dataverse channels if exists;
+create dataverse channels;
+use dataverse channels;
+
+create type TweetMessageTypeuuid as closed {
+ tweetid: uuid,
+ sender-location: point,
+ send-time: datetime,
+ referred-topics: {{ string }},
+ message-text: string,
+ countA: int32,
+ countB: int32
+}
+
+
+create dataset TweetMessageuuids(TweetMessageTypeuuid)
+primary key tweetid autogenerated;
+
+create function NearbyTweetsContainingText($location, $text) {
+ for $tweet in dataset TweetMessageuuids
+ let $circle := create-circle($location,30.0)
+ where contains($tweet.message-text,$text)
+ and spatial-intersect($tweet.sender-location, $location)
+ return $tweet.message-text
+};
+
+create repetitive channel nearbyTweetChannel1 using NearbyTweetsContainingText@2 period duration("PT10M");
+
+create repetitive channel nearbyTweetChannel2 using NearbyTweetsContainingText@2 period duration("PT10M");
+
+create repetitive channel nearbyTweetChannel3 using NearbyTweetsContainingText@2 period duration("PT10M");
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.2.update.aql
----------------------------------------------------------------------
diff --git a/src/test/resources/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.2.update.aql b/src/test/resources/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.2.update.aql
new file mode 100644
index 0000000..f466b9c
--- /dev/null
+++ b/src/test/resources/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.2.update.aql
@@ -0,0 +1,3 @@
+use dataverse channels;
+
+drop channel nearbyTweetChannel2;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.3.query.aql
----------------------------------------------------------------------
diff --git a/src/test/resources/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.3.query.aql b/src/test/resources/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.3.query.aql
new file mode 100644
index 0000000..9a1e170
--- /dev/null
+++ b/src/test/resources/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.3.query.aql
@@ -0,0 +1,3 @@
+use dataverse channels;
+
+for $result in dataset Metadata.Channel return $result;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.1.ddl.aql
----------------------------------------------------------------------
diff --git a/src/test/resources/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.1.ddl.aql b/src/test/resources/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.1.ddl.aql
new file mode 100644
index 0000000..41b036a
--- /dev/null
+++ b/src/test/resources/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.1.ddl.aql
@@ -0,0 +1,34 @@
+/*
+* Description : Create Channel Test. Confirms that the subscription and result datasets are created
+* Expected Res : Success
+* Date : March 2015
+* Author : Steven Jacobs
+*/
+
+drop dataverse channels if exists;
+create dataverse channels;
+use dataverse channels;
+
+create type TweetMessageTypeuuid as closed {
+ tweetid: uuid,
+ sender-location: point,
+ send-time: datetime,
+ referred-topics: {{ string }},
+ message-text: string,
+ countA: int32,
+ countB: int32
+}
+
+
+create dataset TweetMessageuuids(TweetMessageTypeuuid)
+primary key tweetid autogenerated;
+
+create function NearbyTweetsContainingText($location, $text) {
+ for $tweet in dataset TweetMessageuuids
+ let $circle := create-circle($location,30.0)
+ where contains($tweet.message-text,$text)
+ and spatial-intersect($tweet.sender-location, $location)
+ return $tweet.message-text
+};
+
+create repetitive channel nearbyTweetChannel using NearbyTweetsContainingText@2 period duration("PT10M");
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.2.update.aql
----------------------------------------------------------------------
diff --git a/src/test/resources/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.2.update.aql b/src/test/resources/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.2.update.aql
new file mode 100644
index 0000000..6d35506
--- /dev/null
+++ b/src/test/resources/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.2.update.aql
@@ -0,0 +1,7 @@
+use dataverse channels;
+
+subscribe to nearbyTweetChannel (point("30.0, 30.0"), "Live");
+
+subscribe to nearbyTweetChannel (point("20.0, 20.0"), "Long");
+
+subscribe to nearbyTweetChannel (point("10.0, 10.0"), "Prosper");
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.3.query.aql
----------------------------------------------------------------------
diff --git a/src/test/resources/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.3.query.aql b/src/test/resources/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.3.query.aql
new file mode 100644
index 0000000..0d2c46e
--- /dev/null
+++ b/src/test/resources/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.3.query.aql
@@ -0,0 +1,4 @@
+use dataverse channels;
+
+for $test in dataset nearbyTweetChannelSubscriptions
+return $test.param1;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/runtimets/results/channels/create_channel_check_datasets/create_channel_check_datasets.1.adm
----------------------------------------------------------------------
diff --git a/src/test/resources/runtimets/results/channels/create_channel_check_datasets/create_channel_check_datasets.1.adm b/src/test/resources/runtimets/results/channels/create_channel_check_datasets/create_channel_check_datasets.1.adm
new file mode 100644
index 0000000..baa5299
--- /dev/null
+++ b/src/test/resources/runtimets/results/channels/create_channel_check_datasets/create_channel_check_datasets.1.adm
@@ -0,0 +1,3 @@
+[ { "DataverseName": "channels", "DatasetName": "nearbyTweetChannelResults", "DataTypeName": "nearbyTweetChannelResultsType", "DatasetType": "INTERNAL", "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ "rid" ], "PrimaryKey": [ "rid" ], "GroupName": "DEFAULT_NG_ALL_NODES", "Autogenerated": true, "CompactionPolicy": "prefix", "CompactionPolicyProperties": [ { "Name": "max-mergable-component-size", "Value": "1073741824" }, { "Name": "max-tolerance-component-count", "Value": "5" } ] }, "ExternalDetails": null, "Hints": {{ }}, "Timestamp": "Tue Mar 10 15:20:05 PDT 2015", "DatasetId": 106i32, "PendingOp": 0i32 }
+, { "DataverseName": "channels", "DatasetName": "nearbyTweetChannelSubscriptions", "DataTypeName": "nearbyTweetChannelSubscriptionsType", "DatasetType": "INTERNAL", "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ "subscription-id" ], "PrimaryKey": [ "subscription-id" ], "GroupName": "DEFAULT_NG_ALL_NODES", "Autogenerated": true, "CompactionPolicy": "prefix", "CompactionPolicyProperties": [ { "Name": "max-mergable-component-size", "Value": "1073741824" }, { "Name": "max-tolerance-component-count", "Value": "5" } ] }, "ExternalDetails": null, "Hints": {{ }}, "Timestamp": "Tue Mar 10 15:20:05 PDT 2015", "DatasetId": 105i32, "PendingOp": 0i32 }
+ ]
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/runtimets/results/channels/create_channel_check_metadata/create_channel_check_metadata.1.adm
----------------------------------------------------------------------
diff --git a/src/test/resources/runtimets/results/channels/create_channel_check_metadata/create_channel_check_metadata.1.adm b/src/test/resources/runtimets/results/channels/create_channel_check_metadata/create_channel_check_metadata.1.adm
new file mode 100644
index 0000000..66a52f3
--- /dev/null
+++ b/src/test/resources/runtimets/results/channels/create_channel_check_metadata/create_channel_check_metadata.1.adm
@@ -0,0 +1,2 @@
+[ { "DataverseName": "channels", "ChannelName": "nearbyTweetChannel", "SubscriptionsDatasetName": "nearbyTweetChannelSubscriptions", "ResultsDatasetName": "nearbyTweetChannelResults", "Function": "channels.NearbyTweetsContainingText@2", "Duration": "PT10M" }
+ ]
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/runtimets/results/channels/drop_channel_check_datasets/drop_channel_check_datasets.1.adm
----------------------------------------------------------------------
diff --git a/src/test/resources/runtimets/results/channels/drop_channel_check_datasets/drop_channel_check_datasets.1.adm b/src/test/resources/runtimets/results/channels/drop_channel_check_datasets/drop_channel_check_datasets.1.adm
new file mode 100644
index 0000000..7b6fdf4
--- /dev/null
+++ b/src/test/resources/runtimets/results/channels/drop_channel_check_datasets/drop_channel_check_datasets.1.adm
@@ -0,0 +1,5 @@
+[ { "DataverseName": "channels", "DatasetName": "nearbyTweetChannel1Results", "DataTypeName": "nearbyTweetChannel1ResultsType", "DatasetType": "INTERNAL", "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ "rid" ], "PrimaryKey": [ "rid" ], "GroupName": "DEFAULT_NG_ALL_NODES", "Autogenerated": true, "CompactionPolicy": "prefix", "CompactionPolicyProperties": [ { "Name": "max-mergable-component-size", "Value": "1073741824" }, { "Name": "max-tolerance-component-count", "Value": "5" } ] }, "ExternalDetails": null, "Hints": {{ }}, "Timestamp": "Wed Mar 11 10:11:53 PDT 2015", "DatasetId": 116i32, "PendingOp": 0i32 }
+, { "DataverseName": "channels", "DatasetName": "nearbyTweetChannel1Subscriptions", "DataTypeName": "nearbyTweetChannel1SubscriptionsType", "DatasetType": "INTERNAL", "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ "subscription-id" ], "PrimaryKey": [ "subscription-id" ], "GroupName": "DEFAULT_NG_ALL_NODES", "Autogenerated": true, "CompactionPolicy": "prefix", "CompactionPolicyProperties": [ { "Name": "max-mergable-component-size", "Value": "1073741824" }, { "Name": "max-tolerance-component-count", "Value": "5" } ] }, "ExternalDetails": null, "Hints": {{ }}, "Timestamp": "Wed Mar 11 10:11:53 PDT 2015", "DatasetId": 115i32, "PendingOp": 0i32 }
+, { "DataverseName": "channels", "DatasetName": "nearbyTweetChannel3Results", "DataTypeName": "nearbyTweetChannel3ResultsType", "DatasetType": "INTERNAL", "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ "rid" ], "PrimaryKey": [ "rid" ], "GroupName": "DEFAULT_NG_ALL_NODES", "Autogenerated": true, "CompactionPolicy": "prefix", "CompactionPolicyProperties": [ { "Name": "max-mergable-component-size", "Value": "1073741824" }, { "Name": "max-tolerance-component-count", "Value": "5" } ] }, "ExternalDetails": null, "Hints": {{ }}, "Timestamp": "Wed Mar 11 10:11:53 PDT 2015", "DatasetId": 120i32, "PendingOp": 0i32 }
+, { "DataverseName": "channels", "DatasetName": "nearbyTweetChannel3Subscriptions", "DataTypeName": "nearbyTweetChannel3SubscriptionsType", "DatasetType": "INTERNAL", "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ "subscription-id" ], "PrimaryKey": [ "subscription-id" ], "GroupName": "DEFAULT_NG_ALL_NODES", "Autogenerated": true, "CompactionPolicy": "prefix", "CompactionPolicyProperties": [ { "Name": "max-mergable-component-size", "Value": "1073741824" }, { "Name": "max-tolerance-component-count", "Value": "5" } ] }, "ExternalDetails": null, "Hints": {{ }}, "Timestamp": "Wed Mar 11 10:11:53 PDT 2015", "DatasetId": 119i32, "PendingOp": 0i32 }
+ ]
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/runtimets/results/channels/drop_channel_check_metadata/drop_channel_check_metadata.1.adm
----------------------------------------------------------------------
diff --git a/src/test/resources/runtimets/results/channels/drop_channel_check_metadata/drop_channel_check_metadata.1.adm b/src/test/resources/runtimets/results/channels/drop_channel_check_metadata/drop_channel_check_metadata.1.adm
new file mode 100644
index 0000000..de2948a
--- /dev/null
+++ b/src/test/resources/runtimets/results/channels/drop_channel_check_metadata/drop_channel_check_metadata.1.adm
@@ -0,0 +1,3 @@
+[ { "DataverseName": "channels", "ChannelName": "nearbyTweetChannel1", "SubscriptionsDatasetName": "nearbyTweetChannel1Subscriptions", "ResultsDatasetName": "nearbyTweetChannel1Results", "Function": "channels.NearbyTweetsContainingText@2", "Duration": "PT10M" }
+, { "DataverseName": "channels", "ChannelName": "nearbyTweetChannel3", "SubscriptionsDatasetName": "nearbyTweetChannel3Subscriptions", "ResultsDatasetName": "nearbyTweetChannel3Results", "Function": "channels.NearbyTweetsContainingText@2", "Duration": "PT10M" }
+ ]
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/runtimets/results/channels/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.1.adm
----------------------------------------------------------------------
diff --git a/src/test/resources/runtimets/results/channels/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.1.adm b/src/test/resources/runtimets/results/channels/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.1.adm
new file mode 100644
index 0000000..2bec6d3
--- /dev/null
+++ b/src/test/resources/runtimets/results/channels/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.1.adm
@@ -0,0 +1,4 @@
+[ "Live"
+, "Long"
+, "Prosper"
+ ]
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/.plxarc
----------------------------------------------------------------------
diff --git a/target/.plxarc b/target/.plxarc
new file mode 100644
index 0000000..67ea6ee
--- /dev/null
+++ b/target/.plxarc
@@ -0,0 +1 @@
+maven-shared-archive-resources
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/asterix-opt-0.8.9-SNAPSHOT.jar
----------------------------------------------------------------------
diff --git a/target/asterix-opt-0.8.9-SNAPSHOT.jar b/target/asterix-opt-0.8.9-SNAPSHOT.jar
new file mode 100644
index 0000000..8990801
Binary files /dev/null and b/target/asterix-opt-0.8.9-SNAPSHOT.jar differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/checkstyle-checker.xml
----------------------------------------------------------------------
diff --git a/target/checkstyle-checker.xml b/target/checkstyle-checker.xml
new file mode 100644
index 0000000..d6bd53a
--- /dev/null
+++ b/target/checkstyle-checker.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
+ "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
+<module name="Checker"><module name="FileTabCharacter"/>
+</module>
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/checkstyle-result.xml
----------------------------------------------------------------------
diff --git a/target/checkstyle-result.xml b/target/checkstyle-result.xml
new file mode 100644
index 0000000..4620458
--- /dev/null
+++ b/target/checkstyle-result.xml
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<checkstyle version="6.11.2">
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/BADConstants.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/ChannelJobInfo.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/ChannelJobService.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/BADCompilationProvider.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/BADLangExtension.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/BADParserFactory.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/BADQueryTranslatorExtension.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/BADQueryTranslatorFactory.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/BADStatementExecutor.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/statement/BrokerDropStatement.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/statement/ChannelDropStatement.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/statement/ChannelSubscribeStatement.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/statement/ChannelUnsubscribeStatement.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/statement/CreateBrokerStatement.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/statement/CreateChannelStatement.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/BADMetadataExtension.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/BADMetadataIndexes.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/BADMetadataRecordTypes.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/Broker.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/BrokerSearchKey.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/BrokerTupleTranslator.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/Channel.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/ChannelEventsListener.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/ChannelSearchKey.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/ChannelTupleTranslator.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/rules/InsertBrokerNotifierForChannelRule.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerOperator.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerPOperator.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntimeFactory.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorDescriptor.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorNodePushable.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/java/org/apache/asterix/bad/test/BADExecutionTest.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/java/org/apache/asterix/bad/test/BADOptimizerTest.java">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/resources/git.properties">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/resources/conf/asterix-build-configuration.xml">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/resources/conf/cluster.xml">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/resources/conf/hyracks-deployment.properties">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/resources/conf/test.properties">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/resources/optimizerts/queries/channel/channel-create.aql">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/resources/optimizerts/queries/channel/channel-subscribe.aql">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/resources/optimizerts/queries/channel/channel-unsubscribe.aql">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/resources/runtimets/queries/channel/create_channel_check_datasets/create_channel_check_datasets.1.ddl.aql">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/resources/runtimets/queries/channel/create_channel_check_datasets/create_channel_check_datasets.2.update.aql">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/resources/runtimets/queries/channel/create_channel_check_datasets/create_channel_check_datasets.3.query.aql">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/resources/runtimets/queries/channel/create_channel_check_metadata/create_channel_check_metadata.1.ddl.aql">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/resources/runtimets/queries/channel/create_channel_check_metadata/create_channel_check_metadata.2.update.aql">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/resources/runtimets/queries/channel/create_channel_check_metadata/create_channel_check_metadata.3.query.aql">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/resources/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.1.ddl.aql">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/resources/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.2.update.aql">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/resources/runtimets/queries/channel/drop_channel_check_datasets/drop_channel_check_datasets.3.query.aql">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/resources/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.1.ddl.aql">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/resources/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.2.update.aql">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/resources/runtimets/queries/channel/drop_channel_check_metadata/drop_channel_check_metadata.3.query.aql">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/resources/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.1.ddl.aql">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/resources/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.2.update.aql">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/resources/runtimets/queries/channel/subscribe_channel_check_subscriptions/subscribe_channel_check_subscriptions.3.query.aql">
+</file>
+<file name="/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/resources/runtimets/testsuite.xml">
+</file>
+</checkstyle>
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/checkstyle-rules.xml
----------------------------------------------------------------------
diff --git a/target/checkstyle-rules.xml b/target/checkstyle-rules.xml
new file mode 100644
index 0000000..d6bd53a
--- /dev/null
+++ b/target/checkstyle-rules.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
+ "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
+<module name="Checker"><module name="FileTabCharacter"/>
+</module>
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/META-INF/DEPENDENCIES
----------------------------------------------------------------------
diff --git a/target/classes/META-INF/DEPENDENCIES b/target/classes/META-INF/DEPENDENCIES
new file mode 100644
index 0000000..3c60591
--- /dev/null
+++ b/target/classes/META-INF/DEPENDENCIES
@@ -0,0 +1,489 @@
+// ------------------------------------------------------------------
+// Transitive dependencies of this project determined from the
+// maven pom organized by organization.
+// ------------------------------------------------------------------
+
+asterix-opt
+
+
+From: 'an unknown organization'
+ - AntLR Parser Generator (http://www.antlr.org/) antlr:antlr:jar:2.7.7
+ License: BSD License (http://www.antlr.org/license.html)
+ - AOP alliance (http://aopalliance.sourceforge.net) aopalliance:aopalliance:jar:1.0
+ License: Public Domain
+ - Guava: Google Core Libraries for Java (http://code.google.com/p/guava-libraries/guava) com.google.guava:guava:bundle:18.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - JSON.simple (http://code.google.com/p/json-simple/) com.googlecode.json-simple:json-simple:jar:1.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Microsoft Windows Azure Client API (https://github.com/WindowsAzure/azure-sdk-for-java) com.microsoft.windowsazure:microsoft-windowsazure-api:jar:0.4.4
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - rome (http://rometools.github.io/rome/) com.rometools:rome:jar:1.5.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - rome-utils (http://rometools.github.io/rome-utils/) com.rometools:rome-utils:jar:1.5.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - ParaNamer Core (http://paranamer.codehaus.org/paranamer) com.thoughtworks.paranamer:paranamer:jar:2.3
+ License: BSD (LICENSE.txt)
+ - commons-beanutils commons-beanutils:commons-beanutils:jar:1.7.0
+
+ - commons-logging-api commons-logging:commons-logging-api:jar:1.0.4
+
+ - rxjava (https://github.com/ReactiveX/RxJava) io.reactivex:rxjava:jar:1.1.8
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - JavaBeans Activation Framework (JAF) (http://java.sun.com/products/javabeans/jaf/index.jsp) javax.activation:activation:jar:1.1
+ License: Common Development and Distribution License (CDDL) v1.0 (https://glassfish.dev.java.net/public/CDDLv1.0.html)
+ - javax.inject (http://code.google.com/p/atinject/) javax.inject:javax.inject:jar:1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - JDO2 API javax.jdo:jdo2-api:jar:2.3-20090302111651
+
+ - servlet-api javax.servlet:servlet-api:jar:2.5
+
+ - jsp-api javax.servlet.jsp:jsp-api:jar:2.1
+
+ - Java Transaction API (http://java.sun.com/products/jta) javax.transaction:jta:jar:1.1
+
+ - Streaming API for XML javax.xml.stream:stax-api:jar:1.0-2
+ License: GNU General Public Library (http://www.gnu.org/licenses/gpl.txt) License: COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 (http://www.sun.com/cddl/cddl.html)
+ - jdom jdom:jdom:jar:1.0
+
+ - An open source Java toolkit for Amazon S3 (http://jets3t.s3.amazonaws.com/index.html) net.java.dev.jets3t:jets3t:jar:0.6.1
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+ - ANTLR ST4 4.0.4 (http://www.stringtemplate.org) org.antlr:ST4:jar:4.0.4
+ License: BSD licence (http://antlr.org/license.html)
+ - Antlr 3.4 Runtime (http://www.antlr.org) org.antlr:antlr-runtime:jar:3.4
+
+ - ANTLR StringTemplate (http://www.stringtemplate.org) org.antlr:stringtemplate:jar:3.2.1
+ License: BSD licence (http://antlr.org/license.html)
+ - Apache Thrift (http://thrift.apache.org) org.apache.thrift:libfb303:pom:0.9.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Thrift (http://thrift.apache.org) org.apache.thrift:libthrift:pom:0.9.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - zookeeper org.apache.zookeeper:zookeeper:pom:3.4.5
+
+ - Jettison org.codehaus.jettison:jettison:bundle:1.1
+
+ - DataNucleus JDO API plugin (http://www.datanucleus.org) org.datanucleus:datanucleus-api-jdo:jar:3.2.6
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - DataNucleus Core (http://www.datanucleus.org) org.datanucleus:datanucleus-core:jar:3.2.10
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - DataNucleus RDBMS (http://www.datanucleus.org) org.datanucleus:datanucleus-rdbms:jar:3.2.9
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hamcrest Core (https://github.com/hamcrest/JavaHamcrest/hamcrest-core) org.hamcrest:hamcrest-core:jar:1.3
+ License: New BSD License (http://www.opensource.org/licenses/bsd-license.php)
+ - ini4j (http://www.ini4j.org) org.ini4j:ini4j:jar:0.5.4
+ License: Apache 2 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - JAXB2 Commons - Value Constructor Plugin (http://java.net/projects/jaxb2-commons/pages/value-constructor) org.jvnet.jaxb2_commons:jaxb2-value-constructor:jar:3.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - XZ for Java (http://tukaani.org/xz/java.html) org.tukaani:xz:jar:1.0
+ License: Public Domain
+ - twitter4j-core (http://twitter4j.org/) org.twitter4j:twitter4j-core:jar:4.0.3
+ License: Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+ - twitter4j-stream (http://twitter4j.org/) org.twitter4j:twitter4j-stream:jar:4.0.3
+ License: Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+ - oro oro:oro:jar:2.0.8
+
+ - rome rome:rome:jar:1.0.1-modified-01
+
+ - StAX API (http://stax.codehaus.org/) stax:stax-api:jar:1.0.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Xerces2-j (https://xerces.apache.org/xerces2-j/) xerces:xercesImpl:jar:2.11.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - XML Commons External Components XML APIs (http://xml.apache.org/commons/components/external/) xml-apis:xml-apis:jar:1.4.01
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt) License: The SAX License (http://www.saxproject.org/copying.html) License: The W3C License (http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/java-binding.zip)
+ - xmlenc Library (http://xmlenc.sourceforge.net) xmlenc:xmlenc:jar:0.52
+ License: The BSD License (http://www.opensource.org/licenses/bsd-license.php)
+
+From: 'Apache Software Foundation' (http://apache.org)
+ - Wicket Core (http://wicket.apache.org/wicket-core/wicket-core) org.apache.wicket:wicket-core:jar:1.5.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Wicket Request (http://maven.apache.org) org.apache.wicket:wicket-request:jar:1.5.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Wicket Util (http://maven.apache.org) org.apache.wicket:wicket-util:jar:1.5.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'Apache Software Foundation' (http://db.apache.org/)
+ - Apache Derby Database Engine and Embedded JDBC Driver (http://db.apache.org/derby/derby/) org.apache.derby:derby:jar:10.10.1.1
+ License: Apache 2 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'Apache Software Foundation' (http://jakarta.apache.org/)
+ - HttpClient (http://jakarta.apache.org/httpcomponents/httpclient-3.x/) commons-httpclient:commons-httpclient:jar:3.1
+ License: Apache License (http://www.apache.org/licenses/LICENSE-2.0)
+
+From: 'Apache Software Foundation' (http://www.apache.org)
+ - JDO API (http://db.apache.org/jdo) javax.jdo:jdo-api:jar:3.0.1
+ License: Apache 2 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Log4j (http://logging.apache.org/log4j/1.2/) log4j:log4j:bundle:1.2.17
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Hadoop Annotations org.apache.hadoop:hadoop-annotations:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Hadoop Auth org.apache.hadoop:hadoop-auth:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Hadoop Client org.apache.hadoop:hadoop-client:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Hadoop Common org.apache.hadoop:hadoop-common:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Hadoop Common org.apache.hadoop:hadoop-common:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Hadoop HDFS org.apache.hadoop:hadoop-hdfs:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Hadoop HDFS org.apache.hadoop:hadoop-hdfs:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-mapreduce-client-app org.apache.hadoop:hadoop-mapreduce-client-app:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-mapreduce-client-common org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-mapreduce-client-core org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-mapreduce-client-hs org.apache.hadoop:hadoop-mapreduce-client-hs:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-mapreduce-client-jobclient org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-mapreduce-client-jobclient org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-mapreduce-client-shuffle org.apache.hadoop:hadoop-mapreduce-client-shuffle:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Hadoop Mini-Cluster org.apache.hadoop:hadoop-minicluster:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-yarn-api org.apache.hadoop:hadoop-yarn-api:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-yarn-client org.apache.hadoop:hadoop-yarn-client:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-yarn-common org.apache.hadoop:hadoop-yarn-common:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-yarn-server-common org.apache.hadoop:hadoop-yarn-server-common:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-yarn-server-nodemanager org.apache.hadoop:hadoop-yarn-server-nodemanager:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-yarn-server-resourcemanager org.apache.hadoop:hadoop-yarn-server-resourcemanager:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-yarn-server-tests org.apache.hadoop:hadoop-yarn-server-tests:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-yarn-server-web-proxy org.apache.hadoop:hadoop-yarn-server-web-proxy:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'Couchbase, Inc.' (http://couchbase.com)
+ - Couchbase JVM Core IO (http://couchbase.com) com.couchbase.client:core-io:jar:1.3.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'e-movimento' (http://www.e-movimento.com)
+ - privileged accessor (http://code.google.com/p/privilegedaccessor/) com.e-movimento.tinytools:privilegedaccessor:jar:1.2.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'FasterXML' (http://fasterxml.com)
+ - Jackson (http://jackson.codehaus.org) org.codehaus.jackson:jackson-core-asl:jar:1.9.12
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - JAX-RS provider for JSON content type (http://jackson.codehaus.org) org.codehaus.jackson:jackson-jaxrs:jar:1.9.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt) License: GNU Lesser General Public License (LGPL), Version 2.1 (http://www.fsf.org/licensing/licenses/lgpl.txt)
+ - Data Mapper for Jackson (http://jackson.codehaus.org) org.codehaus.jackson:jackson-mapper-asl:jar:1.9.12
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Xml Compatibility extensions for Jackson (http://jackson.codehaus.org) org.codehaus.jackson:jackson-xc:jar:1.9.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt) License: GNU Lesser General Public License (LGPL), Version 2.1 (http://www.fsf.org/licensing/licenses/lgpl.txt)
+
+From: 'FasterXML' (http://fasterxml.com/)
+ - Jackson-core (http://wiki.fasterxml.com/JacksonHome) com.fasterxml.jackson.core:jackson-core:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'GlassFish Community' (https://glassfish.dev.java.net)
+ - Java Servlet API (http://servlet-spec.java.net) javax.servlet:javax.servlet-api:jar:3.1.0
+ License: CDDL + GPLv2 with classpath exception (https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html)
+ - javax.servlet API v.3.0 (http://jcp.org/en/jsr/detail?id=315) org.glassfish:javax.servlet:jar:3.1
+ License: CDDL + GPLv2 with classpath exception (https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html)
+
+From: 'Google' (http://www.google.com/)
+ - Protocol Buffer Java API (http://code.google.com/p/protobuf) com.google.protobuf:protobuf-java:bundle:2.5.0
+ License: New BSD license (http://www.opensource.org/licenses/bsd-license.php)
+
+From: 'Google, Inc.' (http://www.google.com)
+ - Google Guice - Core Library (http://code.google.com/p/google-guice/guice/) com.google.inject:guice:jar:3.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Google Guice - Extensions - Servlet (http://code.google.com/p/google-guice/extensions-parent/guice-servlet/) com.google.inject.extensions:guice-servlet:jar:3.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'jcraft' (http://www.jcraft.com/jsch)
+ - JSch (http://www.jcraft.com/jsch/) com.jcraft:jsch:jar:0.1.42
+ License: BSD (http://www.jcraft.com/jsch/LICENSE.txt)
+
+From: 'JDOM' (http://www.jdom.org)
+ - JDOM (http://www.jdom.org) org.jdom:jdom:jar:2.0.2
+ License: Similar to Apache License but with the acknowledgment clause removed (https://raw.github.com/hunterhacker/jdom/master/LICENSE.txt)
+
+From: 'JolBox' (http://jolbox.com)
+ - BoneCP :: Core Library (http://jolbox.com/bonecp) com.jolbox:bonecp:bundle:0.8.0.RELEASE
+ License: Apache v2 (http://www.apache.org/licenses/LICENSE-2.0.html)
+
+From: 'JSON' (http://json.org/)
+ - JSON (JavaScript Object Notation) (http://www.json.org/java/index.html) org.json:json:jar:20090211
+ License: provided without support or warranty (http://www.json.org/license.html)
+
+From: 'JUnit' (http://www.junit.org)
+ - JUnit (http://junit.org) junit:junit:jar:4.11
+ License: Common Public License Version 1.0 (http://www.opensource.org/licenses/cpl1.0.txt)
+
+From: 'Kohsuke Kawaguchi' (http://www.kohsuke.org/)
+ - args4j (http://args4j.kohsuke.org/args4j/) args4j:args4j:bundle:2.33
+ License: MIT License (http://www.opensource.org/licenses/mit-license.php)
+
+From: 'Mort Bay Consulting' (http://www.mortbay.com)
+ - Jetty Server (http://www.eclipse.org/jetty/jetty-parent/project/modules/jetty) org.mortbay.jetty:jetty:jar:6.1.26
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+ - Jetty Utilities (http://www.eclipse.org/jetty/jetty-parent/project/jetty-util) org.mortbay.jetty:jetty-util:jar:6.1.26
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+
+From: 'ObjectWeb' (http://www.objectweb.org/)
+ - ASM Core (http://asm.objectweb.org/asm/) asm:asm:jar:3.1
+
+ - ASM All (http://asm.objectweb.org/asm-all/) org.ow2.asm:asm-all:jar:5.1
+ License: BSD (http://asm.objectweb.org/license.html)
+
+From: 'Oracle' (http://www.oracle.com)
+ - JavaMail API (compat) (http://kenai.com/projects/javamail/mail) javax.mail:mail:jar:1.4.5
+ License: CDDL (http://www.sun.com/cddl) License: GPLv2+CE (https://glassfish.dev.java.net/public/CDDL+GPL.html)
+
+From: 'Oracle Corporation' (http://www.oracle.com/)
+ - jersey-client (https://jersey.java.net/jersey-client/) com.sun.jersey:jersey-client:jar:1.13
+ License: CDDL 1.1 (http://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (http://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - jersey-core (https://jersey.java.net/jersey-core/) com.sun.jersey:jersey-core:bundle:1.9
+ License: CDDL 1.1 (http://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (http://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - jersey-grizzly2 (https://jersey.java.net/jersey-grizzly2/) com.sun.jersey:jersey-grizzly2:jar:1.9
+ License: CDDL 1.1 (http://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (http://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - jersey-json (https://jersey.java.net/jersey-json/) com.sun.jersey:jersey-json:jar:1.13
+ License: CDDL 1.1 (http://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (http://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - jersey-server (https://jersey.java.net/jersey-server/) com.sun.jersey:jersey-server:bundle:1.9
+ License: CDDL 1.1 (http://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (http://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - jersey-guice (https://jersey.java.net/jersey-contribs/jersey-guice/) com.sun.jersey.contribs:jersey-guice:jar:1.9
+ License: CDDL 1.1 (http://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (http://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - Jersey Test Framework - Core (https://jersey.java.net/jersey-test-framework/jersey-test-framework-core/) com.sun.jersey.jersey-test-framework:jersey-test-framework-core:jar:1.9
+ License: CDDL 1.1 (http://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (http://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - Jersey Test Framework - Grizzly 2 Module (https://jersey.java.net/jersey-test-framework/jersey-test-framework-grizzly2/) com.sun.jersey.jersey-test-framework:jersey-test-framework-grizzly2:jar:1.9
+ License: CDDL 1.1 (http://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (http://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - JAXB RI (http://jaxb.java.net/) com.sun.xml.bind:jaxb-impl:jar:2.2.3-1
+ License: CDDL 1.1 (https://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (https://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - JAXB API bundle for GlassFish V3 (https://jaxb.dev.java.net/) javax.xml.bind:jaxb-api:jar:2.2.2
+ License: CDDL 1.1 (https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html)
+
+From: 'Oracle Corpration' (http://www.oracle.com)
+ - grizzly-framework (http://grizzly.java.net/grizzly-framework) org.glassfish.grizzly:grizzly-framework:bundle:2.1.2
+ License: CDDL+GPL (http://glassfish.java.net/public/CDDL+GPL.html)
+ - grizzly-http (http://grizzly.java.net/grizzly-http) org.glassfish.grizzly:grizzly-http:bundle:2.1.2
+ License: CDDL+GPL (http://glassfish.java.net/public/CDDL+GPL.html)
+ - grizzly-http-server (http://grizzly.java.net/grizzly-http-server) org.glassfish.grizzly:grizzly-http-server:bundle:2.1.2
+ License: CDDL+GPL (http://glassfish.java.net/public/CDDL+GPL.html)
+ - grizzly-http-servlet (http://grizzly.java.net/grizzly-http-servlet) org.glassfish.grizzly:grizzly-http-servlet:bundle:2.1.2
+ License: CDDL+GPL (http://glassfish.java.net/public/CDDL+GPL.html)
+ - grizzly-rcm (http://grizzly.java.net/grizzly-rcm) org.glassfish.grizzly:grizzly-rcm:bundle:2.1.2
+ License: CDDL+GPL (http://glassfish.java.net/public/CDDL+GPL.html)
+
+From: 'QOS.ch' (http://www.qos.ch)
+ - SLF4J API Module (http://www.slf4j.org) org.slf4j:slf4j-api:jar:1.7.7
+ License: MIT License (http://www.opensource.org/licenses/mit-license.php)
+ - SLF4J JCL Binding (http://www.slf4j.org) org.slf4j:slf4j-jcl:jar:1.6.3
+ License: MIT License (http://www.opensource.org/licenses/mit-license.php)
+ - SLF4J LOG4J-12 Binding (http://www.slf4j.org) org.slf4j:slf4j-log4j12:jar:1.7.5
+ License: MIT License (http://www.opensource.org/licenses/mit-license.php)
+
+From: 'ROME Project' (http://rome.dev.java.net)
+ - Rome HTTP Fetcher net.java.dev.rome:rome-fetcher:jar:1.0.0
+ License: Apache 2 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'Sun Microsystems' (http://www.sun.com)
+ - management-api (http://kenai.com/hg/gmbal~gf_common) org.glassfish.external:management-api:jar:3.0.0-b012
+ License: CDDL+GPL (https://glassfish.dev.java.net/public/CDDL+GPL.html)
+ - gmbal-api-only (http://kenai.com/hg/gmbal~master) org.glassfish.gmbal:gmbal-api-only:jar:3.0.0-b023
+ License: CDDL+GPL (https://glassfish.dev.java.net/public/CDDL+GPL.html)
+
+From: 'The Apache Software Foundation' (http://commons.apache.org/)
+ - Commons Configuration (http://commons.apache.org/${pom.artifactId.substring(8)}/) commons-configuration:commons-configuration:jar:1.6
+ License: The Apache Software License, Version 2.0 (/LICENSE.txt)
+
+From: 'The Apache Software Foundation' (http://jakarta.apache.org)
+ - Digester (http://jakarta.apache.org/commons/digester/) commons-digester:commons-digester:jar:1.8
+ License: The Apache Software License, Version 2.0 (/LICENSE.txt)
+ - EL (http://jakarta.apache.org/commons/el/) commons-el:commons-el:jar:1.0
+ License: The Apache Software License, Version 2.0 (/LICENSE.txt)
+
+From: 'The Apache Software Foundation' (http://www.apache.org/)
+ - Commons BeanUtils Core (http://commons.apache.org/beanutils/) commons-beanutils:commons-beanutils-core:jar:1.8.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons CLI (http://commons.apache.org/cli/) commons-cli:commons-cli:jar:1.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Commons Codec (http://commons.apache.org/proper/commons-codec/) commons-codec:commons-codec:jar:1.9
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons Collections (http://commons.apache.org/collections/) commons-collections:commons-collections:jar:3.2.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons Daemon (http://commons.apache.org/daemon/) commons-daemon:commons-daemon:jar:1.0.13
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons IO (http://commons.apache.org/io/) commons-io:commons-io:jar:2.4
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons Lang (http://commons.apache.org/lang/) commons-lang:commons-lang:jar:2.5
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Commons Logging (http://commons.apache.org/proper/commons-logging/) commons-logging:commons-logging:jar:1.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons Net (http://commons.apache.org/net/) commons-net:commons-net:jar:3.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Ant Core (http://ant.apache.org/) org.apache.ant:ant:jar:1.9.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Ant Launcher (http://ant.apache.org/) org.apache.ant:ant-launcher:jar:1.9.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-active (http://www.apache.org/apache-asterixdb/asterix-active/) org.apache.asterix:asterix-active:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-algebra (http://www.apache.org/apache-asterixdb/asterix-algebra/) org.apache.asterix:asterix-algebra:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-app (http://www.apache.org/apache-asterixdb/asterix-app/) org.apache.asterix:asterix-app:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-common (http://www.apache.org/apache-asterixdb/asterix-common/) org.apache.asterix:asterix-common:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-events (http://www.apache.org/apache-asterixdb/asterix-events/) org.apache.asterix:asterix-events:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-external-data (http://www.apache.org/apache-asterixdb/asterix-external-data/) org.apache.asterix:asterix-external-data:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-fuzzyjoin (http://www.apache.org/apache-asterixdb/asterix-fuzzyjoin/) org.apache.asterix:asterix-fuzzyjoin:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-lang-aql (http://www.apache.org/apache-asterixdb/asterix-lang-aql/) org.apache.asterix:asterix-lang-aql:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-lang-common (http://www.apache.org/apache-asterixdb/asterix-lang-common/) org.apache.asterix:asterix-lang-common:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-lang-sqlpp (http://www.apache.org/apache-asterixdb/asterix-lang-sqlpp/) org.apache.asterix:asterix-lang-sqlpp:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-metadata (http://www.apache.org/apache-asterixdb/asterix-metadata/) org.apache.asterix:asterix-metadata:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-om (http://www.apache.org/apache-asterixdb/asterix-om/) org.apache.asterix:asterix-om:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-replication (http://www.apache.org/apache-asterixdb/asterix-replication/) org.apache.asterix:asterix-replication:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-runtime (http://www.apache.org/apache-asterixdb/asterix-runtime/) org.apache.asterix:asterix-runtime:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-test-framework (http://www.apache.org/apache-asterixdb/asterix-test-framework/) org.apache.asterix:asterix-test-framework:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-transactions (http://www.apache.org/apache-asterixdb/asterix-transactions/) org.apache.asterix:asterix-transactions:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Avro (http://avro.apache.org) org.apache.avro:avro:jar:1.7.4
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons Compress (http://commons.apache.org/compress/) org.apache.commons:commons-compress:jar:1.4.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons Lang (http://commons.apache.org/lang/) org.apache.commons:commons-lang3:jar:3.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons Math (http://commons.apache.org/math/) org.apache.commons:commons-math:jar:2.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Ant Utilities (http://hive.apache.org/hive-ant) org.apache.hive:hive-ant:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Common (http://hive.apache.org/hive-common) org.apache.hive:hive-common:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Query Language (http://hive.apache.org/hive-exec) org.apache.hive:hive-exec:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Metastore (http://hive.apache.org/hive-metastore) org.apache.hive:hive-metastore:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Serde (http://hive.apache.org/hive-serde) org.apache.hive:hive-serde:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Shims (http://hive.apache.org/hive-shims) org.apache.hive:hive-shims:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Shims 0.20 (http://hive.apache.org/hive-shims-0.20) org.apache.hive.shims:hive-shims-0.20:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Shims 0.20S (http://hive.apache.org/hive-shims-0.20S) org.apache.hive.shims:hive-shims-0.20S:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Shims 0.23 (http://hive.apache.org/hive-shims-0.23) org.apache.hive.shims:hive-shims-0.23:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Shims Common (http://hive.apache.org/hive-shims-common) org.apache.hive.shims:hive-shims-common:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Shims Secure Common (http://hive.apache.org/hive-shims-common-secure) org.apache.hive.shims:hive-shims-common-secure:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache HttpClient (http://hc.apache.org/httpcomponents-client) org.apache.httpcomponents:httpclient:jar:4.5.2
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache HttpCore (http://hc.apache.org/httpcomponents-core-ga) org.apache.httpcomponents:httpcore:jar:4.4.4
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - algebricks-common (http://www.apache.org/apache-asterixdb-hyracks/algebricks/algebricks-common/) org.apache.hyracks:algebricks-common:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - algebricks-compiler (http://www.apache.org/apache-asterixdb-hyracks/algebricks/algebricks-compiler/) org.apache.hyracks:algebricks-compiler:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - algebricks-core (http://www.apache.org/apache-asterixdb-hyracks/algebricks/algebricks-core/) org.apache.hyracks:algebricks-core:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - algebricks-data (http://www.apache.org/apache-asterixdb-hyracks/algebricks/algebricks-data/) org.apache.hyracks:algebricks-data:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - algebricks-rewriter (http://www.apache.org/apache-asterixdb-hyracks/algebricks/algebricks-rewriter/) org.apache.hyracks:algebricks-rewriter:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - algebricks-runtime (http://www.apache.org/apache-asterixdb-hyracks/algebricks/algebricks-runtime/) org.apache.hyracks:algebricks-runtime:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-api (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-api/) org.apache.hyracks:hyracks-api:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-client (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-client/) org.apache.hyracks:hyracks-client:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-comm (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-comm/) org.apache.hyracks:hyracks-comm:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-control-cc (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-control/hyracks-control-cc/) org.apache.hyracks:hyracks-control-cc:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-control-common (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-control/hyracks-control-common/) org.apache.hyracks:hyracks-control-common:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-control-nc (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-control/hyracks-control-nc/) org.apache.hyracks:hyracks-control-nc:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-data-std (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-data/hyracks-data-std/) org.apache.hyracks:hyracks-data-std:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-dataflow-common (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-dataflow-common/) org.apache.hyracks:hyracks-dataflow-common:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-dataflow-std (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-dataflow-std/) org.apache.hyracks:hyracks-dataflow-std:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-hdfs-2.x (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-hdfs/hyracks-hdfs-2.x/) org.apache.hyracks:hyracks-hdfs-2.x:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-hdfs-core (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-hdfs/hyracks-hdfs-core/) org.apache.hyracks:hyracks-hdfs-core:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-ipc (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-ipc/) org.apache.hyracks:hyracks-ipc:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-net (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-net/) org.apache.hyracks:hyracks-net:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-am-bloomfilter (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-am-bloomfilter/) org.apache.hyracks:hyracks-storage-am-bloomfilter:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-am-btree (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-am-btree/) org.apache.hyracks:hyracks-storage-am-btree:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-am-common (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-am-common/) org.apache.hyracks:hyracks-storage-am-common:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-am-lsm-btree (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-am-lsm-btree/) org.apache.hyracks:hyracks-storage-am-lsm-btree:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-am-lsm-common (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-am-lsm-common/) org.apache.hyracks:hyracks-storage-am-lsm-common:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-am-lsm-invertedindex (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-am-lsm-invertedindex/) org.apache.hyracks:hyracks-storage-am-lsm-invertedindex:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-am-lsm-rtree (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-am-lsm-rtree/) org.apache.hyracks:hyracks-storage-am-lsm-rtree:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-am-rtree (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-am-rtree/) org.apache.hyracks:hyracks-storage-am-rtree:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-common (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-common/) org.apache.hyracks:hyracks-storage-common:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-util (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-util/) org.apache.hyracks:hyracks-util:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Velocity (http://velocity.apache.org/engine/releases/velocity-1.5/) org.apache.velocity:velocity:pom:1.5
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - jasper-compiler (http://tomcat.apache.org/jasper-compiler) tomcat:jasper-compiler:jar:5.5.23
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - jasper-runtime (http://tomcat.apache.org/jasper-runtime) tomcat:jasper-runtime:jar:5.5.23
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'The Codehaus' (http://codehaus.org)
+ - Groovy (http://groovy.codehaus.org/) org.codehaus.groovy:groovy-all:jar:2.1.6
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'The Netty Project' (http://netty.io/)
+ - The Netty Project (http://netty.io/) io.netty:netty:bundle:3.6.2.Final
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+
+From: 'Webtide' (http://webtide.com)
+ - Jetty :: Http Utility (http://www.eclipse.org/jetty) org.eclipse.jetty:jetty-http:jar:9.3.11.v20160721
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+ - Jetty :: IO Utility (http://www.eclipse.org/jetty) org.eclipse.jetty:jetty-io:jar:9.3.11.v20160721
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+ - Jetty :: Security (http://www.eclipse.org/jetty) org.eclipse.jetty:jetty-security:jar:9.3.11.v20160721
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+ - Jetty :: Server Core (http://www.eclipse.org/jetty) org.eclipse.jetty:jetty-server:jar:9.3.11.v20160721
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+ - Jetty :: Servlet Handling (http://www.eclipse.org/jetty) org.eclipse.jetty:jetty-servlet:jar:9.3.11.v20160721
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+ - Jetty :: Utilities (http://www.eclipse.org/jetty) org.eclipse.jetty:jetty-util:jar:9.3.11.v20160721
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+ - Jetty :: Webapp Application Support (http://www.eclipse.org/jetty) org.eclipse.jetty:jetty-webapp:jar:9.3.11.v20160721
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+ - Jetty :: XML utilities (http://www.eclipse.org/jetty) org.eclipse.jetty:jetty-xml:jar:9.3.11.v20160721
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+
+From: 'xerial.org' (http://www.xerial.org/)
+ - Snappy for Java (http://code.google.com/p/snappy-java/) org.xerial.snappy:snappy-java:bundle:1.0.4.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+
+
+
[06/12] asterixdb-bad git commit: Initial commit
Posted by sj...@apache.org.
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/generated-sources/javacc/org/apache/asterix/bad/lang/BADAQLParser.java
----------------------------------------------------------------------
diff --git a/target/generated-sources/javacc/org/apache/asterix/bad/lang/BADAQLParser.java b/target/generated-sources/javacc/org/apache/asterix/bad/lang/BADAQLParser.java
new file mode 100644
index 0000000..8e9ea5a
--- /dev/null
+++ b/target/generated-sources/javacc/org/apache/asterix/bad/lang/BADAQLParser.java
@@ -0,0 +1,4407 @@
+/* Generated By:JavaCC: Do not edit this line. BADAQLParser.java */
+package org.apache.asterix.bad.lang;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import org.apache.asterix.bad.lang.statement.BrokerDropStatement;
+import org.apache.asterix.bad.lang.statement.ChannelDropStatement;
+import org.apache.asterix.bad.lang.statement.ChannelSubscribeStatement;
+import org.apache.asterix.bad.lang.statement.ChannelUnsubscribeStatement;
+import org.apache.asterix.bad.lang.statement.CreateBrokerStatement;
+import org.apache.asterix.bad.lang.statement.CreateChannelStatement;
+import org.apache.asterix.common.annotations.AutoDataGen;
+import org.apache.asterix.common.annotations.DateBetweenYearsDataGen;
+import org.apache.asterix.common.annotations.DatetimeAddRandHoursDataGen;
+import org.apache.asterix.common.annotations.DatetimeBetweenYearsDataGen;
+import org.apache.asterix.common.annotations.FieldIntervalDataGen;
+import org.apache.asterix.common.annotations.FieldValFileDataGen;
+import org.apache.asterix.common.annotations.FieldValFileSameIndexDataGen;
+import org.apache.asterix.common.annotations.IRecordFieldDataGen;
+import org.apache.asterix.common.annotations.InsertRandIntDataGen;
+import org.apache.asterix.common.annotations.ListDataGen;
+import org.apache.asterix.common.annotations.ListValFileDataGen;
+import org.apache.asterix.common.annotations.SkipSecondaryIndexSearchExpressionAnnotation;
+import org.apache.asterix.common.annotations.TypeDataGen;
+import org.apache.asterix.common.annotations.UndeclaredFieldsDataGen;
+import org.apache.asterix.common.config.DatasetConfig.DatasetType;
+import org.apache.asterix.common.config.DatasetConfig.IndexType;
+import org.apache.asterix.common.exceptions.AsterixException;
+import org.apache.asterix.common.functions.FunctionSignature;
+import org.apache.asterix.lang.aql.clause.DistinctClause;
+import org.apache.asterix.lang.aql.clause.ForClause;
+import org.apache.asterix.lang.aql.expression.FLWOGRExpression;
+import org.apache.asterix.lang.aql.expression.UnionExpr;
+import org.apache.asterix.lang.aql.util.RangeMapBuilder;
+import org.apache.asterix.lang.common.base.Clause;
+import org.apache.asterix.lang.common.base.Expression;
+import org.apache.asterix.lang.common.base.IParser;
+import org.apache.asterix.lang.common.base.Literal;
+import org.apache.asterix.lang.common.base.Statement;
+import org.apache.asterix.lang.common.clause.GroupbyClause;
+import org.apache.asterix.lang.common.clause.LetClause;
+import org.apache.asterix.lang.common.clause.LimitClause;
+import org.apache.asterix.lang.common.clause.OrderbyClause;
+import org.apache.asterix.lang.common.clause.UpdateClause;
+import org.apache.asterix.lang.common.clause.WhereClause;
+import org.apache.asterix.lang.common.context.RootScopeFactory;
+import org.apache.asterix.lang.common.context.Scope;
+import org.apache.asterix.lang.common.expression.AbstractAccessor;
+import org.apache.asterix.lang.common.expression.CallExpr;
+import org.apache.asterix.lang.common.expression.FieldAccessor;
+import org.apache.asterix.lang.common.expression.FieldBinding;
+import org.apache.asterix.lang.common.expression.GbyVariableExpressionPair;
+import org.apache.asterix.lang.common.expression.IfExpr;
+import org.apache.asterix.lang.common.expression.IndexAccessor;
+import org.apache.asterix.lang.common.expression.ListConstructor;
+import org.apache.asterix.lang.common.expression.LiteralExpr;
+import org.apache.asterix.lang.common.expression.OperatorExpr;
+import org.apache.asterix.lang.common.expression.OrderedListTypeDefinition;
+import org.apache.asterix.lang.common.expression.QuantifiedExpression;
+import org.apache.asterix.lang.common.expression.RecordConstructor;
+import org.apache.asterix.lang.common.expression.RecordTypeDefinition;
+import org.apache.asterix.lang.common.expression.TypeExpression;
+import org.apache.asterix.lang.common.expression.TypeReferenceExpression;
+import org.apache.asterix.lang.common.expression.UnaryExpr;
+import org.apache.asterix.lang.common.expression.UnorderedListTypeDefinition;
+import org.apache.asterix.lang.common.expression.VariableExpr;
+import org.apache.asterix.lang.common.literal.DoubleLiteral;
+import org.apache.asterix.lang.common.literal.FalseLiteral;
+import org.apache.asterix.lang.common.literal.FloatLiteral;
+import org.apache.asterix.lang.common.literal.LongIntegerLiteral;
+import org.apache.asterix.lang.common.literal.MissingLiteral;
+import org.apache.asterix.lang.common.literal.NullLiteral;
+import org.apache.asterix.lang.common.literal.StringLiteral;
+import org.apache.asterix.lang.common.literal.TrueLiteral;
+import org.apache.asterix.lang.common.parser.ScopeChecker;
+import org.apache.asterix.lang.common.statement.CompactStatement;
+import org.apache.asterix.lang.common.statement.ConnectFeedStatement;
+import org.apache.asterix.lang.common.statement.CreateDataverseStatement;
+import org.apache.asterix.lang.common.statement.CreateFeedPolicyStatement;
+import org.apache.asterix.lang.common.statement.CreateFeedStatement;
+import org.apache.asterix.lang.common.statement.CreateFunctionStatement;
+import org.apache.asterix.lang.common.statement.CreateIndexStatement;
+import org.apache.asterix.lang.common.statement.CreatePrimaryFeedStatement;
+import org.apache.asterix.lang.common.statement.CreateSecondaryFeedStatement;
+import org.apache.asterix.lang.common.statement.DatasetDecl;
+import org.apache.asterix.lang.common.statement.DataverseDecl;
+import org.apache.asterix.lang.common.statement.DataverseDropStatement;
+import org.apache.asterix.lang.common.statement.DeleteStatement;
+import org.apache.asterix.lang.common.statement.DisconnectFeedStatement;
+import org.apache.asterix.lang.common.statement.DropDatasetStatement;
+import org.apache.asterix.lang.common.statement.ExternalDetailsDecl;
+import org.apache.asterix.lang.common.statement.FeedDropStatement;
+import org.apache.asterix.lang.common.statement.FeedPolicyDropStatement;
+import org.apache.asterix.lang.common.statement.FunctionDecl;
+import org.apache.asterix.lang.common.statement.FunctionDropStatement;
+import org.apache.asterix.lang.common.statement.IndexDropStatement;
+import org.apache.asterix.lang.common.statement.InsertStatement;
+import org.apache.asterix.lang.common.statement.InternalDetailsDecl;
+import org.apache.asterix.lang.common.statement.LoadStatement;
+import org.apache.asterix.lang.common.statement.NodeGroupDropStatement;
+import org.apache.asterix.lang.common.statement.NodegroupDecl;
+import org.apache.asterix.lang.common.statement.Query;
+import org.apache.asterix.lang.common.statement.RefreshExternalDatasetStatement;
+import org.apache.asterix.lang.common.statement.RunStatement;
+import org.apache.asterix.lang.common.statement.SetStatement;
+import org.apache.asterix.lang.common.statement.TypeDecl;
+import org.apache.asterix.lang.common.statement.TypeDropStatement;
+import org.apache.asterix.lang.common.statement.UpdateStatement;
+import org.apache.asterix.lang.common.statement.UpsertStatement;
+import org.apache.asterix.lang.common.statement.WriteStatement;
+import org.apache.asterix.lang.common.struct.Identifier;
+import org.apache.asterix.lang.common.struct.QuantifiedPair;
+import org.apache.asterix.lang.common.struct.VarIdentifier;
+import org.apache.asterix.metadata.utils.MetadataConstants;
+import org.apache.hyracks.algebricks.common.utils.Pair;
+import org.apache.hyracks.algebricks.common.utils.Triple;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IExpressionAnnotation;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IndexedNLJoinExpressionAnnotation;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.xerces.util.IntStack;
+
+class BADAQLParser extends ScopeChecker implements IParser, BADAQLParserConstants {
+
+ // optimizer hints
+ private static final String AUTO_HINT = "auto";
+ private static final String BROADCAST_JOIN_HINT = "bcast";
+ private static final String COMPOSE_VAL_FILES_HINT = "compose-val-files";
+ private static final String DATE_BETWEEN_YEARS_HINT = "date-between-years";
+ private static final String DATETIME_ADD_RAND_HOURS_HINT = "datetime-add-rand-hours";
+ private static final String DATETIME_BETWEEN_YEARS_HINT = "datetime-between-years";
+ private static final String HASH_GROUP_BY_HINT = "hash";
+ private static final String INDEXED_NESTED_LOOP_JOIN_HINT = "indexnl";
+ private static final String INMEMORY_HINT = "inmem";
+ private static final String INSERT_RAND_INT_HINT = "insert-rand-int";
+ private static final String INTERVAL_HINT = "interval";
+ private static final String LIST_HINT = "list";
+ private static final String LIST_VAL_FILE_HINT = "list-val-file";
+ private static final String RANGE_HINT = "range";
+ private static final String SKIP_SECONDARY_INDEX_SEARCH_HINT = "skip-index";
+ private static final String VAL_FILE_HINT = "val-files";
+ private static final String VAL_FILE_SAME_INDEX_HINT = "val-file-same-idx";
+ private static final String GEN_FIELDS_HINT = "gen-fields";
+ // data generator hints
+ private static final String DGEN_HINT = "dgen";
+
+ private static class IndexParams {
+ public IndexType type;
+ public int gramLength;
+
+ public IndexParams(IndexType type, int gramLength) {
+ this.type = type;
+ this.gramLength = gramLength;
+ }
+ };
+
+ private static class FunctionName {
+ public String dataverse = null;
+ public String library = null;
+ public String function = null;
+ public String hint = null;
+ }
+
+ private static String getHint(Token t) {
+ if (t.specialToken == null) {
+ return null;
+ }
+ String s = t.specialToken.image;
+ int n = s.length();
+ if (n < 2) {
+ return null;
+ }
+ return s.substring(1).trim();
+ }
+
+ private static IRecordFieldDataGen parseFieldDataGen(String hint) throws ParseException {
+ IRecordFieldDataGen rfdg = null;
+ String splits[] = hint.split(" +");
+ if (splits[0].equals(VAL_FILE_HINT)) {
+ File[] valFiles = new File[splits.length - 1];
+ for (int k=1; k<splits.length; k++) {
+ valFiles[k-1] = new File(splits[k]);
+ }
+ rfdg = new FieldValFileDataGen(valFiles);
+ } else if (splits[0].equals(VAL_FILE_SAME_INDEX_HINT)) {
+ rfdg = new FieldValFileSameIndexDataGen(new File(splits[1]), splits[2]);
+ } else if (splits[0].equals(LIST_VAL_FILE_HINT)) {
+ rfdg = new ListValFileDataGen(new File(splits[1]), Integer.parseInt(splits[2]), Integer.parseInt(splits[3]));
+ } else if (splits[0].equals(LIST_HINT)) {
+ rfdg = new ListDataGen(Integer.parseInt(splits[1]), Integer.parseInt(splits[2]));
+ } else if (splits[0].equals(INTERVAL_HINT)) {
+ FieldIntervalDataGen.ValueType vt;
+ if (splits[1].equals("int")) {
+ vt = FieldIntervalDataGen.ValueType.INT;
+ } else if (splits[1].equals("long")) {
+ vt = FieldIntervalDataGen.ValueType.LONG;
+ } else if (splits[1].equals("float")) {
+ vt = FieldIntervalDataGen.ValueType.FLOAT;
+ } else if (splits[1].equals("double")) {
+ vt = FieldIntervalDataGen.ValueType.DOUBLE;
+ } else {
+ throw new ParseException("Unknown type for interval data gen: " + splits[1]);
+ }
+ rfdg = new FieldIntervalDataGen(vt, splits[2], splits[3]);
+ } else if (splits[0].equals(INSERT_RAND_INT_HINT)) {
+ rfdg = new InsertRandIntDataGen(splits[1], splits[2]);
+ } else if (splits[0].equals(DATE_BETWEEN_YEARS_HINT)) {
+ rfdg = new DateBetweenYearsDataGen(Integer.parseInt(splits[1]), Integer.parseInt(splits[2]));
+ } else if (splits[0].equals(DATETIME_BETWEEN_YEARS_HINT)) {
+ rfdg = new DatetimeBetweenYearsDataGen(Integer.parseInt(splits[1]), Integer.parseInt(splits[2]));
+ } else if (splits[0].equals(DATETIME_ADD_RAND_HOURS_HINT)) {
+ rfdg = new DatetimeAddRandHoursDataGen(Integer.parseInt(splits[1]), Integer.parseInt(splits[2]), splits[3]);
+ } else if (splits[0].equals(AUTO_HINT)) {
+ rfdg = new AutoDataGen(splits[1]);
+ }
+ return rfdg;
+ }
+
+ public BADAQLParser(String s){
+ this(new StringReader(s));
+ super.setInput(s);
+ }
+
+ public static void main(String args[]) throws ParseException, TokenMgrError, IOException, FileNotFoundException, AsterixException {
+ File file = new File(args[0]);
+ Reader fis = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
+ BADAQLParser parser = new BADAQLParser(fis);
+ List<Statement> st = parser.parse();
+ //st.accept(new AQLPrintVisitor(), 0);
+ }
+
+ public List<Statement> parse() throws AsterixException {
+ try {
+ return Statement();
+ } catch (Error e) {
+ // this is here as the JavaCharStream that's below the lexer somtimes throws Errors that are not handled
+ // by the ANTLR-generated lexer or parser (e.g it does this for invalid backslash u + 4 hex digits escapes)
+ throw new AsterixException(new ParseException(e.getMessage()));
+ } catch (ParseException e){
+ throw new AsterixException(e.getMessage());
+ }
+ }
+
+ final public LimitClause LimitClause() throws ParseException, ParseException {
+ LimitClause lc = new LimitClause();
+ Expression expr;
+ pushForbiddenScope(getCurrentScope());
+ jj_consume_token(LIMIT);
+ expr = Expression();
+ lc.setLimitExpr(expr);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case OFFSET:
+ jj_consume_token(OFFSET);
+ expr = Expression();
+ lc.setOffset(expr);
+ break;
+ default:
+ jj_la1[0] = jj_gen;
+ ;
+ }
+ popForbiddenScope();
+ {if (true) return lc;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public String StringLiteral() throws ParseException, ParseException {
+ jj_consume_token(STRING_LITERAL);
+ {if (true) return removeQuotesAndEscapes(token.image);}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public RefreshExternalDatasetStatement RefreshExternalDatasetStatement() throws ParseException, ParseException {
+ RefreshExternalDatasetStatement redss = new RefreshExternalDatasetStatement();
+ Pair<Identifier,Identifier> nameComponents = null;
+ String datasetName = null;
+ jj_consume_token(REFRESH);
+ jj_consume_token(EXTERNAL);
+ jj_consume_token(DATASET);
+ nameComponents = QualifiedName();
+ redss.setDataverseName(nameComponents.first);
+ redss.setDatasetName(nameComponents.second);
+ {if (true) return redss;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Statement CompactStatement() throws ParseException, ParseException {
+ Pair<Identifier,Identifier> nameComponents = null;
+ Statement stmt = null;
+ jj_consume_token(COMPACT);
+ jj_consume_token(DATASET);
+ nameComponents = QualifiedName();
+ stmt = new CompactStatement(nameComponents.first, nameComponents.second);
+ {if (true) return stmt;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Expression AndExpr() throws ParseException, ParseException {
+ OperatorExpr op = null;
+ Expression operand = null;
+ operand = RelExpr();
+ label_1:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case AND:
+ ;
+ break;
+ default:
+ jj_la1[1] = jj_gen;
+ break label_1;
+ }
+ jj_consume_token(AND);
+ if (op == null) {
+ op = new OperatorExpr();
+ op.addOperand(operand);
+ op.setCurrentop(true);
+ }
+ try{
+ op.addOperator(token.image);
+ } catch (AsterixException e){
+ {if (true) throw new ParseException(e.getMessage());}
+ }
+ operand = RelExpr();
+ op.addOperand(operand);
+ }
+ {if (true) return op==null? operand: op;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public TypeDecl TypeSpecification(String hint, boolean dgen) throws ParseException, ParseException {
+ Pair<Identifier,Identifier> nameComponents = null;
+ boolean ifNotExists = false;
+ TypeExpression typeExpr = null;
+ jj_consume_token(TYPE);
+ nameComponents = TypeName();
+ ifNotExists = IfNotExists();
+ jj_consume_token(AS);
+ typeExpr = TypeExpr();
+ long numValues = -1;
+ String filename = null;
+ if (dgen) {
+ String splits[] = hint.split(" +");
+ if (splits.length != 3) {
+ {if (true) throw new ParseException("Expecting /*+ dgen <filename> <numberOfItems> */");}
+ }
+ filename = splits[1];
+ numValues = Long.parseLong(splits[2]);
+ }
+ TypeDataGen tddg = new TypeDataGen(dgen, filename, numValues);
+ {if (true) return new TypeDecl(nameComponents.first, nameComponents.second, typeExpr, tddg, ifNotExists);}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Statement WriteStatement() throws ParseException, ParseException {
+ String nodeName = null;
+ String fileName = null;
+ Query query;
+ String writerClass = null;
+ Pair<Identifier,Identifier> nameComponents = null;
+ jj_consume_token(WRITE);
+ jj_consume_token(OUTPUT);
+ jj_consume_token(TO);
+ nodeName = Identifier();
+ jj_consume_token(COLON);
+ fileName = StringLiteral();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case USING:
+ jj_consume_token(USING);
+ writerClass = StringLiteral();
+ break;
+ default:
+ jj_la1[2] = jj_gen;
+ ;
+ }
+ {if (true) return new WriteStatement(new Identifier(nodeName), fileName, writerClass);}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Pair<Integer, Pair<List<String>, TypeExpression>> OpenField() throws ParseException, ParseException {
+ TypeExpression fieldType = null;
+ Pair<Integer, List<String>> fieldList = null;
+ fieldList = NestedField();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COLON:
+ jj_consume_token(COLON);
+ fieldType = IndexedTypeExpr();
+ jj_consume_token(QUES);
+ break;
+ default:
+ jj_la1[3] = jj_gen;
+ ;
+ }
+ {if (true) return new Pair<Integer, Pair<List<String>, TypeExpression>>
+ (fieldList.first, new Pair<List<String>, TypeExpression>(fieldList.second, fieldType));}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public boolean IfExists() throws ParseException, ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case IF:
+ jj_consume_token(IF);
+ jj_consume_token(EXISTS);
+ {if (true) return true;}
+ break;
+ default:
+ jj_la1[4] = jj_gen;
+ ;
+ }
+ {if (true) return false;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Expression Index() throws ParseException, ParseException {
+ Expression expr = null;
+ jj_consume_token(LEFTBRACKET);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DATASET:
+ case EVERY:
+ case FOR:
+ case FROM:
+ case IF:
+ case LET:
+ case SOME:
+ case WITH:
+ case MINUS:
+ case PLUS:
+ case LEFTPAREN:
+ case LEFTBRACKET:
+ case LEFTBRACE:
+ case LEFTDBLBRACE:
+ case INTEGER_LITERAL:
+ case MISSING:
+ case NULL:
+ case TRUE:
+ case FALSE:
+ case DOUBLE_LITERAL:
+ case FLOAT_LITERAL:
+ case STRING_LITERAL:
+ case IDENTIFIER:
+ case VARIABLE:
+ expr = Expression();
+ if(expr.getKind() == Expression.Kind.LITERAL_EXPRESSION)
+ {
+ Literal lit = ((LiteralExpr)expr).getValue();
+ if(lit.getLiteralType() != Literal.Type.INTEGER &&
+ lit.getLiteralType() != Literal.Type.LONG) {
+ {if (true) throw new ParseException("Index should be an INTEGER");}
+ }
+ }
+ break;
+ case QUES:
+ jj_consume_token(QUES);
+ break;
+ default:
+ jj_la1[5] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ jj_consume_token(RIGHTBRACKET);
+ {if (true) return expr;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public IndexParams IndexType() throws ParseException, ParseException {
+ IndexType type = null;
+ int gramLength = 0;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case BTREE:
+ jj_consume_token(BTREE);
+ type = IndexType.BTREE;
+ break;
+ case RTREE:
+ jj_consume_token(RTREE);
+ type = IndexType.RTREE;
+ break;
+ case KEYWORD:
+ jj_consume_token(KEYWORD);
+ type = IndexType.LENGTH_PARTITIONED_WORD_INVIX;
+ break;
+ case NGRAM:
+ jj_consume_token(NGRAM);
+ jj_consume_token(LEFTPAREN);
+ jj_consume_token(INTEGER_LITERAL);
+ type = IndexType.LENGTH_PARTITIONED_NGRAM_INVIX;
+ gramLength = Integer.valueOf(token.image);
+ jj_consume_token(RIGHTPAREN);
+ break;
+ default:
+ jj_la1[6] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ {if (true) return new IndexParams(type, gramLength);}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public CreateBrokerStatement BrokerSpecification() throws ParseException, ParseException {
+ CreateBrokerStatement cbs = null;
+ Pair<Identifier,Identifier> name = null;
+ String endPoint = null;
+ jj_consume_token(BROKER);
+ name = QualifiedName();
+ jj_consume_token(AT);
+ endPoint = StringLiteral();
+ cbs = new CreateBrokerStatement(name.first, name.second,endPoint);
+ {if (true) return cbs;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public FunctionDecl FunctionDeclaration() throws ParseException, ParseException {
+ FunctionDecl funcDecl;
+ FunctionSignature signature;
+ String functionName;
+ List<VarIdentifier> paramList = new ArrayList<VarIdentifier>();
+ Expression funcBody;
+ createNewScope();
+ jj_consume_token(DECLARE);
+ jj_consume_token(FUNCTION);
+ functionName = Identifier();
+ paramList = ParameterList();
+ jj_consume_token(LEFTBRACE);
+ funcBody = Expression();
+ jj_consume_token(RIGHTBRACE);
+ signature = new FunctionSignature(defaultDataverse, functionName, paramList.size());
+ getCurrentScope().addFunctionDescriptor(signature, false);
+ funcDecl = new FunctionDecl(signature, paramList, funcBody);
+ removeCurrentScope();
+ {if (true) return funcDecl;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Triple<Identifier,Identifier,Identifier> DoubleQualifiedName() throws ParseException, ParseException {
+ String first = null;
+ String second = null;
+ String third = null;
+ first = Identifier();
+ jj_consume_token(DOT);
+ second = Identifier();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DOT:
+ jj_consume_token(DOT);
+ third = Identifier();
+ break;
+ default:
+ jj_la1[7] = jj_gen;
+ ;
+ }
+ Identifier id1 = null;
+ Identifier id2 = null;
+ Identifier id3 = null;
+ if (third == null) {
+ id2 = new Identifier(first);
+ id3 = new Identifier(second);
+ } else {
+ id1 = new Identifier(first);
+ id2 = new Identifier(second);
+ id3 = new Identifier(third);
+ }
+ {if (true) return new Triple<Identifier,Identifier,Identifier>(id1, id2, id3);}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Expression MultExpr() throws ParseException, ParseException {
+ OperatorExpr op = null;
+ Expression operand = null;
+ operand = ExponentExpr();
+ label_2:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DIV:
+ case IDIV:
+ case MOD:
+ case MUL:
+ ;
+ break;
+ default:
+ jj_la1[8] = jj_gen;
+ break label_2;
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case MUL:
+ jj_consume_token(MUL);
+ break;
+ case DIV:
+ jj_consume_token(DIV);
+ break;
+ case MOD:
+ jj_consume_token(MOD);
+ break;
+ case IDIV:
+ jj_consume_token(IDIV);
+ break;
+ default:
+ jj_la1[9] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ if (op == null) {
+ op = new OperatorExpr();
+ op.addOperand(operand);
+ op.setCurrentop(true);
+ }
+ try{
+ op.addOperator(token.image);
+ } catch (AsterixException e){
+ {if (true) throw new ParseException(e.getMessage());}
+ }
+ operand = ExponentExpr();
+ op.addOperand(operand);
+ }
+ {if (true) return op==null?operand:op;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public InsertStatement InsertStatement() throws ParseException, ParseException {
+ Pair<Identifier,Identifier> nameComponents = null;
+ Pair<Integer, List<String>> returnField = new Pair<Integer, List<String>>(0, null);
+ boolean returnRecord = false;
+ Query query;
+ boolean upsert = false;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case INSERT:
+ jj_consume_token(INSERT);
+ break;
+ case UPSERT:
+ jj_consume_token(UPSERT);
+ upsert = true;
+ break;
+ default:
+ jj_la1[10] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ jj_consume_token(INTO);
+ jj_consume_token(DATASET);
+ nameComponents = QualifiedName();
+ query = Query();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 2:
+ case RETURN:
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case RETURN:
+ jj_consume_token(RETURN);
+ jj_consume_token(1);
+ returnRecord = true;
+ break;
+ case 2:
+ jj_consume_token(2);
+ returnField = NestedField();
+ break;
+ default:
+ jj_la1[11] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ break;
+ default:
+ jj_la1[12] = jj_gen;
+ ;
+ }
+ query.setTopLevel(true);
+ if(upsert){
+ {if (true) return new UpsertStatement(nameComponents.first, nameComponents.second, query, getVarCounter());}
+ } else{
+ {if (true) return new InsertStatement(nameComponents.first, nameComponents.second, query, getVarCounter(),
+ returnRecord, returnField.second);}
+ }
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Expression FunctionCallExpr() throws ParseException, ParseException {
+ CallExpr callExpr;
+ List<Expression> argList = new ArrayList<Expression>();
+ Expression tmp;
+ int arity = 0;
+ FunctionName funcName = null;
+ String hint = null;
+ funcName = FunctionName();
+ hint = funcName.hint;
+ jj_consume_token(LEFTPAREN);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DATASET:
+ case EVERY:
+ case FOR:
+ case FROM:
+ case IF:
+ case LET:
+ case SOME:
+ case WITH:
+ case MINUS:
+ case PLUS:
+ case LEFTPAREN:
+ case LEFTBRACKET:
+ case LEFTBRACE:
+ case LEFTDBLBRACE:
+ case INTEGER_LITERAL:
+ case MISSING:
+ case NULL:
+ case TRUE:
+ case FALSE:
+ case DOUBLE_LITERAL:
+ case FLOAT_LITERAL:
+ case STRING_LITERAL:
+ case IDENTIFIER:
+ case VARIABLE:
+ tmp = Expression();
+ argList.add(tmp);
+ arity ++;
+ label_3:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COMMA:
+ ;
+ break;
+ default:
+ jj_la1[13] = jj_gen;
+ break label_3;
+ }
+ jj_consume_token(COMMA);
+ tmp = Expression();
+ argList.add(tmp);
+ arity++;
+ }
+ break;
+ default:
+ jj_la1[14] = jj_gen;
+ ;
+ }
+ jj_consume_token(RIGHTPAREN);
+ // TODO use funcName.library
+ String fqFunctionName = funcName.library == null ? funcName.function : funcName.library + "#" + funcName.function;
+ FunctionSignature signature
+ = lookupFunctionSignature(funcName.dataverse, fqFunctionName, arity);
+ if (signature == null) {
+ signature = new FunctionSignature(funcName.dataverse, fqFunctionName, arity);
+ }
+ callExpr = new CallExpr(signature,argList);
+ if (hint != null) {
+ if (hint.startsWith(INDEXED_NESTED_LOOP_JOIN_HINT)) {
+ callExpr.addHint(IndexedNLJoinExpressionAnnotation.INSTANCE);
+ } else if (hint.startsWith(SKIP_SECONDARY_INDEX_SEARCH_HINT)) {
+ callExpr.addHint(SkipSecondaryIndexSearchExpressionAnnotation.INSTANCE);
+ }
+ }
+ {if (true) return callExpr;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Clause Clause() throws ParseException, ParseException {
+ Clause clause;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case FOR:
+ case FROM:
+ clause = ForClause();
+ break;
+ case LET:
+ case WITH:
+ clause = LetClause();
+ break;
+ case WHERE:
+ clause = WhereClause();
+ break;
+ case ORDER:
+ clause = OrderbyClause();
+ break;
+ case GROUP:
+ clause = GroupClause();
+ break;
+ case LIMIT:
+ clause = LimitClause();
+ break;
+ case DISTINCT:
+ clause = DistinctClause();
+ break;
+ default:
+ jj_la1[15] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ {if (true) return clause;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Pair<Integer, List<String>> NestedField() throws ParseException, ParseException {
+ List<String> exprList = new ArrayList<String>();
+ String lit = null;
+ int source = 0;
+ lit = Identifier();
+ boolean meetParens = false;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case LEFTPAREN:
+ jj_consume_token(LEFTPAREN);
+ jj_consume_token(RIGHTPAREN);
+ if(!lit.equals("meta")){
+ {if (true) throw new ParseException("The string before () has to be \u005c"meta\u005c".");}
+ }
+ meetParens = true;
+ source = 1;
+ break;
+ default:
+ jj_la1[16] = jj_gen;
+ ;
+ }
+ if(!meetParens){
+ exprList.add(lit);
+ }
+ label_4:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DOT:
+ ;
+ break;
+ default:
+ jj_la1[17] = jj_gen;
+ break label_4;
+ }
+ jj_consume_token(DOT);
+ lit = Identifier();
+ exprList.add(lit);
+ }
+ {if (true) return new Pair<Integer, List<String>>(source, exprList);}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Expression Literal() throws ParseException, ParseException {
+ LiteralExpr lit = new LiteralExpr();
+ String str = null;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case STRING_LITERAL:
+ str = StringLiteral();
+ lit.setValue(new StringLiteral(str));
+ break;
+ case INTEGER_LITERAL:
+ jj_consume_token(INTEGER_LITERAL);
+ lit.setValue(new LongIntegerLiteral(new Long(token.image)));
+ break;
+ case FLOAT_LITERAL:
+ jj_consume_token(FLOAT_LITERAL);
+ lit.setValue(new FloatLiteral(new Float(token.image)));
+ break;
+ case DOUBLE_LITERAL:
+ jj_consume_token(DOUBLE_LITERAL);
+ lit.setValue(new DoubleLiteral(new Double(token.image)));
+ break;
+ case MISSING:
+ jj_consume_token(MISSING);
+ lit.setValue(MissingLiteral.INSTANCE);
+ break;
+ case NULL:
+ jj_consume_token(NULL);
+ lit.setValue(NullLiteral.INSTANCE);
+ break;
+ case TRUE:
+ jj_consume_token(TRUE);
+ lit.setValue(TrueLiteral.INSTANCE);
+ break;
+ case FALSE:
+ jj_consume_token(FALSE);
+ lit.setValue(FalseLiteral.INSTANCE);
+ break;
+ default:
+ jj_la1[18] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ {if (true) return lit;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Expression OperatorExpr() throws ParseException, ParseException {
+ OperatorExpr op = null;
+ Expression operand = null;
+ operand = AndExpr();
+ label_5:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case OR:
+ ;
+ break;
+ default:
+ jj_la1[19] = jj_gen;
+ break label_5;
+ }
+ jj_consume_token(OR);
+ if (op == null) {
+ op = new OperatorExpr();
+ op.addOperand(operand);
+ op.setCurrentop(true);
+ }
+ try{
+ op.addOperator(token.image);
+ } catch (AsterixException e){
+ {if (true) throw new ParseException(e.getMessage());}
+ }
+ operand = AndExpr();
+ op.addOperand(operand);
+ }
+ {if (true) return op==null? operand: op;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Expression AddExpr() throws ParseException, ParseException {
+ OperatorExpr op = null;
+ Expression operand = null;
+ operand = MultExpr();
+ label_6:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case MINUS:
+ case PLUS:
+ ;
+ break;
+ default:
+ jj_la1[20] = jj_gen;
+ break label_6;
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case PLUS:
+ jj_consume_token(PLUS);
+ break;
+ case MINUS:
+ jj_consume_token(MINUS);
+ break;
+ default:
+ jj_la1[21] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ if (op == null) {
+ op = new OperatorExpr();
+ op.addOperand(operand);
+ op.setCurrentop(true);
+ }
+ try{
+ ((OperatorExpr)op).addOperator(token.image);
+ } catch (AsterixException e){
+ {if (true) throw new ParseException(e.getMessage());}
+ }
+ operand = MultExpr();
+ op.addOperand(operand);
+ }
+ {if (true) return op==null? operand: op;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Statement SetStatement() throws ParseException, ParseException {
+ String pn = null;
+ String pv = null;
+ jj_consume_token(SET);
+ pn = Identifier();
+ pv = StringLiteral();
+ {if (true) return new SetStatement(pn, pv);}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public RunStatement RunStatement() throws ParseException, ParseException {
+ String system = null;
+ String tmp;
+ ArrayList<String> parameters = new ArrayList<String>();
+ Pair<Identifier,Identifier> nameComponentsFrom = null;
+ Pair<Identifier,Identifier> nameComponentsTo = null;
+ jj_consume_token(RUN);
+ system = Identifier();
+ jj_consume_token(LEFTPAREN);
+ label_7:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case STRING_LITERAL:
+ case IDENTIFIER:
+ ;
+ break;
+ default:
+ jj_la1[22] = jj_gen;
+ break label_7;
+ }
+ tmp = Identifier();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COMMA:
+ jj_consume_token(COMMA);
+ break;
+ default:
+ jj_la1[23] = jj_gen;
+ ;
+ }
+ parameters.add(tmp);
+ }
+ jj_consume_token(RIGHTPAREN);
+ jj_consume_token(FROM);
+ jj_consume_token(DATASET);
+ nameComponentsFrom = QualifiedName();
+ jj_consume_token(TO);
+ jj_consume_token(DATASET);
+ nameComponentsTo = QualifiedName();
+ {if (true) return new RunStatement(system, parameters, nameComponentsFrom.first, nameComponentsFrom.second, nameComponentsTo.first, nameComponentsTo.second);}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public List<Statement> Statement() throws ParseException, ParseException {
+ scopeStack.push(RootScopeFactory.createRootScope(this));
+ List<Statement> decls = new ArrayList<Statement>();
+ Statement stmt = null;
+ label_8:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 4:
+ case 5:
+ case 6:
+ case COMPACT:
+ case CONNECT:
+ case CREATE:
+ case DATASET:
+ case DECLARE:
+ case DELETE:
+ case DISCONNECT:
+ case DROP:
+ case EVERY:
+ case FOR:
+ case FROM:
+ case IF:
+ case INSERT:
+ case LET:
+ case LOAD:
+ case REFRESH:
+ case RUN:
+ case SET:
+ case SOME:
+ case UPDATE:
+ case UPSERT:
+ case USE:
+ case WITH:
+ case WRITE:
+ case MINUS:
+ case PLUS:
+ case LEFTPAREN:
+ case LEFTBRACKET:
+ case LEFTBRACE:
+ case LEFTDBLBRACE:
+ case INTEGER_LITERAL:
+ case MISSING:
+ case NULL:
+ case TRUE:
+ case FALSE:
+ case DOUBLE_LITERAL:
+ case FLOAT_LITERAL:
+ case STRING_LITERAL:
+ case IDENTIFIER:
+ case VARIABLE:
+ ;
+ break;
+ default:
+ jj_la1[24] = jj_gen;
+ break label_8;
+ }
+ stmt = SingleStatement();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 3:
+ jj_consume_token(3);
+ break;
+ default:
+ jj_la1[25] = jj_gen;
+ ;
+ }
+ decls.add(stmt);
+ }
+ jj_consume_token(0);
+ {if (true) return decls;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public String GetPolicy() throws ParseException, ParseException {
+ String policy = null;
+ jj_consume_token(USING);
+ jj_consume_token(POLICY);
+ policy = Identifier();
+ {if (true) return policy;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Expression FLWOGR() throws ParseException, ParseException {
+ FLWOGRExpression flworg = new FLWOGRExpression();
+ List<Clause> clauseList = new ArrayList<Clause>();
+ Expression returnExpr;
+ Clause tmp;
+ createNewScope();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case FOR:
+ case FROM:
+ tmp = ForClause();
+ clauseList.add(tmp);
+ break;
+ case LET:
+ case WITH:
+ tmp = LetClause();
+ clauseList.add(tmp);
+ break;
+ default:
+ jj_la1[26] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ label_9:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DISTINCT:
+ case FOR:
+ case FROM:
+ case GROUP:
+ case LET:
+ case LIMIT:
+ case ORDER:
+ case WHERE:
+ case WITH:
+ ;
+ break;
+ default:
+ jj_la1[27] = jj_gen;
+ break label_9;
+ }
+ tmp = Clause();
+ clauseList.add(tmp);
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case RETURN:
+ jj_consume_token(RETURN);
+ break;
+ case SELECT:
+ jj_consume_token(SELECT);
+ break;
+ default:
+ jj_la1[28] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ returnExpr = Expression();
+ flworg.setClauseList(clauseList);
+ flworg.setReturnExpr(returnExpr);
+ removeCurrentScope();
+ {if (true) return flworg;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public DistinctClause DistinctClause() throws ParseException, ParseException {
+ List<Expression> exprs = new ArrayList<Expression>();
+ Expression expr;
+ jj_consume_token(DISTINCT);
+ jj_consume_token(BY);
+ expr = Expression();
+ exprs.add(expr);
+ label_10:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COMMA:
+ ;
+ break;
+ default:
+ jj_la1[29] = jj_gen;
+ break label_10;
+ }
+ jj_consume_token(COMMA);
+ expr = Expression();
+ exprs.add(expr);
+ }
+ {if (true) return new DistinctClause(exprs);}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Identifier Field() throws ParseException, ParseException {
+ String ident = null;
+ jj_consume_token(DOT);
+ ident = Identifier();
+ {if (true) return new Identifier(ident);}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public String Identifier() throws ParseException, ParseException {
+ String lit = null;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case IDENTIFIER:
+ jj_consume_token(IDENTIFIER);
+ {if (true) return token.image;}
+ break;
+ case STRING_LITERAL:
+ lit = StringLiteral();
+ {if (true) return lit;}
+ break;
+ default:
+ jj_la1[30] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ throw new Error("Missing return statement in function");
+ }
+
+// Merged Non-terminal
+ final public Statement SingleStatement() throws ParseException, ParseException {
+ Statement stmt = null;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case USE:
+ stmt = DataverseDeclaration();
+ break;
+ case DECLARE:
+ stmt = FunctionDeclaration();
+ break;
+ case CREATE:
+ stmt = CreateStatement();
+ break;
+ case LOAD:
+ stmt = LoadStatement();
+ break;
+ case DROP:
+ stmt = DropStatement();
+ break;
+ case WRITE:
+ stmt = WriteStatement();
+ break;
+ case SET:
+ stmt = SetStatement();
+ break;
+ case INSERT:
+ case UPSERT:
+ stmt = InsertStatement();
+ break;
+ case DELETE:
+ stmt = DeleteStatement();
+ break;
+ case UPDATE:
+ stmt = UpdateStatement();
+ break;
+ case CONNECT:
+ case DISCONNECT:
+ stmt = FeedStatement();
+ break;
+ case COMPACT:
+ stmt = CompactStatement();
+ break;
+ case DATASET:
+ case EVERY:
+ case FOR:
+ case FROM:
+ case IF:
+ case LET:
+ case SOME:
+ case WITH:
+ case MINUS:
+ case PLUS:
+ case LEFTPAREN:
+ case LEFTBRACKET:
+ case LEFTBRACE:
+ case LEFTDBLBRACE:
+ case INTEGER_LITERAL:
+ case MISSING:
+ case NULL:
+ case TRUE:
+ case FALSE:
+ case DOUBLE_LITERAL:
+ case FLOAT_LITERAL:
+ case STRING_LITERAL:
+ case IDENTIFIER:
+ case VARIABLE:
+ stmt = Query();
+ break;
+ case REFRESH:
+ stmt = RefreshExternalDatasetStatement();
+ break;
+ case RUN:
+ stmt = RunStatement();
+ break;
+ case 4:
+ case 5:
+ case 6:
+ stmt = ChannelSubscriptionStatement();
+ break;
+ default:
+ jj_la1[31] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ {if (true) return stmt;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Clause LetClause() throws ParseException, ParseException {
+ LetClause lc = new LetClause();
+ VariableExpr varExp;
+ Expression beExp;
+ extendCurrentScope();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case LET:
+ jj_consume_token(LET);
+ break;
+ case WITH:
+ jj_consume_token(WITH);
+ break;
+ default:
+ jj_la1[32] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ varExp = Variable();
+ jj_consume_token(ASSIGN);
+ beExp = Expression();
+ getCurrentScope().addNewVarSymbolToScope(varExp.getVar());
+ lc.setVarExpr(varExp);
+ lc.setBindingExpr(beExp);
+ {if (true) return lc;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public ListConstructor UnorderedListConstructor() throws ParseException, ParseException {
+ ListConstructor expr = new ListConstructor();
+ List<Expression> exprList = null;
+ expr.setType(ListConstructor.Type.UNORDERED_LIST_CONSTRUCTOR);
+ jj_consume_token(LEFTDBLBRACE);
+ exprList = ExpressionList();
+ jj_consume_token(RIGHTDBLBRACE);
+ expr.setExprList(exprList);
+ {if (true) return expr;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Expression PrimaryExpr() throws ParseException, ParseException {
+ Expression expr = null;
+ if (jj_2_1(2)) {
+ expr = FunctionCallExpr();
+ } else {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case INTEGER_LITERAL:
+ case MISSING:
+ case NULL:
+ case TRUE:
+ case FALSE:
+ case DOUBLE_LITERAL:
+ case FLOAT_LITERAL:
+ case STRING_LITERAL:
+ expr = Literal();
+ break;
+ case DATASET:
+ expr = DatasetAccessExpression();
+ break;
+ case VARIABLE:
+ expr = VariableRef();
+ if(((VariableExpr)expr).getIsNewVar() == true)
+ {if (true) throw new ParseException("can't find variable " + ((VariableExpr)expr).getVar());}
+ break;
+ case LEFTBRACKET:
+ case LEFTDBLBRACE:
+ expr = ListConstructor();
+ break;
+ case LEFTBRACE:
+ expr = RecordConstructor();
+ break;
+ case LEFTPAREN:
+ expr = ParenthesizedExpression();
+ break;
+ default:
+ jj_la1[33] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+ {if (true) return expr;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Expression DatasetAccessExpression() throws ParseException, ParseException {
+ String funcName;
+ String arg1 = null;
+ String arg2 = null;
+ Expression nameArg;
+ jj_consume_token(DATASET);
+ funcName = token.image;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case STRING_LITERAL:
+ case IDENTIFIER:
+ arg1 = Identifier();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DOT:
+ jj_consume_token(DOT);
+ arg2 = Identifier();
+ break;
+ default:
+ jj_la1[34] = jj_gen;
+ ;
+ }
+ String name = arg2 == null ? arg1 : arg1 + "." + arg2;
+ LiteralExpr ds = new LiteralExpr();
+ ds.setValue( new StringLiteral(name) );
+ nameArg = ds;
+ if(arg2 != null){
+ addDataverse(arg1.toString());
+ addDataset(name);
+ } else {
+ addDataset(defaultDataverse + "." + name);
+ }
+ break;
+ case LEFTPAREN:
+ jj_consume_token(LEFTPAREN);
+ nameArg = Expression();
+ jj_consume_token(RIGHTPAREN);
+ break;
+ default:
+ jj_la1[35] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ String dataverse = MetadataConstants.METADATA_DATAVERSE_NAME;
+ FunctionSignature signature = lookupFunctionSignature(dataverse, funcName, 1);
+ if (signature == null) {
+ signature = new FunctionSignature(dataverse, funcName, 1);
+ }
+ List<Expression> argList = new ArrayList<Expression>();
+ argList.add(nameArg);
+ {if (true) return new CallExpr(signature, argList);}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Pair<Identifier,Identifier> QualifiedName() throws ParseException, ParseException {
+ String first = null;
+ String second = null;
+ first = Identifier();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DOT:
+ jj_consume_token(DOT);
+ second = Identifier();
+ break;
+ default:
+ jj_la1[36] = jj_gen;
+ ;
+ }
+ Identifier id1 = null;
+ Identifier id2 = null;
+ if (second == null) {
+ id2 = new Identifier(first);
+ } else
+ {
+ id1 = new Identifier(first);
+ id2 = new Identifier(second);
+ }
+ {if (true) return new Pair<Identifier,Identifier>(id1, id2);}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public UpdateClause UpdateClause() throws ParseException, ParseException {
+ Expression target = null;
+ Expression value = null ;
+ InsertStatement is = null;
+ DeleteStatement ds = null;
+ UpdateStatement us = null;
+ Expression condition = null;
+ UpdateClause ifbranch = null;
+ UpdateClause elsebranch = null;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case SET:
+ jj_consume_token(SET);
+ target = Expression();
+ jj_consume_token(ASSIGN);
+ value = Expression();
+ break;
+ case INSERT:
+ case UPSERT:
+ is = InsertStatement();
+ break;
+ case DELETE:
+ ds = DeleteStatement();
+ break;
+ case UPDATE:
+ us = UpdateStatement();
+ break;
+ case IF:
+ jj_consume_token(IF);
+ jj_consume_token(LEFTPAREN);
+ condition = Expression();
+ jj_consume_token(RIGHTPAREN);
+ jj_consume_token(THEN);
+ ifbranch = UpdateClause();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ELSE:
+ jj_consume_token(ELSE);
+ elsebranch = UpdateClause();
+ break;
+ default:
+ jj_la1[37] = jj_gen;
+ ;
+ }
+ {if (true) return new UpdateClause(target, value, is, ds, us, condition, ifbranch, elsebranch);}
+ break;
+ default:
+ jj_la1[38] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Clause ForClause() throws ParseException, ParseException {
+ ForClause fc = new ForClause();
+ VariableExpr varExp;
+ VariableExpr varPos = null;
+ Expression inExp;
+ extendCurrentScope();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case FOR:
+ jj_consume_token(FOR);
+ break;
+ case FROM:
+ jj_consume_token(FROM);
+ break;
+ default:
+ jj_la1[39] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ varExp = Variable();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case AT:
+ jj_consume_token(AT);
+ varPos = Variable();
+ break;
+ default:
+ jj_la1[40] = jj_gen;
+ ;
+ }
+ jj_consume_token(IN);
+ inExp = Expression();
+ fc.setVarExpr(varExp);
+ getCurrentScope().addNewVarSymbolToScope(varExp.getVar());
+ fc.setInExpr(inExp);
+ if (varPos != null) {
+ fc.setPosExpr(varPos);
+ getCurrentScope().addNewVarSymbolToScope(varPos.getVar());
+ }
+ {if (true) return fc;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Clause OrderbyClause() throws ParseException, ParseException {
+ OrderbyClause oc = new OrderbyClause();
+ Expression orderbyExpr;
+ List<Expression> orderbyList = new ArrayList<Expression>();
+ List<OrderbyClause.OrderModifier> modifierList = new ArrayList<OrderbyClause.OrderModifier >();
+ int numOfOrderby = 0;
+ jj_consume_token(ORDER);
+ String hint = getHint(token);
+ if (hint != null) {
+ if (hint.startsWith(INMEMORY_HINT)) {
+ String splits[] = hint.split(" +");
+ int numFrames = Integer.parseInt(splits[1]);
+ int numTuples = Integer.parseInt(splits[2]);
+ oc.setNumFrames(numFrames);
+ oc.setNumTuples(numTuples);
+ }
+ if (hint.startsWith(RANGE_HINT)) {
+ try{
+ oc.setRangeMap(RangeMapBuilder.parseHint(hint.substring(RANGE_HINT.length())));
+ } catch (AsterixException e) {
+ {if (true) throw new ParseException(e.getMessage());}
+ }
+ }
+ }
+ jj_consume_token(BY);
+ orderbyExpr = Expression();
+ orderbyList.add(orderbyExpr);
+ OrderbyClause.OrderModifier modif = OrderbyClause.OrderModifier.ASC;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ASC:
+ case DESC:
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ASC:
+ jj_consume_token(ASC);
+ modif = OrderbyClause.OrderModifier.ASC;
+ break;
+ case DESC:
+ jj_consume_token(DESC);
+ modif = OrderbyClause.OrderModifier.DESC;
+ break;
+ default:
+ jj_la1[41] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ break;
+ default:
+ jj_la1[42] = jj_gen;
+ ;
+ }
+ modifierList.add(modif);
+ label_11:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COMMA:
+ ;
+ break;
+ default:
+ jj_la1[43] = jj_gen;
+ break label_11;
+ }
+ jj_consume_token(COMMA);
+ orderbyExpr = Expression();
+ orderbyList.add(orderbyExpr);
+ modif = OrderbyClause.OrderModifier.ASC;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ASC:
+ case DESC:
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ASC:
+ jj_consume_token(ASC);
+ modif = OrderbyClause.OrderModifier.ASC;
+ break;
+ case DESC:
+ jj_consume_token(DESC);
+ modif = OrderbyClause.OrderModifier.DESC;
+ break;
+ default:
+ jj_la1[44] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ break;
+ default:
+ jj_la1[45] = jj_gen;
+ ;
+ }
+ modifierList.add(modif);
+ }
+ oc.setModifierList(modifierList);
+ oc.setOrderbyList(orderbyList);
+ {if (true) return oc;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Expression IfThenElse() throws ParseException, ParseException {
+ Expression condExpr;
+ Expression thenExpr;
+ Expression elseExpr;
+ IfExpr ifExpr = new IfExpr();
+ jj_consume_token(IF);
+ jj_consume_token(LEFTPAREN);
+ condExpr = Expression();
+ jj_consume_token(RIGHTPAREN);
+ jj_consume_token(THEN);
+ thenExpr = Expression();
+ jj_consume_token(ELSE);
+ elseExpr = Expression();
+ ifExpr.setCondExpr(condExpr);
+ ifExpr.setThenExpr(thenExpr);
+ ifExpr.setElseExpr(elseExpr);
+ {if (true) return ifExpr;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public void RecordField(RecordTypeDefinition recType) throws ParseException, ParseException {
+ String fieldName;
+ TypeExpression type = null;
+ boolean nullable = false;
+ fieldName = Identifier();
+ String hint = getHint(token);
+ IRecordFieldDataGen rfdg = hint != null ? parseFieldDataGen(hint) : null;
+ jj_consume_token(COLON);
+ type = TypeExpr();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case QUES:
+ jj_consume_token(QUES);
+ nullable = true;
+ break;
+ default:
+ jj_la1[46] = jj_gen;
+ ;
+ }
+ recType.addField(fieldName, type, nullable, rfdg);
+ }
+
+ final public Expression UnionExpr() throws ParseException, ParseException {
+ UnionExpr union = null;
+ Expression operand1 = null;
+ Expression operand2 = null;
+ operand1 = UnaryExpr();
+ label_12:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case UNION:
+ ;
+ break;
+ default:
+ jj_la1[47] = jj_gen;
+ break label_12;
+ }
+ jj_consume_token(UNION);
+ operand2 = UnaryExpr();
+ if (union == null) {
+ union = new UnionExpr();
+ union.addExpr(operand1);
+ }
+ union.addExpr(operand2);
+ }
+ {if (true) return (union == null)? operand1: union;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Expression RelExpr() throws ParseException, ParseException {
+ OperatorExpr op = null;
+ Expression operand = null;
+ boolean broadcast = false;
+ IExpressionAnnotation annotation = null;
+ operand = AddExpr();
+ if (operand instanceof VariableExpr) {
+ String hint = getHint(token);
+ if (hint != null && hint.equals(BROADCAST_JOIN_HINT)) {
+ broadcast = true;
+ }
+ }
+ if (jj_2_2(2)) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case LT:
+ jj_consume_token(LT);
+ break;
+ case GT:
+ jj_consume_token(GT);
+ break;
+ case LE:
+ jj_consume_token(LE);
+ break;
+ case GE:
+ jj_consume_token(GE);
+ break;
+ case EQ:
+ jj_consume_token(EQ);
+ break;
+ case NE:
+ jj_consume_token(NE);
+ break;
+ case SIMILAR:
+ jj_consume_token(SIMILAR);
+ break;
+ default:
+ jj_la1[48] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ String mhint = getHint(token);
+ if (mhint != null) {
+ if (mhint.equals(INDEXED_NESTED_LOOP_JOIN_HINT)) {
+ annotation = IndexedNLJoinExpressionAnnotation.INSTANCE;
+ } else if (mhint.equals(SKIP_SECONDARY_INDEX_SEARCH_HINT)) {
+ annotation = SkipSecondaryIndexSearchExpressionAnnotation.INSTANCE;
+ }
+ }
+ if (op == null) {
+ op = new OperatorExpr();
+ op.addOperand(operand, broadcast);
+ op.setCurrentop(true);
+ broadcast = false;
+ }
+ try{
+ op.addOperator(token.image);
+ } catch (AsterixException e){
+ {if (true) throw new ParseException(e.getMessage());}
+ }
+ operand = AddExpr();
+ broadcast = false;
+ if (operand instanceof VariableExpr) {
+ String hint = getHint(token);
+ if (hint != null && hint.equals(BROADCAST_JOIN_HINT)) {
+ broadcast = true;
+ }
+ }
+ op.addOperand(operand, broadcast);
+ } else {
+ ;
+ }
+ if (annotation != null) {
+ op.addHint(annotation);
+ }
+ {if (true) return op==null? operand: op;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public String FilterField() throws ParseException, ParseException {
+ String filterField = null;
+ filterField = Identifier();
+ {if (true) return filterField;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public FunctionSignature ApplyFunction() throws ParseException, ParseException {
+ FunctionName functioName = null;
+ FunctionSignature funcSig = null;
+ jj_consume_token(APPLY);
+ jj_consume_token(FUNCTION);
+ functioName = FunctionName();
+ String fqFunctionName = functioName.library == null ? functioName.function : functioName.library + "#" + functioName.function;
+ {if (true) return new FunctionSignature(functioName.dataverse, fqFunctionName, 1);}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public String CompactionPolicy() throws ParseException, ParseException {
+ String compactionPolicy = null;
+ compactionPolicy = Identifier();
+ {if (true) return compactionPolicy;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public FunctionName FunctionName() throws ParseException, ParseException {
+ String first = null;
+ String second = null;
+ String third = null;
+ boolean secondAfterDot = false;
+ first = Identifier();
+ FunctionName result = new FunctionName();
+ result.hint = getHint(token);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DOT:
+ case SYMBOLHASH:
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DOT:
+ jj_consume_token(DOT);
+ second = Identifier();
+ secondAfterDot = true;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case SYMBOLHASH:
+ jj_consume_token(SYMBOLHASH);
+ third = Identifier();
+ break;
+ default:
+ jj_la1[49] = jj_gen;
+ ;
+ }
+ break;
+ case SYMBOLHASH:
+ jj_consume_token(SYMBOLHASH);
+ second = Identifier();
+ break;
+ default:
+ jj_la1[50] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ break;
+ default:
+ jj_la1[51] = jj_gen;
+ ;
+ }
+ if (second == null) {
+ result.dataverse = defaultDataverse;
+ result.library = null;
+ result.function = first;
+ } else if (third == null) {
+ if (secondAfterDot) {
+ result.dataverse = first;
+ result.library = null;
+ result.function = second;
+ } else {
+ result.dataverse = defaultDataverse;
+ result.library = first;
+ result.function = second;
+ }
+ } else {
+ result.dataverse = first;
+ result.library = second;
+ result.function = third;
+ }
+
+ if (result.function.equalsIgnoreCase("int")) {
+ result.function = "int64";
+ }
+ {if (true) return result;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public List<Expression> ExpressionList() throws ParseException, ParseException {
+ Expression expr = null;
+ List<Expression> list = null;
+ List<Expression> exprList = new ArrayList<Expression>();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DATASET:
+ case EVERY:
+ case FOR:
+ case FROM:
+ case IF:
+ case LET:
+ case SOME:
+ case WITH:
+ case MINUS:
+ case PLUS:
+ case LEFTPAREN:
+ case LEFTBRACKET:
+ case LEFTBRACE:
+ case LEFTDBLBRACE:
+ case INTEGER_LITERAL:
+ case MISSING:
+ case NULL:
+ case TRUE:
+ case FALSE:
+ case DOUBLE_LITERAL:
+ case FLOAT_LITERAL:
+ case STRING_LITERAL:
+ case IDENTIFIER:
+ case VARIABLE:
+ expr = Expression();
+ exprList.add(expr);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COMMA:
+ jj_consume_token(COMMA);
+ list = ExpressionList();
+ exprList.addAll(list);
+ break;
+ default:
+ jj_la1[52] = jj_gen;
+ ;
+ }
+ break;
+ default:
+ jj_la1[53] = jj_gen;
+ ;
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COMMA:
+ Comma();
+ break;
+ default:
+ jj_la1[54] = jj_gen;
+ ;
+ }
+ {if (true) return exprList;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public DeleteStatement DeleteStatement() throws ParseException, ParseException {
+ VariableExpr var = null;
+ Expression condition = null;
+ Pair<Identifier, Identifier> nameComponents;
+ // This is related to the new metadata lock management
+ setDataverses(new ArrayList<String>());
+ setDatasets(new ArrayList<String>());
+ jj_consume_token(DELETE);
+ var = Variable();
+ getCurrentScope().addNewVarSymbolToScope(var.getVar());
+ jj_consume_token(FROM);
+ jj_consume_token(DATASET);
+ nameComponents = QualifiedName();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case WHERE:
+ jj_consume_token(WHERE);
+ condition = Expression();
+ break;
+ default:
+ jj_la1[55] = jj_gen;
+ ;
+ }
+ // First we get the dataverses and datasets that we want to lock
+ List<String> dataverses = getDataverses();
+ List<String> datasets = getDatasets();
+ // we remove the pointer to the dataverses and datasets
+ setDataverses(null);
+ setDatasets(null);
+ {if (true) return new DeleteStatement(var, nameComponents.first, nameComponents.second,
+ condition, getVarCounter(), dataverses, datasets);}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Map<String,String> Properties() throws ParseException, ParseException {
+ Map<String,String> properties = new HashMap<String,String>();
+ Pair<String, String> property;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case LEFTPAREN:
+ jj_consume_token(LEFTPAREN);
+ property = Property();
+ properties.put(property.first, property.second);
+ label_13:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COMMA:
+ ;
+ break;
+ default:
+ jj_la1[56] = jj_gen;
+ break label_13;
+ }
+ jj_consume_token(COMMA);
+ property = Property();
+ properties.put(property.first, property.second);
+ }
+ jj_consume_token(RIGHTPAREN);
+ break;
+ default:
+ jj_la1[57] = jj_gen;
+ ;
+ }
+ {if (true) return properties;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Clause GroupClause() throws ParseException, ParseException {
+ GroupbyClause gbc = new GroupbyClause();
+ // GbyVariableExpressionPair pair = new GbyVariableExpressionPair();
+ List<GbyVariableExpressionPair> vePairList = new ArrayList<GbyVariableExpressionPair>();
+ List<GbyVariableExpressionPair> decorPairList = new ArrayList<GbyVariableExpressionPair>();
+ Map<Expression, VariableExpr> withVarMap = new HashMap<Expression, VariableExpr>();
+ VariableExpr var = null;
+ VariableExpr withVar = null;
+ Expression expr = null;
+ VariableExpr decorVar = null;
+ Expression decorExpr = null;
+ Scope newScope = extendCurrentScopeNoPush(true);
+ // extendCurrentScope(true);
+
+ jj_consume_token(GROUP);
+ String hint = getHint(token);
+ if (hint != null && hint.equals(HASH_GROUP_BY_HINT)) {
+ gbc.setHashGroupByHint(true);
+ }
+ jj_consume_token(BY);
+ if (jj_2_3(2)) {
+ var = Variable();
+ newScope.addNewVarSymbolToScope(var.getVar());
+ jj_consume_token(ASSIGN);
+ } else {
+ ;
+ }
+ expr = Expression();
+ GbyVariableExpressionPair pair1 = new GbyVariableExpressionPair(var, expr);
+ vePairList.add(pair1);
+ label_14:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COMMA:
+ ;
+ break;
+ default:
+ jj_la1[58] = jj_gen;
+ break label_14;
+ }
+ jj_consume_token(COMMA);
+ if (jj_2_4(2)) {
+ var = Variable();
+ newScope.addNewVarSymbolToScope(var.getVar());
+ jj_consume_token(ASSIGN);
+ } else {
+ ;
+ }
+ expr = Expression();
+ GbyVariableExpressionPair pair2 = new GbyVariableExpressionPair(var, expr);
+ vePairList.add(pair2);
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DECOR:
+ jj_consume_token(DECOR);
+ decorVar = Variable();
+ jj_consume_token(ASSIGN);
+ decorExpr = Expression();
+ newScope.addNewVarSymbolToScope(decorVar.getVar());
+ GbyVariableExpressionPair pair3 = new GbyVariableExpressionPair(decorVar, decorExpr);
+ decorPairList.add(pair3);
+ label_15:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COMMA:
+ ;
+ break;
+ default:
+ jj_la1[59] = jj_gen;
+ break label_15;
+ }
+ jj_consume_token(COMMA);
+ jj_consume_token(DECOR);
+ decorVar = Variable();
+ jj_consume_token(ASSIGN);
+ decorExpr = Expression();
+ newScope.addNewVarSymbolToScope(decorVar.getVar());
+ GbyVariableExpressionPair pair4 = new GbyVariableExpressionPair(decorVar, decorExpr);
+ decorPairList.add(pair4);
+ }
+ break;
+ default:
+ jj_la1[60] = jj_gen;
+ ;
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case WITH:
+ jj_consume_token(WITH);
+ break;
+ case KEEPING:
+ jj_consume_token(KEEPING);
+ break;
+ default:
+ jj_la1[61] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ withVar = VariableRef();
+ if(withVar.getIsNewVar()==true)
+ {if (true) throw new ParseException("can't find variable " + withVar.getVar());}
+ withVarMap.put(withVar, withVar);
+ newScope.addNewVarSymbolToScope(withVar.getVar());
+ label_16:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COMMA:
+ ;
+ break;
+ default:
+ jj_la1[62] = jj_gen;
+ break label_16;
+ }
+ jj_consume_token(COMMA);
+ withVar = VariableRef();
+ if(withVar.getIsNewVar()==true)
+ {if (true) throw new ParseException("can't find variable " + withVar.getVar());}
+ withVarMap.put(withVar, withVar);
+ newScope.addNewVarSymbolToScope(withVar.getVar());
+ }
+ gbc.setGbyPairList(vePairList);
+ gbc.setDecorPairList(decorPairList);
+ gbc.setWithVarMap(withVarMap);
+ replaceCurrentScope(newScope);
+ {if (true) return gbc;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public OrderedListTypeDefinition OrderedListTypeDef() throws ParseException, ParseException {
+ TypeExpression type = null;
+ jj_consume_token(LEFTBRACKET);
+ type = TypeExpr();
+ jj_consume_token(RIGHTBRACKET);
+ {if (true) return new OrderedListTypeDefinition(type);}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public boolean IfNotExists() throws ParseException, ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case IF:
+ jj_consume_token(IF);
+ jj_consume_token(IDENTIFIER);
+ if(!token.image.equals("not")){
+ {if (true) throw new ParseException("Expect word \u005c"not\u005c" at line " + token.beginLine + ", column "
+ + token.beginColumn +"!");}
+ }
+ jj_consume_token(EXISTS);
+ {if (true) return true;}
+ break;
+ default:
+ jj_la1[63] = jj_gen;
+ ;
+ }
+ {if (true) return false;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Expression ListConstructor() throws ParseException, ParseException {
+ Expression expr = null;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case LEFTBRACKET:
+ expr = OrderedListConstructor();
+ break;
+ case LEFTDBLBRACE:
+ expr = UnorderedListConstructor();
+ break;
+ default:
+ jj_la1[64] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ {if (true) return expr;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public LoadStatement LoadStatement() throws ParseException, ParseException {
+ Identifier dataverseName = null;
+ Identifier datasetName = null;
+ boolean alreadySorted = false;
+ String adapterName;
+ Map<String,String> properties;
+ Pair<Identifier,Identifier> nameComponents = null;
+ jj_consume_token(LOAD);
+ jj_consume_token(DATASET);
+ nameComponents = QualifiedName();
+ dataverseName = nameComponents.first;
+ datasetName = nameComponents.second;
+ jj_consume_token(USING);
+ adapterName = AdapterName();
+ properties = Configuration();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case PRESORTED:
+ jj_consume_token(PRESORTED);
+ alreadySorted = true;
+ break;
+ default:
+ jj_la1[65] = jj_gen;
+ ;
+ }
+ {if (true) return new LoadStatement(dataverseName, datasetName, adapterName, properties, alreadySorted);}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Statement ChannelSubscriptionStatement() throws ParseException, ParseException {
+ Statement stmt = null;
+ Pair<Identifier,Identifier> nameComponents = null;
+ List<Expression> argList = new ArrayList<Expression>();
+ Expression tmp = null;
+ String id = null;
+ String subscriptionId = null;
+ Pair<Identifier,Identifier> brokerName = null;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 4:
+ jj_consume_token(4);
+ jj_consume_token(TO);
+ nameComponents = QualifiedName();
+ jj_consume_token(LEFTPAREN);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DATASET:
+ case EVERY:
+ case FOR:
+ case FROM:
+ case IF:
+ case LET:
+ case SOME:
+ case WITH:
+ case MINUS:
+ case PLUS:
+ case LEFTPAREN:
+ case LEFTBRACKET:
+ case LEFTBRACE:
+ case LEFTDBLBRACE:
+ case INTEGER_LITERAL:
+ case MISSING:
+ case NULL:
+ case TRUE:
+ case FALSE:
+ case DOUBLE_LITERAL:
+ case FLOAT_LITERAL:
+ case STRING_LITERAL:
+ case IDENTIFIER:
+ case VARIABLE:
+ tmp = Expression();
+ argList.add(tmp);
+ label_17:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COMMA:
+ ;
+ break;
+ default:
+ jj_la1[66] = jj_gen;
+ break label_17;
+ }
+ jj_consume_token(COMMA);
+ tmp = Expression();
+ argList.add(tmp);
+ }
+ break;
+ default:
+ jj_la1[67] = jj_gen;
+ ;
+ }
+ jj_consume_token(RIGHTPAREN);
+ jj_consume_token(ON);
+ brokerName = QualifiedName();
+ stmt = new ChannelSubscribeStatement(nameComponents.first, nameComponents.second, argList, getVarCounter(), brokerName.first, brokerName.second, subscriptionId);
+ break;
+ case 5:
+ jj_consume_token(5);
+ id = StringLiteral();
+ jj_consume_token(FROM);
+ nameComponents = QualifiedName();
+ setDataverses(new ArrayList<String>());
+ setDatasets(new ArrayList<String>());
+ VariableExpr varExp = new VariableExpr();
+ VarIdentifier var = new VarIdentifier();
+ varExp.setVar(var);
+ var.setValue("$subscriptionPlaceholder");
+ getCurrentScope().addNewVarSymbolToScope(varExp.getVar());
+ List<String> dataverses = getDataverses();
+ List<String> datasets = getDatasets();
+ // we remove the pointer to the dataverses and datasets
+ setDataverses(null);
+ setDatasets(null);
+ stmt = new ChannelUnsubscribeStatement(varExp, nameComponents.first, nameComponents.second, id, getVarCounter(), dataverses, datasets);
+ break;
+ case 6:
+ jj_consume_token(6);
+ jj_consume_token(7);
+ subscriptionId = StringLiteral();
+ jj_consume_token(ON);
+ nameComponents = QualifiedName();
+ jj_consume_token(LEFTPAREN);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DATASET:
+ case EVERY:
+ case FOR:
+ case FROM:
+ case IF:
+ case LET:
+ case SOME:
+ case WITH:
+ case MINUS:
+ case PLUS:
+ case LEFTPAREN:
+ case LEFTBRACKET:
+ case LEFTBRACE:
+ case LEFTDBLBRACE:
+ case INTEGER_LITERAL:
+ case MISSING:
+ case NULL:
+ case TRUE:
+ case FALSE:
+ case DOUBLE_LITERAL:
+ case FLOAT_LITERAL:
+ case STRING_LITERAL:
+ case IDENTIFIER:
+ case VARIABLE:
+ tmp = Expression();
+ argList.add(tmp);
+ label_18:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COMMA:
+ ;
+ break;
+ default:
+ jj_la1[68] = jj_gen;
+ break label_18;
+ }
+ jj_consume_token(COMMA);
+ tmp = Expression();
+ argList.add(tmp);
+ }
+ break;
+ default:
+ jj_la1[69] = jj_gen;
+ ;
+ }
+ jj_consume_token(RIGHTPAREN);
+ jj_consume_token(TO);
+ brokerName = QualifiedName();
+ stmt = new ChannelSubscribeStatement(nameComponents.first, nameComponents.second, argList, getVarCounter(), brokerName.first, brokerName.second, subscriptionId);
+ break;
+ default:
+ jj_la1[70] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ {if (true) return stmt;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Expression UnaryExpr() throws ParseException, ParseException {
+ UnaryExpr uexpr = null;
+ Expression expr = null;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case MINUS:
+ case PLUS:
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case PLUS:
+ jj_consume_token(PLUS);
+ break;
+ case MINUS:
+ jj_consume_token(MINUS);
+ break;
+ default:
+ jj_la1[71] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ uexpr = new UnaryExpr();
+ try{
+ uexpr.setExprType(token.image);
+ } catch (AsterixException e){
+ {if (true) throw new ParseException(e.getMessage());}
+ }
+ break;
+ default:
+ jj_la1[72] = jj_gen;
+ ;
+ }
+ expr = ValueExpr();
+ if(uexpr!=null){
+ ((UnaryExpr)uexpr).setExpr(expr);
+ {if (true) return uexpr;}
+ }
+ else{
+ {if (true) return expr;}
+ }
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Query Query() throws ParseException, ParseException {
+ Query query = new Query(false);
+ // we set the pointers to the dataverses and datasets lists to fill them with entities to be locked
+ setDataverses(query.getDataverses());
+ setDatasets(query.getDatasets());
+ Expression expr;
+ expr = Expression();
+ query.setBody(expr);
+ query.setVarCounter(getVarCounter());
+ // we remove the pointers to the locked entities before we return the query object
+ setDataverses(null);
+ setDatasets(null);
+ {if (true) return query;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Expression ValueExpr() throws ParseException, ParseException {
+ Expression expr = null;
+ Identifier ident = null;
+ AbstractAccessor fa = null;
+ Expression indexExpr = null;
+ expr = PrimaryExpr();
+ label_19:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case LEFTBRACKET:
+ case DOT:
+ ;
+ break;
+ default:
+ jj_la1[73] = jj_gen;
+ break label_19;
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DOT:
+ ident = Field();
+ fa = (fa == null ? new FieldAccessor(expr, ident)
+ : new FieldAccessor(fa, ident));
+ break;
+ case LEFTBRACKET:
+ indexExpr = Index();
+ fa = (fa == null ? new IndexAccessor(expr, indexExpr)
+ : new IndexAccessor(fa, indexExpr));
+ break;
+ default:
+ jj_la1[74] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+ {if (true) return fa == null ? expr : fa;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public TypeReferenceExpression TypeReference() throws ParseException, ParseException {
+ String id = null;
+ id = Identifier();
+ if (id.equalsIgnoreCase("int")) {
+ id = "int64";
+ }
+
+ {if (true) return new TypeReferenceExpression(new Identifier(id));}
+ throw new Error("Missing return statement in function");
+ }
+
+// Merged Non-terminal
+ final public Statement DropStatement() throws ParseException, ParseException {
+ String id = null;
+ Pair<Identifier,Identifier> pairId = null;
+ Triple<Identifier,Identifier,Identifier> tripleId = null;
+ FunctionSignature funcSig = null;
+ boolean ifExists = false;
+ Statement stmt = null;
+ jj_consume_token(DROP);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DATASET:
+ jj_consume_token(DATASET);
+ pairId = QualifiedName();
+ ifExists = IfExists();
+ stmt = new DropDatasetStatement(pairId.first, pairId.second, ifExists);
+ break;
+ case INDEX:
+ jj_consume_token(INDEX);
+ tripleId = DoubleQualifiedName();
+ ifExists = IfExists();
+ stmt = new IndexDropStatement(tripleId.first, tripleId.second, tripleId.third, ifExists);
+ break;
+ case NODEGROUP:
+ jj_consume_token(NODEGROUP);
+ id = Identifier();
+ ifExists = IfExists();
+ stmt = new NodeGroupDropStatement(new Identifier(id), ifExists);
+ break;
+ case TYPE:
+ jj_consume_token(TYPE);
+ pairId = TypeName();
+ ifExists = IfExists();
+ stmt = new TypeDropStatement(pairId.first, pairId.second, ifExists);
+ break;
+ case DATAVERSE:
+ jj_consume_token(DATAVERSE);
+ id = Identifier();
+ ifExists = IfExists();
+ stmt = new DataverseDropStatement(new Identifier(id), ifExists);
+ break;
+ case FUNCTION:
+ jj_consume_token(FUNCTION);
+ funcSig = FunctionSignature();
+ ifExists = IfExists();
+ stmt = new FunctionDropStatement(funcSig, ifExists);
+ break;
+ case FEED:
+ jj_consume_token(FEED);
+ pairId = QualifiedName();
+ ifExists = IfExists();
+ stmt = new FeedDropStatement(pairId.first, pairId.second, ifExists);
+ break;
+ case INGESTION:
+ jj_consume_token(INGESTION);
+ jj_consume_token(POLICY);
+ pairId = QualifiedName();
+ ifExists = IfExists();
+ stmt = new FeedPolicyDropStatement(pairId.first, pairId.second, ifExists);
+ break;
+ case CHANNEL:
+ jj_consume_token(CHANNEL);
+ pairId = QualifiedName();
+ ifExists = IfExists();
+ stmt = new ChannelDropStatement(pairId.first, pairId.second, ifExists);
+ break;
+ case BROKER:
+ jj_consume_token(BROKER);
+ pairId = QualifiedName();
+ ifExists = IfExists();
+ stmt = new BrokerDropStatement(pairId.first, pairId.second, ifExists);
+ break;
+ default:
+ jj_la1[75] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ {if (true) return stmt;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Expression ParenthesizedExpression() throws ParseException, ParseException {
+ Expression expr;
+ jj_consume_token(LEFTPAREN);
+ expr = Expression();
+ jj_consume_token(RIGHTPAREN);
+ {if (true) return expr;}
+ throw new Error("Missing return statement in function");
+ }
+
+// Merged Non-terminal
+ final public Statement CreateStatement() throws ParseException, ParseException {
+ String hint = null;
+ boolean dgen = false;
+ Statement stmt = null;
+ jj_consume_token(CREATE);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case TYPE:
+ hint = getHint(token);
+ if (hint != null && hint.startsWith(DGEN_HINT)) {
+ dgen = true;
+ }
+ stmt = TypeSpecification(hint, dgen);
+ break;
+ case NODEGROUP:
+ stmt = NodegroupSpecification();
+ break;
+ case DATASET:
+ case EXTERNAL:
+ case INTERNAL:
+ case TEMPORARY:
+ stmt = DatasetSpecification();
+ break;
+ case INDEX:
+ stmt = IndexSpecification();
+ break;
+ case DATAVERSE:
+ stmt = DataverseSpecification();
+ break;
+ case FUNCTION:
+ stmt = FunctionSpecification();
+ break;
+ case FEED:
+ case PRIMARY:
+ case SECONDARY:
+ stmt = FeedSpecification();
+ break;
+ case INGESTION:
+ stmt = FeedPolicySpecification();
+ break;
+ case 8:
+ stmt = ChannelSpecification();
+ break;
+ case BROKER:
+ stmt = BrokerSpecification();
+ break;
+ default:
+ jj_la1[76] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ {if (true) return stmt;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public QuantifiedExpression QuantifiedExpression() throws ParseException, ParseException {
+ QuantifiedExpression qc = new QuantifiedExpression();
+ List<QuantifiedPair> quantifiedList = new ArrayList<QuantifiedPair>();
+ Expression satisfiesExpr;
+ VariableExpr var;
+ Expression inExpr;
+ QuantifiedPair pair;
+ createNewScope();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case SOME:
+ jj_consume_token(SOME);
+ qc.setQuantifier(QuantifiedExpression.Quantifier.SOME);
+ break;
+ case EVERY:
+ jj_consume_token(EVERY);
+ qc.setQuantifier(QuantifiedExpression.Quantifier.EVERY);
+ break;
+ default:
+ jj_la1[77] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ var = Variable();
+ jj_consume_token(IN);
+ inExpr = Expression();
+ pair = new QuantifiedPair(var, inExpr);
+ getCurrentScope().addNewVarSymbolToScope(var.getVar());
+ quantifiedList.add(pair);
+ label_20:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COMMA:
+ ;
+ break;
+ default:
+ jj_la1[78] = jj_gen;
+ break label_20;
+ }
+ jj_consume_token(COMMA);
+ var = Variable();
+ jj_consume_token(IN);
+ inExpr = Expression();
+ pair = new QuantifiedPair(var, inExpr);
+ getCurrentScope().addNewVarSymbolToScope(var.getVar());
+ quantifiedList.add(pair);
+ }
+ jj_consume_token(SATISFIES);
+ satisfiesExpr = Expression();
+ qc.setSatisfiesExpr(satisfiesExpr);
+ qc.setQuantifiedList(quantifiedList);
+ removeCurrentScope();
+ {if (true) return qc;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public String AdapterName() throws ParseException, ParseException {
+ String adapterName = null;
+ adapterName = Identifier();
+ {if (true) return adapterName;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public DataverseDecl DataverseDeclaration() throws ParseException, ParseException {
+ String dvName = null;
+ jj_consume_token(USE);
+ jj_consume_token(DATAVERSE);
+ dvName = Identifier();
+ defaultDataverse = dvName;
+ {if (true) return new DataverseDecl(new Identifier(dvName));}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public CreateFeedStatement FeedSpecification() throws ParseException, ParseException {
+ Pair<Identifier,Identifier> nameComponents = null;
+ boolean ifNotExists = false;
+ String adapterName = null;
+ Map<String,String> properties = null;
+ FunctionSignature appliedFunction = null;
+ CreateFeedStatement cfs = null;
+ Pair<Identifier,Identifier> sourceNameComponents = null;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case SECONDARY:
+ jj_consume_token(SECONDARY);
+ jj_consume_token(FEED);
+ nameComponents = QualifiedName();
+ ifNotExists = IfNotExists();
+ jj_consume_token(FROM);
+ jj_consume_token(FEED);
+ sourceNameComponents = QualifiedName();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case APPLY:
+ appliedFunction = ApplyFunction();
+ break;
+ default:
+ jj_la1[79] = jj_gen;
+ ;
+ }
+ cfs = new CreateSecondaryFeedStatement(nameComponents, sourceNameComponents, appliedFunction, ifNotExists);
+ break;
+ case FEED:
+ case PRIMARY:
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case PRIMARY:
+ jj_consume_token(PRIMARY);
+ break;
+ default:
+ jj_la1[80] = jj_gen;
+ ;
+ }
+ jj_consume_token(FEED);
+ nameComponents = QualifiedName();
+ ifNotExists = IfNotExists();
+ jj_consume_token(USING);
+ adapterName = AdapterName();
+ properties = Configuration();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case APPLY:
+ appliedFunction = ApplyFunction();
+ break;
+ default:
+ jj_la1[81] = jj_gen;
+ ;
+ }
+ cfs = new CreatePrimaryFeedStatement(nameComponents, adapterName, properties, appliedFunction, ifNotExists);
+ break;
+ default:
+ jj_la1[82] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ {if (true) return cfs;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public FunctionSignature FunctionSignature() throws ParseException, ParseException {
+ FunctionName fctName = null;
+ int arity = 0;
+ fctName = F
<TRUNCATED>
[02/12] asterixdb-bad git commit: Initial commit
Posted by sj...@apache.org.
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/maven-shared-archive-resources/META-INF/LICENSE
----------------------------------------------------------------------
diff --git a/target/maven-shared-archive-resources/META-INF/LICENSE b/target/maven-shared-archive-resources/META-INF/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/target/maven-shared-archive-resources/META-INF/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/maven-shared-archive-resources/META-INF/NOTICE
----------------------------------------------------------------------
diff --git a/target/maven-shared-archive-resources/META-INF/NOTICE b/target/maven-shared-archive-resources/META-INF/NOTICE
new file mode 100644
index 0000000..6d778da
--- /dev/null
+++ b/target/maven-shared-archive-resources/META-INF/NOTICE
@@ -0,0 +1,8 @@
+
+asterix-opt
+Copyright 2016 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
----------------------------------------------------------------------
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..ff4596d
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,49 @@
+org/apache/asterix/bad/lang/BADQueryTranslatorFactory.class
+org/apache/asterix/bad/metadata/Broker.class
+org/apache/asterix/bad/BADConstants$ChannelJobType.class
+org/apache/asterix/bad/lang/BADAQLParser.class
+org/apache/asterix/bad/lang/BADAQLParser$FunctionName.class
+org/apache/asterix/bad/runtime/NotifyBrokerPOperator.class
+org/apache/asterix/bad/lang/BADLangExtension.class
+org/apache/asterix/bad/lang/statement/BrokerDropStatement.class
+org/apache/asterix/bad/metadata/ChannelSearchKey.class
+org/apache/asterix/bad/lang/statement/ChannelSubscribeStatement.class
+org/apache/asterix/bad/lang/BADAQLParser$LookaheadSuccess.class
+org/apache/asterix/bad/lang/BADQueryTranslatorExtension$LazyHolder.class
+org/apache/asterix/bad/lang/TokenMgrError.class
+org/apache/asterix/bad/lang/BADAQLParserConstants.class
+org/apache/asterix/bad/metadata/ChannelEventsListener$1.class
+org/apache/asterix/bad/rules/InsertBrokerNotifierForChannelRule.class
+org/apache/asterix/bad/metadata/BADMetadataExtension.class
+org/apache/asterix/bad/metadata/BADMetadataIndexes.class
+org/apache/asterix/bad/runtime/NotifyBrokerOperator.class
+org/apache/asterix/bad/lang/BADAQLParserTokenManager.class
+org/apache/asterix/bad/lang/BADAQLParser$1.class
+org/apache/asterix/bad/lang/statement/ChannelDropStatement.class
+org/apache/asterix/bad/lang/statement/CreateChannelStatement.class
+org/apache/asterix/bad/runtime/RepetitiveChannelOperatorNodePushable$1.class
+org/apache/asterix/bad/lang/BADAQLParser$IndexParams.class
+org/apache/asterix/bad/metadata/BADMetadataRecordTypes.class
+org/apache/asterix/bad/runtime/NotifyBrokerRuntimeFactory.class
+org/apache/asterix/bad/lang/BADQueryTranslatorExtension.class
+org/apache/asterix/bad/metadata/BrokerSearchKey.class
+org/apache/asterix/bad/lang/JavaCharStream.class
+org/apache/asterix/bad/BADConstants.class
+org/apache/asterix/bad/lang/statement/ChannelUnsubscribeStatement.class
+org/apache/asterix/bad/runtime/RepetitiveChannelOperatorNodePushable.class
+org/apache/asterix/bad/lang/Token.class
+org/apache/asterix/bad/ChannelJobInfo.class
+org/apache/asterix/bad/runtime/NotifyBrokerRuntime.class
+org/apache/asterix/bad/lang/BADStatementExecutor.class
+org/apache/asterix/bad/metadata/ChannelTupleTranslator.class
+org/apache/asterix/bad/metadata/Channel.class
+org/apache/asterix/bad/lang/BADCompilationProvider.class
+org/apache/asterix/bad/lang/BADLangExtension$1.class
+org/apache/asterix/bad/lang/statement/CreateBrokerStatement.class
+org/apache/asterix/bad/lang/BADAQLParser$JJCalls.class
+org/apache/asterix/bad/metadata/ChannelEventsListener.class
+org/apache/asterix/bad/runtime/RepetitiveChannelOperatorDescriptor.class
+org/apache/asterix/bad/lang/BADParserFactory.class
+org/apache/asterix/bad/ChannelJobService.class
+org/apache/asterix/bad/lang/ParseException.class
+org/apache/asterix/bad/metadata/BrokerTupleTranslator.class
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
----------------------------------------------------------------------
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..8b4c282
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,39 @@
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/target/generated-sources/javacc/org/apache/asterix/bad/lang/ParseException.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/ChannelTupleTranslator.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/BADMetadataRecordTypes.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/BADConstants.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntimeFactory.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/statement/BrokerDropStatement.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/statement/ChannelSubscribeStatement.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/rules/InsertBrokerNotifierForChannelRule.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/ChannelJobInfo.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/BADQueryTranslatorExtension.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/statement/ChannelDropStatement.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/BADMetadataExtension.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/target/generated-sources/javacc/org/apache/asterix/bad/lang/BADAQLParserConstants.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/BADCompilationProvider.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorNodePushable.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/target/generated-sources/javacc/org/apache/asterix/bad/lang/JavaCharStream.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/target/generated-sources/javacc/org/apache/asterix/bad/lang/TokenMgrError.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/BADMetadataIndexes.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerOperator.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/target/generated-sources/javacc/org/apache/asterix/bad/lang/BADAQLParserTokenManager.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/ChannelJobService.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorDescriptor.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/statement/ChannelUnsubscribeStatement.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/statement/CreateChannelStatement.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/BrokerTupleTranslator.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/target/generated-sources/javacc/org/apache/asterix/bad/lang/BADAQLParser.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/BADLangExtension.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/BADParserFactory.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerPOperator.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/statement/CreateBrokerStatement.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/BADStatementExecutor.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/target/generated-sources/javacc/org/apache/asterix/bad/lang/Token.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/ChannelSearchKey.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/BADQueryTranslatorFactory.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/ChannelEventsListener.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/BrokerSearchKey.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/Channel.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/Broker.java
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
----------------------------------------------------------------------
diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
new file mode 100644
index 0000000..2ce725a
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
@@ -0,0 +1,2 @@
+org/apache/asterix/bad/test/BADOptimizerTest.class
+org/apache/asterix/bad/test/BADExecutionTest.class
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
----------------------------------------------------------------------
diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
new file mode 100644
index 0000000..6a5de13
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
@@ -0,0 +1,2 @@
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/java/org/apache/asterix/bad/test/BADExecutionTest.java
+/Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/java/org/apache/asterix/bad/test/BADOptimizerTest.java
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/rat.txt
----------------------------------------------------------------------
diff --git a/target/rat.txt b/target/rat.txt
new file mode 100644
index 0000000..2ad4245
--- /dev/null
+++ b/target/rat.txt
@@ -0,0 +1,72 @@
+
+*****************************************************
+Summary
+-------
+Generated at: 2016-09-09T11:53:38-07:00
+Notes: 0
+Binaries: 0
+Archives: 0
+Standards: 35
+
+Apache Licensed: 35
+Generated Documents: 0
+
+JavaDocs are generated and so license header is optional
+Generated files do not required license headers
+
+0 Unknown Licenses
+
+*******************************
+
+Unapproved licenses:
+
+
+*******************************
+
+Archives:
+
+*****************************************************
+ Files with Apache License headers will be marked AL
+ Binary files (which do not require AL headers) will be marked B
+ Compressed archives will be marked A
+ Notices, licenses etc will be marked N
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/BADConstants.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/ChannelJobInfo.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/ChannelJobService.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/BADCompilationProvider.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/BADLangExtension.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/BADParserFactory.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/BADQueryTranslatorExtension.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/BADQueryTranslatorFactory.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/BADStatementExecutor.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/statement/BrokerDropStatement.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/statement/ChannelDropStatement.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/statement/ChannelSubscribeStatement.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/statement/ChannelUnsubscribeStatement.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/statement/CreateBrokerStatement.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/lang/statement/CreateChannelStatement.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/BADMetadataExtension.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/BADMetadataIndexes.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/BADMetadataRecordTypes.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/Broker.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/BrokerSearchKey.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/BrokerTupleTranslator.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/Channel.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/ChannelEventsListener.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/ChannelSearchKey.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/metadata/ChannelTupleTranslator.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/rules/InsertBrokerNotifierForChannelRule.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerOperator.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerPOperator.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntimeFactory.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorDescriptor.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/main/java/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorNodePushable.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/java/org/apache/asterix/bad/test/BADExecutionTest.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/java/org/apache/asterix/bad/test/BADOptimizerTest.java
+ AL /Users/stevenjacobs/asterix/asertixdb/asterixdb/asterix-opt/src/test/resources/conf/asterix-build-configuration.xml
+
+*****************************************************
+ Printing headers for files without AL header...
+
+
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/META-INF/DEPENDENCIES
----------------------------------------------------------------------
diff --git a/target/test-classes/META-INF/DEPENDENCIES b/target/test-classes/META-INF/DEPENDENCIES
new file mode 100644
index 0000000..3c60591
--- /dev/null
+++ b/target/test-classes/META-INF/DEPENDENCIES
@@ -0,0 +1,489 @@
+// ------------------------------------------------------------------
+// Transitive dependencies of this project determined from the
+// maven pom organized by organization.
+// ------------------------------------------------------------------
+
+asterix-opt
+
+
+From: 'an unknown organization'
+ - AntLR Parser Generator (http://www.antlr.org/) antlr:antlr:jar:2.7.7
+ License: BSD License (http://www.antlr.org/license.html)
+ - AOP alliance (http://aopalliance.sourceforge.net) aopalliance:aopalliance:jar:1.0
+ License: Public Domain
+ - Guava: Google Core Libraries for Java (http://code.google.com/p/guava-libraries/guava) com.google.guava:guava:bundle:18.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - JSON.simple (http://code.google.com/p/json-simple/) com.googlecode.json-simple:json-simple:jar:1.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Microsoft Windows Azure Client API (https://github.com/WindowsAzure/azure-sdk-for-java) com.microsoft.windowsazure:microsoft-windowsazure-api:jar:0.4.4
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - rome (http://rometools.github.io/rome/) com.rometools:rome:jar:1.5.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - rome-utils (http://rometools.github.io/rome-utils/) com.rometools:rome-utils:jar:1.5.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - ParaNamer Core (http://paranamer.codehaus.org/paranamer) com.thoughtworks.paranamer:paranamer:jar:2.3
+ License: BSD (LICENSE.txt)
+ - commons-beanutils commons-beanutils:commons-beanutils:jar:1.7.0
+
+ - commons-logging-api commons-logging:commons-logging-api:jar:1.0.4
+
+ - rxjava (https://github.com/ReactiveX/RxJava) io.reactivex:rxjava:jar:1.1.8
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - JavaBeans Activation Framework (JAF) (http://java.sun.com/products/javabeans/jaf/index.jsp) javax.activation:activation:jar:1.1
+ License: Common Development and Distribution License (CDDL) v1.0 (https://glassfish.dev.java.net/public/CDDLv1.0.html)
+ - javax.inject (http://code.google.com/p/atinject/) javax.inject:javax.inject:jar:1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - JDO2 API javax.jdo:jdo2-api:jar:2.3-20090302111651
+
+ - servlet-api javax.servlet:servlet-api:jar:2.5
+
+ - jsp-api javax.servlet.jsp:jsp-api:jar:2.1
+
+ - Java Transaction API (http://java.sun.com/products/jta) javax.transaction:jta:jar:1.1
+
+ - Streaming API for XML javax.xml.stream:stax-api:jar:1.0-2
+ License: GNU General Public Library (http://www.gnu.org/licenses/gpl.txt) License: COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 (http://www.sun.com/cddl/cddl.html)
+ - jdom jdom:jdom:jar:1.0
+
+ - An open source Java toolkit for Amazon S3 (http://jets3t.s3.amazonaws.com/index.html) net.java.dev.jets3t:jets3t:jar:0.6.1
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+ - ANTLR ST4 4.0.4 (http://www.stringtemplate.org) org.antlr:ST4:jar:4.0.4
+ License: BSD licence (http://antlr.org/license.html)
+ - Antlr 3.4 Runtime (http://www.antlr.org) org.antlr:antlr-runtime:jar:3.4
+
+ - ANTLR StringTemplate (http://www.stringtemplate.org) org.antlr:stringtemplate:jar:3.2.1
+ License: BSD licence (http://antlr.org/license.html)
+ - Apache Thrift (http://thrift.apache.org) org.apache.thrift:libfb303:pom:0.9.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Thrift (http://thrift.apache.org) org.apache.thrift:libthrift:pom:0.9.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - zookeeper org.apache.zookeeper:zookeeper:pom:3.4.5
+
+ - Jettison org.codehaus.jettison:jettison:bundle:1.1
+
+ - DataNucleus JDO API plugin (http://www.datanucleus.org) org.datanucleus:datanucleus-api-jdo:jar:3.2.6
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - DataNucleus Core (http://www.datanucleus.org) org.datanucleus:datanucleus-core:jar:3.2.10
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - DataNucleus RDBMS (http://www.datanucleus.org) org.datanucleus:datanucleus-rdbms:jar:3.2.9
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hamcrest Core (https://github.com/hamcrest/JavaHamcrest/hamcrest-core) org.hamcrest:hamcrest-core:jar:1.3
+ License: New BSD License (http://www.opensource.org/licenses/bsd-license.php)
+ - ini4j (http://www.ini4j.org) org.ini4j:ini4j:jar:0.5.4
+ License: Apache 2 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - JAXB2 Commons - Value Constructor Plugin (http://java.net/projects/jaxb2-commons/pages/value-constructor) org.jvnet.jaxb2_commons:jaxb2-value-constructor:jar:3.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - XZ for Java (http://tukaani.org/xz/java.html) org.tukaani:xz:jar:1.0
+ License: Public Domain
+ - twitter4j-core (http://twitter4j.org/) org.twitter4j:twitter4j-core:jar:4.0.3
+ License: Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+ - twitter4j-stream (http://twitter4j.org/) org.twitter4j:twitter4j-stream:jar:4.0.3
+ License: Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+ - oro oro:oro:jar:2.0.8
+
+ - rome rome:rome:jar:1.0.1-modified-01
+
+ - StAX API (http://stax.codehaus.org/) stax:stax-api:jar:1.0.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Xerces2-j (https://xerces.apache.org/xerces2-j/) xerces:xercesImpl:jar:2.11.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - XML Commons External Components XML APIs (http://xml.apache.org/commons/components/external/) xml-apis:xml-apis:jar:1.4.01
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt) License: The SAX License (http://www.saxproject.org/copying.html) License: The W3C License (http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/java-binding.zip)
+ - xmlenc Library (http://xmlenc.sourceforge.net) xmlenc:xmlenc:jar:0.52
+ License: The BSD License (http://www.opensource.org/licenses/bsd-license.php)
+
+From: 'Apache Software Foundation' (http://apache.org)
+ - Wicket Core (http://wicket.apache.org/wicket-core/wicket-core) org.apache.wicket:wicket-core:jar:1.5.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Wicket Request (http://maven.apache.org) org.apache.wicket:wicket-request:jar:1.5.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Wicket Util (http://maven.apache.org) org.apache.wicket:wicket-util:jar:1.5.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'Apache Software Foundation' (http://db.apache.org/)
+ - Apache Derby Database Engine and Embedded JDBC Driver (http://db.apache.org/derby/derby/) org.apache.derby:derby:jar:10.10.1.1
+ License: Apache 2 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'Apache Software Foundation' (http://jakarta.apache.org/)
+ - HttpClient (http://jakarta.apache.org/httpcomponents/httpclient-3.x/) commons-httpclient:commons-httpclient:jar:3.1
+ License: Apache License (http://www.apache.org/licenses/LICENSE-2.0)
+
+From: 'Apache Software Foundation' (http://www.apache.org)
+ - JDO API (http://db.apache.org/jdo) javax.jdo:jdo-api:jar:3.0.1
+ License: Apache 2 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Log4j (http://logging.apache.org/log4j/1.2/) log4j:log4j:bundle:1.2.17
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Hadoop Annotations org.apache.hadoop:hadoop-annotations:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Hadoop Auth org.apache.hadoop:hadoop-auth:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Hadoop Client org.apache.hadoop:hadoop-client:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Hadoop Common org.apache.hadoop:hadoop-common:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Hadoop Common org.apache.hadoop:hadoop-common:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Hadoop HDFS org.apache.hadoop:hadoop-hdfs:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Hadoop HDFS org.apache.hadoop:hadoop-hdfs:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-mapreduce-client-app org.apache.hadoop:hadoop-mapreduce-client-app:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-mapreduce-client-common org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-mapreduce-client-core org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-mapreduce-client-hs org.apache.hadoop:hadoop-mapreduce-client-hs:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-mapreduce-client-jobclient org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-mapreduce-client-jobclient org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-mapreduce-client-shuffle org.apache.hadoop:hadoop-mapreduce-client-shuffle:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Hadoop Mini-Cluster org.apache.hadoop:hadoop-minicluster:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-yarn-api org.apache.hadoop:hadoop-yarn-api:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-yarn-client org.apache.hadoop:hadoop-yarn-client:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-yarn-common org.apache.hadoop:hadoop-yarn-common:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-yarn-server-common org.apache.hadoop:hadoop-yarn-server-common:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-yarn-server-nodemanager org.apache.hadoop:hadoop-yarn-server-nodemanager:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-yarn-server-resourcemanager org.apache.hadoop:hadoop-yarn-server-resourcemanager:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-yarn-server-tests org.apache.hadoop:hadoop-yarn-server-tests:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hadoop-yarn-server-web-proxy org.apache.hadoop:hadoop-yarn-server-web-proxy:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'Couchbase, Inc.' (http://couchbase.com)
+ - Couchbase JVM Core IO (http://couchbase.com) com.couchbase.client:core-io:jar:1.3.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'e-movimento' (http://www.e-movimento.com)
+ - privileged accessor (http://code.google.com/p/privilegedaccessor/) com.e-movimento.tinytools:privilegedaccessor:jar:1.2.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'FasterXML' (http://fasterxml.com)
+ - Jackson (http://jackson.codehaus.org) org.codehaus.jackson:jackson-core-asl:jar:1.9.12
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - JAX-RS provider for JSON content type (http://jackson.codehaus.org) org.codehaus.jackson:jackson-jaxrs:jar:1.9.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt) License: GNU Lesser General Public License (LGPL), Version 2.1 (http://www.fsf.org/licensing/licenses/lgpl.txt)
+ - Data Mapper for Jackson (http://jackson.codehaus.org) org.codehaus.jackson:jackson-mapper-asl:jar:1.9.12
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Xml Compatibility extensions for Jackson (http://jackson.codehaus.org) org.codehaus.jackson:jackson-xc:jar:1.9.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt) License: GNU Lesser General Public License (LGPL), Version 2.1 (http://www.fsf.org/licensing/licenses/lgpl.txt)
+
+From: 'FasterXML' (http://fasterxml.com/)
+ - Jackson-core (http://wiki.fasterxml.com/JacksonHome) com.fasterxml.jackson.core:jackson-core:jar:2.2.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'GlassFish Community' (https://glassfish.dev.java.net)
+ - Java Servlet API (http://servlet-spec.java.net) javax.servlet:javax.servlet-api:jar:3.1.0
+ License: CDDL + GPLv2 with classpath exception (https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html)
+ - javax.servlet API v.3.0 (http://jcp.org/en/jsr/detail?id=315) org.glassfish:javax.servlet:jar:3.1
+ License: CDDL + GPLv2 with classpath exception (https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html)
+
+From: 'Google' (http://www.google.com/)
+ - Protocol Buffer Java API (http://code.google.com/p/protobuf) com.google.protobuf:protobuf-java:bundle:2.5.0
+ License: New BSD license (http://www.opensource.org/licenses/bsd-license.php)
+
+From: 'Google, Inc.' (http://www.google.com)
+ - Google Guice - Core Library (http://code.google.com/p/google-guice/guice/) com.google.inject:guice:jar:3.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Google Guice - Extensions - Servlet (http://code.google.com/p/google-guice/extensions-parent/guice-servlet/) com.google.inject.extensions:guice-servlet:jar:3.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'jcraft' (http://www.jcraft.com/jsch)
+ - JSch (http://www.jcraft.com/jsch/) com.jcraft:jsch:jar:0.1.42
+ License: BSD (http://www.jcraft.com/jsch/LICENSE.txt)
+
+From: 'JDOM' (http://www.jdom.org)
+ - JDOM (http://www.jdom.org) org.jdom:jdom:jar:2.0.2
+ License: Similar to Apache License but with the acknowledgment clause removed (https://raw.github.com/hunterhacker/jdom/master/LICENSE.txt)
+
+From: 'JolBox' (http://jolbox.com)
+ - BoneCP :: Core Library (http://jolbox.com/bonecp) com.jolbox:bonecp:bundle:0.8.0.RELEASE
+ License: Apache v2 (http://www.apache.org/licenses/LICENSE-2.0.html)
+
+From: 'JSON' (http://json.org/)
+ - JSON (JavaScript Object Notation) (http://www.json.org/java/index.html) org.json:json:jar:20090211
+ License: provided without support or warranty (http://www.json.org/license.html)
+
+From: 'JUnit' (http://www.junit.org)
+ - JUnit (http://junit.org) junit:junit:jar:4.11
+ License: Common Public License Version 1.0 (http://www.opensource.org/licenses/cpl1.0.txt)
+
+From: 'Kohsuke Kawaguchi' (http://www.kohsuke.org/)
+ - args4j (http://args4j.kohsuke.org/args4j/) args4j:args4j:bundle:2.33
+ License: MIT License (http://www.opensource.org/licenses/mit-license.php)
+
+From: 'Mort Bay Consulting' (http://www.mortbay.com)
+ - Jetty Server (http://www.eclipse.org/jetty/jetty-parent/project/modules/jetty) org.mortbay.jetty:jetty:jar:6.1.26
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+ - Jetty Utilities (http://www.eclipse.org/jetty/jetty-parent/project/jetty-util) org.mortbay.jetty:jetty-util:jar:6.1.26
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+
+From: 'ObjectWeb' (http://www.objectweb.org/)
+ - ASM Core (http://asm.objectweb.org/asm/) asm:asm:jar:3.1
+
+ - ASM All (http://asm.objectweb.org/asm-all/) org.ow2.asm:asm-all:jar:5.1
+ License: BSD (http://asm.objectweb.org/license.html)
+
+From: 'Oracle' (http://www.oracle.com)
+ - JavaMail API (compat) (http://kenai.com/projects/javamail/mail) javax.mail:mail:jar:1.4.5
+ License: CDDL (http://www.sun.com/cddl) License: GPLv2+CE (https://glassfish.dev.java.net/public/CDDL+GPL.html)
+
+From: 'Oracle Corporation' (http://www.oracle.com/)
+ - jersey-client (https://jersey.java.net/jersey-client/) com.sun.jersey:jersey-client:jar:1.13
+ License: CDDL 1.1 (http://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (http://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - jersey-core (https://jersey.java.net/jersey-core/) com.sun.jersey:jersey-core:bundle:1.9
+ License: CDDL 1.1 (http://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (http://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - jersey-grizzly2 (https://jersey.java.net/jersey-grizzly2/) com.sun.jersey:jersey-grizzly2:jar:1.9
+ License: CDDL 1.1 (http://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (http://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - jersey-json (https://jersey.java.net/jersey-json/) com.sun.jersey:jersey-json:jar:1.13
+ License: CDDL 1.1 (http://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (http://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - jersey-server (https://jersey.java.net/jersey-server/) com.sun.jersey:jersey-server:bundle:1.9
+ License: CDDL 1.1 (http://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (http://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - jersey-guice (https://jersey.java.net/jersey-contribs/jersey-guice/) com.sun.jersey.contribs:jersey-guice:jar:1.9
+ License: CDDL 1.1 (http://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (http://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - Jersey Test Framework - Core (https://jersey.java.net/jersey-test-framework/jersey-test-framework-core/) com.sun.jersey.jersey-test-framework:jersey-test-framework-core:jar:1.9
+ License: CDDL 1.1 (http://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (http://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - Jersey Test Framework - Grizzly 2 Module (https://jersey.java.net/jersey-test-framework/jersey-test-framework-grizzly2/) com.sun.jersey.jersey-test-framework:jersey-test-framework-grizzly2:jar:1.9
+ License: CDDL 1.1 (http://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (http://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - JAXB RI (http://jaxb.java.net/) com.sun.xml.bind:jaxb-impl:jar:2.2.3-1
+ License: CDDL 1.1 (https://glassfish.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (https://glassfish.java.net/public/CDDL+GPL_1_1.html)
+ - JAXB API bundle for GlassFish V3 (https://jaxb.dev.java.net/) javax.xml.bind:jaxb-api:jar:2.2.2
+ License: CDDL 1.1 (https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html) License: GPL2 w/ CPE (https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html)
+
+From: 'Oracle Corpration' (http://www.oracle.com)
+ - grizzly-framework (http://grizzly.java.net/grizzly-framework) org.glassfish.grizzly:grizzly-framework:bundle:2.1.2
+ License: CDDL+GPL (http://glassfish.java.net/public/CDDL+GPL.html)
+ - grizzly-http (http://grizzly.java.net/grizzly-http) org.glassfish.grizzly:grizzly-http:bundle:2.1.2
+ License: CDDL+GPL (http://glassfish.java.net/public/CDDL+GPL.html)
+ - grizzly-http-server (http://grizzly.java.net/grizzly-http-server) org.glassfish.grizzly:grizzly-http-server:bundle:2.1.2
+ License: CDDL+GPL (http://glassfish.java.net/public/CDDL+GPL.html)
+ - grizzly-http-servlet (http://grizzly.java.net/grizzly-http-servlet) org.glassfish.grizzly:grizzly-http-servlet:bundle:2.1.2
+ License: CDDL+GPL (http://glassfish.java.net/public/CDDL+GPL.html)
+ - grizzly-rcm (http://grizzly.java.net/grizzly-rcm) org.glassfish.grizzly:grizzly-rcm:bundle:2.1.2
+ License: CDDL+GPL (http://glassfish.java.net/public/CDDL+GPL.html)
+
+From: 'QOS.ch' (http://www.qos.ch)
+ - SLF4J API Module (http://www.slf4j.org) org.slf4j:slf4j-api:jar:1.7.7
+ License: MIT License (http://www.opensource.org/licenses/mit-license.php)
+ - SLF4J JCL Binding (http://www.slf4j.org) org.slf4j:slf4j-jcl:jar:1.6.3
+ License: MIT License (http://www.opensource.org/licenses/mit-license.php)
+ - SLF4J LOG4J-12 Binding (http://www.slf4j.org) org.slf4j:slf4j-log4j12:jar:1.7.5
+ License: MIT License (http://www.opensource.org/licenses/mit-license.php)
+
+From: 'ROME Project' (http://rome.dev.java.net)
+ - Rome HTTP Fetcher net.java.dev.rome:rome-fetcher:jar:1.0.0
+ License: Apache 2 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'Sun Microsystems' (http://www.sun.com)
+ - management-api (http://kenai.com/hg/gmbal~gf_common) org.glassfish.external:management-api:jar:3.0.0-b012
+ License: CDDL+GPL (https://glassfish.dev.java.net/public/CDDL+GPL.html)
+ - gmbal-api-only (http://kenai.com/hg/gmbal~master) org.glassfish.gmbal:gmbal-api-only:jar:3.0.0-b023
+ License: CDDL+GPL (https://glassfish.dev.java.net/public/CDDL+GPL.html)
+
+From: 'The Apache Software Foundation' (http://commons.apache.org/)
+ - Commons Configuration (http://commons.apache.org/${pom.artifactId.substring(8)}/) commons-configuration:commons-configuration:jar:1.6
+ License: The Apache Software License, Version 2.0 (/LICENSE.txt)
+
+From: 'The Apache Software Foundation' (http://jakarta.apache.org)
+ - Digester (http://jakarta.apache.org/commons/digester/) commons-digester:commons-digester:jar:1.8
+ License: The Apache Software License, Version 2.0 (/LICENSE.txt)
+ - EL (http://jakarta.apache.org/commons/el/) commons-el:commons-el:jar:1.0
+ License: The Apache Software License, Version 2.0 (/LICENSE.txt)
+
+From: 'The Apache Software Foundation' (http://www.apache.org/)
+ - Commons BeanUtils Core (http://commons.apache.org/beanutils/) commons-beanutils:commons-beanutils-core:jar:1.8.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons CLI (http://commons.apache.org/cli/) commons-cli:commons-cli:jar:1.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Commons Codec (http://commons.apache.org/proper/commons-codec/) commons-codec:commons-codec:jar:1.9
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons Collections (http://commons.apache.org/collections/) commons-collections:commons-collections:jar:3.2.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons Daemon (http://commons.apache.org/daemon/) commons-daemon:commons-daemon:jar:1.0.13
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons IO (http://commons.apache.org/io/) commons-io:commons-io:jar:2.4
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons Lang (http://commons.apache.org/lang/) commons-lang:commons-lang:jar:2.5
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Commons Logging (http://commons.apache.org/proper/commons-logging/) commons-logging:commons-logging:jar:1.2
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons Net (http://commons.apache.org/net/) commons-net:commons-net:jar:3.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Ant Core (http://ant.apache.org/) org.apache.ant:ant:jar:1.9.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Ant Launcher (http://ant.apache.org/) org.apache.ant:ant-launcher:jar:1.9.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-active (http://www.apache.org/apache-asterixdb/asterix-active/) org.apache.asterix:asterix-active:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-algebra (http://www.apache.org/apache-asterixdb/asterix-algebra/) org.apache.asterix:asterix-algebra:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-app (http://www.apache.org/apache-asterixdb/asterix-app/) org.apache.asterix:asterix-app:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-common (http://www.apache.org/apache-asterixdb/asterix-common/) org.apache.asterix:asterix-common:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-events (http://www.apache.org/apache-asterixdb/asterix-events/) org.apache.asterix:asterix-events:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-external-data (http://www.apache.org/apache-asterixdb/asterix-external-data/) org.apache.asterix:asterix-external-data:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-fuzzyjoin (http://www.apache.org/apache-asterixdb/asterix-fuzzyjoin/) org.apache.asterix:asterix-fuzzyjoin:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-lang-aql (http://www.apache.org/apache-asterixdb/asterix-lang-aql/) org.apache.asterix:asterix-lang-aql:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-lang-common (http://www.apache.org/apache-asterixdb/asterix-lang-common/) org.apache.asterix:asterix-lang-common:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-lang-sqlpp (http://www.apache.org/apache-asterixdb/asterix-lang-sqlpp/) org.apache.asterix:asterix-lang-sqlpp:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-metadata (http://www.apache.org/apache-asterixdb/asterix-metadata/) org.apache.asterix:asterix-metadata:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-om (http://www.apache.org/apache-asterixdb/asterix-om/) org.apache.asterix:asterix-om:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-replication (http://www.apache.org/apache-asterixdb/asterix-replication/) org.apache.asterix:asterix-replication:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-runtime (http://www.apache.org/apache-asterixdb/asterix-runtime/) org.apache.asterix:asterix-runtime:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-test-framework (http://www.apache.org/apache-asterixdb/asterix-test-framework/) org.apache.asterix:asterix-test-framework:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - asterix-transactions (http://www.apache.org/apache-asterixdb/asterix-transactions/) org.apache.asterix:asterix-transactions:jar:0.8.9-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Avro (http://avro.apache.org) org.apache.avro:avro:jar:1.7.4
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons Compress (http://commons.apache.org/compress/) org.apache.commons:commons-compress:jar:1.4.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons Lang (http://commons.apache.org/lang/) org.apache.commons:commons-lang3:jar:3.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Commons Math (http://commons.apache.org/math/) org.apache.commons:commons-math:jar:2.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Ant Utilities (http://hive.apache.org/hive-ant) org.apache.hive:hive-ant:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Common (http://hive.apache.org/hive-common) org.apache.hive:hive-common:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Query Language (http://hive.apache.org/hive-exec) org.apache.hive:hive-exec:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Metastore (http://hive.apache.org/hive-metastore) org.apache.hive:hive-metastore:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Serde (http://hive.apache.org/hive-serde) org.apache.hive:hive-serde:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Shims (http://hive.apache.org/hive-shims) org.apache.hive:hive-shims:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Shims 0.20 (http://hive.apache.org/hive-shims-0.20) org.apache.hive.shims:hive-shims-0.20:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Shims 0.20S (http://hive.apache.org/hive-shims-0.20S) org.apache.hive.shims:hive-shims-0.20S:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Shims 0.23 (http://hive.apache.org/hive-shims-0.23) org.apache.hive.shims:hive-shims-0.23:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Shims Common (http://hive.apache.org/hive-shims-common) org.apache.hive.shims:hive-shims-common:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Hive Shims Secure Common (http://hive.apache.org/hive-shims-common-secure) org.apache.hive.shims:hive-shims-common-secure:jar:0.13.0
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache HttpClient (http://hc.apache.org/httpcomponents-client) org.apache.httpcomponents:httpclient:jar:4.5.2
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache HttpCore (http://hc.apache.org/httpcomponents-core-ga) org.apache.httpcomponents:httpcore:jar:4.4.4
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - algebricks-common (http://www.apache.org/apache-asterixdb-hyracks/algebricks/algebricks-common/) org.apache.hyracks:algebricks-common:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - algebricks-compiler (http://www.apache.org/apache-asterixdb-hyracks/algebricks/algebricks-compiler/) org.apache.hyracks:algebricks-compiler:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - algebricks-core (http://www.apache.org/apache-asterixdb-hyracks/algebricks/algebricks-core/) org.apache.hyracks:algebricks-core:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - algebricks-data (http://www.apache.org/apache-asterixdb-hyracks/algebricks/algebricks-data/) org.apache.hyracks:algebricks-data:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - algebricks-rewriter (http://www.apache.org/apache-asterixdb-hyracks/algebricks/algebricks-rewriter/) org.apache.hyracks:algebricks-rewriter:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - algebricks-runtime (http://www.apache.org/apache-asterixdb-hyracks/algebricks/algebricks-runtime/) org.apache.hyracks:algebricks-runtime:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-api (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-api/) org.apache.hyracks:hyracks-api:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-client (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-client/) org.apache.hyracks:hyracks-client:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-comm (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-comm/) org.apache.hyracks:hyracks-comm:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-control-cc (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-control/hyracks-control-cc/) org.apache.hyracks:hyracks-control-cc:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-control-common (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-control/hyracks-control-common/) org.apache.hyracks:hyracks-control-common:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-control-nc (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-control/hyracks-control-nc/) org.apache.hyracks:hyracks-control-nc:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-data-std (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-data/hyracks-data-std/) org.apache.hyracks:hyracks-data-std:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-dataflow-common (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-dataflow-common/) org.apache.hyracks:hyracks-dataflow-common:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-dataflow-std (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-dataflow-std/) org.apache.hyracks:hyracks-dataflow-std:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-hdfs-2.x (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-hdfs/hyracks-hdfs-2.x/) org.apache.hyracks:hyracks-hdfs-2.x:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-hdfs-core (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-hdfs/hyracks-hdfs-core/) org.apache.hyracks:hyracks-hdfs-core:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-ipc (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-ipc/) org.apache.hyracks:hyracks-ipc:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-net (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-net/) org.apache.hyracks:hyracks-net:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-am-bloomfilter (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-am-bloomfilter/) org.apache.hyracks:hyracks-storage-am-bloomfilter:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-am-btree (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-am-btree/) org.apache.hyracks:hyracks-storage-am-btree:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-am-common (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-am-common/) org.apache.hyracks:hyracks-storage-am-common:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-am-lsm-btree (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-am-lsm-btree/) org.apache.hyracks:hyracks-storage-am-lsm-btree:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-am-lsm-common (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-am-lsm-common/) org.apache.hyracks:hyracks-storage-am-lsm-common:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-am-lsm-invertedindex (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-am-lsm-invertedindex/) org.apache.hyracks:hyracks-storage-am-lsm-invertedindex:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-am-lsm-rtree (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-am-lsm-rtree/) org.apache.hyracks:hyracks-storage-am-lsm-rtree:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-am-rtree (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-am-rtree/) org.apache.hyracks:hyracks-storage-am-rtree:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-storage-common (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-storage-common/) org.apache.hyracks:hyracks-storage-common:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - hyracks-util (http://www.apache.org/apache-asterixdb-hyracks/hyracks/hyracks-util/) org.apache.hyracks:hyracks-util:jar:0.2.18-SNAPSHOT
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - Apache Velocity (http://velocity.apache.org/engine/releases/velocity-1.5/) org.apache.velocity:velocity:pom:1.5
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - jasper-compiler (http://tomcat.apache.org/jasper-compiler) tomcat:jasper-compiler:jar:5.5.23
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+ - jasper-runtime (http://tomcat.apache.org/jasper-runtime) tomcat:jasper-runtime:jar:5.5.23
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'The Codehaus' (http://codehaus.org)
+ - Groovy (http://groovy.codehaus.org/) org.codehaus.groovy:groovy-all:jar:2.1.6
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+From: 'The Netty Project' (http://netty.io/)
+ - The Netty Project (http://netty.io/) io.netty:netty:bundle:3.6.2.Final
+ License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+
+From: 'Webtide' (http://webtide.com)
+ - Jetty :: Http Utility (http://www.eclipse.org/jetty) org.eclipse.jetty:jetty-http:jar:9.3.11.v20160721
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+ - Jetty :: IO Utility (http://www.eclipse.org/jetty) org.eclipse.jetty:jetty-io:jar:9.3.11.v20160721
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+ - Jetty :: Security (http://www.eclipse.org/jetty) org.eclipse.jetty:jetty-security:jar:9.3.11.v20160721
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+ - Jetty :: Server Core (http://www.eclipse.org/jetty) org.eclipse.jetty:jetty-server:jar:9.3.11.v20160721
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+ - Jetty :: Servlet Handling (http://www.eclipse.org/jetty) org.eclipse.jetty:jetty-servlet:jar:9.3.11.v20160721
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+ - Jetty :: Utilities (http://www.eclipse.org/jetty) org.eclipse.jetty:jetty-util:jar:9.3.11.v20160721
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+ - Jetty :: Webapp Application Support (http://www.eclipse.org/jetty) org.eclipse.jetty:jetty-webapp:jar:9.3.11.v20160721
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+ - Jetty :: XML utilities (http://www.eclipse.org/jetty) org.eclipse.jetty:jetty-xml:jar:9.3.11.v20160721
+ License: Apache Software License - Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) License: Eclipse Public License - Version 1.0 (http://www.eclipse.org/org/documents/epl-v10.php)
+
+From: 'xerial.org' (http://www.xerial.org/)
+ - Snappy for Java (http://code.google.com/p/snappy-java/) org.xerial.snappy:snappy-java:bundle:1.0.4.1
+ License: The Apache Software License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+
+
+
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/META-INF/LICENSE
----------------------------------------------------------------------
diff --git a/target/test-classes/META-INF/LICENSE b/target/test-classes/META-INF/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/target/test-classes/META-INF/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/test-classes/META-INF/NOTICE
----------------------------------------------------------------------
diff --git a/target/test-classes/META-INF/NOTICE b/target/test-classes/META-INF/NOTICE
new file mode 100644
index 0000000..6d778da
--- /dev/null
+++ b/target/test-classes/META-INF/NOTICE
@@ -0,0 +1,8 @@
+
+asterix-opt
+Copyright 2016 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+
[07/12] asterixdb-bad git commit: Initial commit
Posted by sj...@apache.org.
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/generated-resources/javacc/grammar.jj
----------------------------------------------------------------------
diff --git a/target/generated-resources/javacc/grammar.jj b/target/generated-resources/javacc/grammar.jj
new file mode 100644
index 0000000..ad77885
--- /dev/null
+++ b/target/generated-resources/javacc/grammar.jj
@@ -0,0 +1,2949 @@
+options{
+
+
+ STATIC = false;
+
+}
+PARSER_BEGIN(BADAQLParser)
+
+package org.apache.asterix.bad.lang;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import org.apache.asterix.bad.lang.statement.BrokerDropStatement;
+import org.apache.asterix.bad.lang.statement.ChannelDropStatement;
+import org.apache.asterix.bad.lang.statement.ChannelSubscribeStatement;
+import org.apache.asterix.bad.lang.statement.ChannelUnsubscribeStatement;
+import org.apache.asterix.bad.lang.statement.CreateBrokerStatement;
+import org.apache.asterix.bad.lang.statement.CreateChannelStatement;
+import org.apache.asterix.common.annotations.AutoDataGen;
+import org.apache.asterix.common.annotations.DateBetweenYearsDataGen;
+import org.apache.asterix.common.annotations.DatetimeAddRandHoursDataGen;
+import org.apache.asterix.common.annotations.DatetimeBetweenYearsDataGen;
+import org.apache.asterix.common.annotations.FieldIntervalDataGen;
+import org.apache.asterix.common.annotations.FieldValFileDataGen;
+import org.apache.asterix.common.annotations.FieldValFileSameIndexDataGen;
+import org.apache.asterix.common.annotations.IRecordFieldDataGen;
+import org.apache.asterix.common.annotations.InsertRandIntDataGen;
+import org.apache.asterix.common.annotations.ListDataGen;
+import org.apache.asterix.common.annotations.ListValFileDataGen;
+import org.apache.asterix.common.annotations.SkipSecondaryIndexSearchExpressionAnnotation;
+import org.apache.asterix.common.annotations.TypeDataGen;
+import org.apache.asterix.common.annotations.UndeclaredFieldsDataGen;
+import org.apache.asterix.common.config.DatasetConfig.DatasetType;
+import org.apache.asterix.common.config.DatasetConfig.IndexType;
+import org.apache.asterix.common.exceptions.AsterixException;
+import org.apache.asterix.common.functions.FunctionSignature;
+import org.apache.asterix.lang.aql.clause.DistinctClause;
+import org.apache.asterix.lang.aql.clause.ForClause;
+import org.apache.asterix.lang.aql.expression.FLWOGRExpression;
+import org.apache.asterix.lang.aql.expression.UnionExpr;
+import org.apache.asterix.lang.aql.util.RangeMapBuilder;
+import org.apache.asterix.lang.common.base.Clause;
+import org.apache.asterix.lang.common.base.Expression;
+import org.apache.asterix.lang.common.base.IParser;
+import org.apache.asterix.lang.common.base.Literal;
+import org.apache.asterix.lang.common.base.Statement;
+import org.apache.asterix.lang.common.clause.GroupbyClause;
+import org.apache.asterix.lang.common.clause.LetClause;
+import org.apache.asterix.lang.common.clause.LimitClause;
+import org.apache.asterix.lang.common.clause.OrderbyClause;
+import org.apache.asterix.lang.common.clause.UpdateClause;
+import org.apache.asterix.lang.common.clause.WhereClause;
+import org.apache.asterix.lang.common.context.RootScopeFactory;
+import org.apache.asterix.lang.common.context.Scope;
+import org.apache.asterix.lang.common.expression.AbstractAccessor;
+import org.apache.asterix.lang.common.expression.CallExpr;
+import org.apache.asterix.lang.common.expression.FieldAccessor;
+import org.apache.asterix.lang.common.expression.FieldBinding;
+import org.apache.asterix.lang.common.expression.GbyVariableExpressionPair;
+import org.apache.asterix.lang.common.expression.IfExpr;
+import org.apache.asterix.lang.common.expression.IndexAccessor;
+import org.apache.asterix.lang.common.expression.ListConstructor;
+import org.apache.asterix.lang.common.expression.LiteralExpr;
+import org.apache.asterix.lang.common.expression.OperatorExpr;
+import org.apache.asterix.lang.common.expression.OrderedListTypeDefinition;
+import org.apache.asterix.lang.common.expression.QuantifiedExpression;
+import org.apache.asterix.lang.common.expression.RecordConstructor;
+import org.apache.asterix.lang.common.expression.RecordTypeDefinition;
+import org.apache.asterix.lang.common.expression.TypeExpression;
+import org.apache.asterix.lang.common.expression.TypeReferenceExpression;
+import org.apache.asterix.lang.common.expression.UnaryExpr;
+import org.apache.asterix.lang.common.expression.UnorderedListTypeDefinition;
+import org.apache.asterix.lang.common.expression.VariableExpr;
+import org.apache.asterix.lang.common.literal.DoubleLiteral;
+import org.apache.asterix.lang.common.literal.FalseLiteral;
+import org.apache.asterix.lang.common.literal.FloatLiteral;
+import org.apache.asterix.lang.common.literal.LongIntegerLiteral;
+import org.apache.asterix.lang.common.literal.MissingLiteral;
+import org.apache.asterix.lang.common.literal.NullLiteral;
+import org.apache.asterix.lang.common.literal.StringLiteral;
+import org.apache.asterix.lang.common.literal.TrueLiteral;
+import org.apache.asterix.lang.common.parser.ScopeChecker;
+import org.apache.asterix.lang.common.statement.CompactStatement;
+import org.apache.asterix.lang.common.statement.ConnectFeedStatement;
+import org.apache.asterix.lang.common.statement.CreateDataverseStatement;
+import org.apache.asterix.lang.common.statement.CreateFeedPolicyStatement;
+import org.apache.asterix.lang.common.statement.CreateFeedStatement;
+import org.apache.asterix.lang.common.statement.CreateFunctionStatement;
+import org.apache.asterix.lang.common.statement.CreateIndexStatement;
+import org.apache.asterix.lang.common.statement.CreatePrimaryFeedStatement;
+import org.apache.asterix.lang.common.statement.CreateSecondaryFeedStatement;
+import org.apache.asterix.lang.common.statement.DatasetDecl;
+import org.apache.asterix.lang.common.statement.DataverseDecl;
+import org.apache.asterix.lang.common.statement.DataverseDropStatement;
+import org.apache.asterix.lang.common.statement.DeleteStatement;
+import org.apache.asterix.lang.common.statement.DisconnectFeedStatement;
+import org.apache.asterix.lang.common.statement.DropDatasetStatement;
+import org.apache.asterix.lang.common.statement.ExternalDetailsDecl;
+import org.apache.asterix.lang.common.statement.FeedDropStatement;
+import org.apache.asterix.lang.common.statement.FeedPolicyDropStatement;
+import org.apache.asterix.lang.common.statement.FunctionDecl;
+import org.apache.asterix.lang.common.statement.FunctionDropStatement;
+import org.apache.asterix.lang.common.statement.IndexDropStatement;
+import org.apache.asterix.lang.common.statement.InsertStatement;
+import org.apache.asterix.lang.common.statement.InternalDetailsDecl;
+import org.apache.asterix.lang.common.statement.LoadStatement;
+import org.apache.asterix.lang.common.statement.NodeGroupDropStatement;
+import org.apache.asterix.lang.common.statement.NodegroupDecl;
+import org.apache.asterix.lang.common.statement.Query;
+import org.apache.asterix.lang.common.statement.RefreshExternalDatasetStatement;
+import org.apache.asterix.lang.common.statement.RunStatement;
+import org.apache.asterix.lang.common.statement.SetStatement;
+import org.apache.asterix.lang.common.statement.TypeDecl;
+import org.apache.asterix.lang.common.statement.TypeDropStatement;
+import org.apache.asterix.lang.common.statement.UpdateStatement;
+import org.apache.asterix.lang.common.statement.UpsertStatement;
+import org.apache.asterix.lang.common.statement.WriteStatement;
+import org.apache.asterix.lang.common.struct.Identifier;
+import org.apache.asterix.lang.common.struct.QuantifiedPair;
+import org.apache.asterix.lang.common.struct.VarIdentifier;
+import org.apache.asterix.metadata.utils.MetadataConstants;
+import org.apache.hyracks.algebricks.common.utils.Pair;
+import org.apache.hyracks.algebricks.common.utils.Triple;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IExpressionAnnotation;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IndexedNLJoinExpressionAnnotation;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.xerces.util.IntStack;
+
+class BADAQLParser extends ScopeChecker implements IParser {
+
+ // optimizer hints
+ private static final String AUTO_HINT = "auto";
+ private static final String BROADCAST_JOIN_HINT = "bcast";
+ private static final String COMPOSE_VAL_FILES_HINT = "compose-val-files";
+ private static final String DATE_BETWEEN_YEARS_HINT = "date-between-years";
+ private static final String DATETIME_ADD_RAND_HOURS_HINT = "datetime-add-rand-hours";
+ private static final String DATETIME_BETWEEN_YEARS_HINT = "datetime-between-years";
+ private static final String HASH_GROUP_BY_HINT = "hash";
+ private static final String INDEXED_NESTED_LOOP_JOIN_HINT = "indexnl";
+ private static final String INMEMORY_HINT = "inmem";
+ private static final String INSERT_RAND_INT_HINT = "insert-rand-int";
+ private static final String INTERVAL_HINT = "interval";
+ private static final String LIST_HINT = "list";
+ private static final String LIST_VAL_FILE_HINT = "list-val-file";
+ private static final String RANGE_HINT = "range";
+ private static final String SKIP_SECONDARY_INDEX_SEARCH_HINT = "skip-index";
+ private static final String VAL_FILE_HINT = "val-files";
+ private static final String VAL_FILE_SAME_INDEX_HINT = "val-file-same-idx";
+ private static final String GEN_FIELDS_HINT = "gen-fields";
+ // data generator hints
+ private static final String DGEN_HINT = "dgen";
+
+ private static class IndexParams {
+ public IndexType type;
+ public int gramLength;
+
+ public IndexParams(IndexType type, int gramLength) {
+ this.type = type;
+ this.gramLength = gramLength;
+ }
+ };
+
+ private static class FunctionName {
+ public String dataverse = null;
+ public String library = null;
+ public String function = null;
+ public String hint = null;
+ }
+
+ private static String getHint(Token t) {
+ if (t.specialToken == null) {
+ return null;
+ }
+ String s = t.specialToken.image;
+ int n = s.length();
+ if (n < 2) {
+ return null;
+ }
+ return s.substring(1).trim();
+ }
+
+ private static IRecordFieldDataGen parseFieldDataGen(String hint) throws ParseException {
+ IRecordFieldDataGen rfdg = null;
+ String splits[] = hint.split(" +");
+ if (splits[0].equals(VAL_FILE_HINT)) {
+ File[] valFiles = new File[splits.length - 1];
+ for (int k=1; k<splits.length; k++) {
+ valFiles[k-1] = new File(splits[k]);
+ }
+ rfdg = new FieldValFileDataGen(valFiles);
+ } else if (splits[0].equals(VAL_FILE_SAME_INDEX_HINT)) {
+ rfdg = new FieldValFileSameIndexDataGen(new File(splits[1]), splits[2]);
+ } else if (splits[0].equals(LIST_VAL_FILE_HINT)) {
+ rfdg = new ListValFileDataGen(new File(splits[1]), Integer.parseInt(splits[2]), Integer.parseInt(splits[3]));
+ } else if (splits[0].equals(LIST_HINT)) {
+ rfdg = new ListDataGen(Integer.parseInt(splits[1]), Integer.parseInt(splits[2]));
+ } else if (splits[0].equals(INTERVAL_HINT)) {
+ FieldIntervalDataGen.ValueType vt;
+ if (splits[1].equals("int")) {
+ vt = FieldIntervalDataGen.ValueType.INT;
+ } else if (splits[1].equals("long")) {
+ vt = FieldIntervalDataGen.ValueType.LONG;
+ } else if (splits[1].equals("float")) {
+ vt = FieldIntervalDataGen.ValueType.FLOAT;
+ } else if (splits[1].equals("double")) {
+ vt = FieldIntervalDataGen.ValueType.DOUBLE;
+ } else {
+ throw new ParseException("Unknown type for interval data gen: " + splits[1]);
+ }
+ rfdg = new FieldIntervalDataGen(vt, splits[2], splits[3]);
+ } else if (splits[0].equals(INSERT_RAND_INT_HINT)) {
+ rfdg = new InsertRandIntDataGen(splits[1], splits[2]);
+ } else if (splits[0].equals(DATE_BETWEEN_YEARS_HINT)) {
+ rfdg = new DateBetweenYearsDataGen(Integer.parseInt(splits[1]), Integer.parseInt(splits[2]));
+ } else if (splits[0].equals(DATETIME_BETWEEN_YEARS_HINT)) {
+ rfdg = new DatetimeBetweenYearsDataGen(Integer.parseInt(splits[1]), Integer.parseInt(splits[2]));
+ } else if (splits[0].equals(DATETIME_ADD_RAND_HOURS_HINT)) {
+ rfdg = new DatetimeAddRandHoursDataGen(Integer.parseInt(splits[1]), Integer.parseInt(splits[2]), splits[3]);
+ } else if (splits[0].equals(AUTO_HINT)) {
+ rfdg = new AutoDataGen(splits[1]);
+ }
+ return rfdg;
+ }
+
+ public BADAQLParser(String s){
+ this(new StringReader(s));
+ super.setInput(s);
+ }
+
+ public static void main(String args[]) throws ParseException, TokenMgrError, IOException, FileNotFoundException, AsterixException {
+ File file = new File(args[0]);
+ Reader fis = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
+ BADAQLParser parser = new BADAQLParser(fis);
+ List<Statement> st = parser.parse();
+ //st.accept(new AQLPrintVisitor(), 0);
+ }
+
+ public List<Statement> parse() throws AsterixException {
+ try {
+ return Statement();
+ } catch (Error e) {
+ // this is here as the JavaCharStream that's below the lexer somtimes throws Errors that are not handled
+ // by the ANTLR-generated lexer or parser (e.g it does this for invalid backslash u + 4 hex digits escapes)
+ throw new AsterixException(new ParseException(e.getMessage()));
+ } catch (ParseException e){
+ throw new AsterixException(e.getMessage());
+ }
+ }
+}
+
+PARSER_END(BADAQLParser)
+
+
+LimitClause LimitClause() throws ParseException:
+{
+ LimitClause lc = new LimitClause();
+ Expression expr;
+ pushForbiddenScope(getCurrentScope());
+}
+{
+ <LIMIT> expr = Expression() { lc.setLimitExpr(expr); }
+ (<OFFSET> expr = Expression() { lc.setOffset(expr); })?
+
+ {
+ popForbiddenScope();
+ return lc;
+ }
+}
+
+String StringLiteral() throws ParseException:
+{
+}
+{
+ <STRING_LITERAL>
+ {
+ return removeQuotesAndEscapes(token.image);
+ }
+}
+
+RefreshExternalDatasetStatement RefreshExternalDatasetStatement() throws ParseException:
+{
+ RefreshExternalDatasetStatement redss = new RefreshExternalDatasetStatement();
+ Pair<Identifier,Identifier> nameComponents = null;
+ String datasetName = null;
+}
+{
+ (
+ <REFRESH> <EXTERNAL> <DATASET> nameComponents = QualifiedName()
+ {
+ redss.setDataverseName(nameComponents.first);
+ redss.setDatasetName(nameComponents.second);
+ return redss;
+ }
+ )
+}
+
+Statement CompactStatement() throws ParseException:
+{
+ Pair<Identifier,Identifier> nameComponents = null;
+ Statement stmt = null;
+}
+{
+ <COMPACT> <DATASET> nameComponents = QualifiedName()
+ {
+ stmt = new CompactStatement(nameComponents.first, nameComponents.second);
+ }
+ {
+ return stmt;
+ }
+}
+
+Expression AndExpr() throws ParseException:
+{
+ OperatorExpr op = null;
+ Expression operand = null;
+}
+{
+ operand = RelExpr()
+ (
+
+ <AND>
+ {
+ if (op == null) {
+ op = new OperatorExpr();
+ op.addOperand(operand);
+ op.setCurrentop(true);
+ }
+ try{
+ op.addOperator(token.image);
+ } catch (AsterixException e){
+ throw new ParseException(e.getMessage());
+ }
+ }
+
+ operand = RelExpr()
+ {
+ op.addOperand(operand);
+ }
+
+ )*
+
+ {
+ return op==null? operand: op;
+ }
+}
+
+TypeDecl TypeSpecification(String hint, boolean dgen) throws ParseException:
+{
+ Pair<Identifier,Identifier> nameComponents = null;
+ boolean ifNotExists = false;
+ TypeExpression typeExpr = null;
+}
+{
+ <TYPE> nameComponents = TypeName() ifNotExists = IfNotExists()
+ <AS> typeExpr = TypeExpr()
+ {
+ long numValues = -1;
+ String filename = null;
+ if (dgen) {
+ String splits[] = hint.split(" +");
+ if (splits.length != 3) {
+ throw new ParseException("Expecting /*+ dgen <filename> <numberOfItems> */");
+ }
+ filename = splits[1];
+ numValues = Long.parseLong(splits[2]);
+ }
+ TypeDataGen tddg = new TypeDataGen(dgen, filename, numValues);
+ return new TypeDecl(nameComponents.first, nameComponents.second, typeExpr, tddg, ifNotExists);
+ }
+}
+
+TOKEN_MGR_DECLS:
+{
+ public int commentDepth = 0;
+ public IntStack lexerStateStack = new IntStack();
+
+ public void pushState() {
+ lexerStateStack.push( curLexState );
+ }
+
+ public void popState(String token) {
+ if (lexerStateStack.size() > 0) {
+ SwitchTo( lexerStateStack.pop() );
+ } else {
+ int errorLine = input_stream.getEndLine();
+ int errorColumn = input_stream.getEndColumn();
+ String msg = "Lexical error at line " + errorLine + ", column " + errorColumn + ". Encountered \"" + token
+ + "\" but state stack is empty.";
+ throw new TokenMgrError(msg, -1);
+ }
+ }
+}
+
+Statement WriteStatement() throws ParseException:
+{
+ String nodeName = null;
+ String fileName = null;
+ Query query;
+ String writerClass = null;
+ Pair<Identifier,Identifier> nameComponents = null;
+}
+{
+ <WRITE> <OUTPUT> <TO> nodeName = Identifier() <COLON> fileName = StringLiteral()
+ ( <USING> writerClass = StringLiteral() )?
+ {
+ return new WriteStatement(new Identifier(nodeName), fileName, writerClass);
+ }
+}
+
+Pair<Integer, Pair<List<String>, TypeExpression>>OpenField() throws ParseException:
+{
+ TypeExpression fieldType = null;
+ Pair<Integer, List<String>> fieldList = null;
+}
+{
+ fieldList = NestedField()
+ ( <COLON> fieldType = IndexedTypeExpr() <QUES>)?
+ {
+ return new Pair<Integer, Pair<List<String>, TypeExpression>>
+ (fieldList.first, new Pair<List<String>, TypeExpression>(fieldList.second, fieldType));
+ }
+}
+
+boolean IfExists() throws ParseException:
+{
+}
+{
+ (
+ LOOKAHEAD(1)
+ <IF> <EXISTS>
+ {
+ return true;
+ }
+ )?
+ {
+ return false;
+ }
+}
+
+Expression Index() throws ParseException:
+{
+ Expression expr = null;
+}
+{
+ <LEFTBRACKET> ( expr = Expression()
+ {
+ if(expr.getKind() == Expression.Kind.LITERAL_EXPRESSION)
+ {
+ Literal lit = ((LiteralExpr)expr).getValue();
+ if(lit.getLiteralType() != Literal.Type.INTEGER &&
+ lit.getLiteralType() != Literal.Type.LONG) {
+ throw new ParseException("Index should be an INTEGER");
+ }
+ }
+ }
+
+ | <QUES> // ANY
+
+ )
+
+ <RIGHTBRACKET>
+ {
+ return expr;
+ }
+}
+
+IndexParams IndexType() throws ParseException:
+{
+ IndexType type = null;
+ int gramLength = 0;
+}
+{
+ (
+ <BTREE>
+ {
+ type = IndexType.BTREE;
+ }
+ |<RTREE>
+ {
+ type = IndexType.RTREE;
+ }
+ |<KEYWORD>
+ {
+ type = IndexType.LENGTH_PARTITIONED_WORD_INVIX;
+ }
+ |<NGRAM> <LEFTPAREN> <INTEGER_LITERAL>
+ {
+ type = IndexType.LENGTH_PARTITIONED_NGRAM_INVIX;
+ gramLength = Integer.valueOf(token.image);
+ }
+ <RIGHTPAREN>
+ )
+ {
+ return new IndexParams(type, gramLength);
+ }
+}
+
+CreateBrokerStatement BrokerSpecification() throws ParseException:
+{
+ CreateBrokerStatement cbs = null;
+ Pair<Identifier,Identifier> name = null;
+ String endPoint = null;
+}
+{
+ (
+ <BROKER> name = QualifiedName()
+ <AT> endPoint = StringLiteral()
+ {
+ cbs = new CreateBrokerStatement(name.first, name.second,endPoint);
+ }
+ )
+ {
+ return cbs;
+ }
+}
+
+FunctionDecl FunctionDeclaration() throws ParseException:
+{
+ FunctionDecl funcDecl;
+ FunctionSignature signature;
+ String functionName;
+ List<VarIdentifier> paramList = new ArrayList<VarIdentifier>();
+ Expression funcBody;
+ createNewScope();
+}
+{
+ <DECLARE> <FUNCTION> functionName = Identifier()
+ paramList = ParameterList()
+ <LEFTBRACE> funcBody = Expression() <RIGHTBRACE>
+ {
+ signature = new FunctionSignature(defaultDataverse, functionName, paramList.size());
+ getCurrentScope().addFunctionDescriptor(signature, false);
+ funcDecl = new FunctionDecl(signature, paramList, funcBody);
+ removeCurrentScope();
+ return funcDecl;
+ }
+}
+
+Triple<Identifier,Identifier,Identifier>DoubleQualifiedName() throws ParseException:
+{
+ String first = null;
+ String second = null;
+ String third = null;
+}
+{
+ first = Identifier() <DOT> second = Identifier() (<DOT> third = Identifier())?
+ {
+ Identifier id1 = null;
+ Identifier id2 = null;
+ Identifier id3 = null;
+ if (third == null) {
+ id2 = new Identifier(first);
+ id3 = new Identifier(second);
+ } else {
+ id1 = new Identifier(first);
+ id2 = new Identifier(second);
+ id3 = new Identifier(third);
+ }
+ return new Triple<Identifier,Identifier,Identifier>(id1, id2, id3);
+ }
+}
+
+Expression MultExpr() throws ParseException:
+{
+ OperatorExpr op = null;
+ Expression operand = null;
+}
+{
+ operand = ExponentExpr()
+
+ (( <MUL> | <DIV> | <MOD> | <IDIV>)
+ {
+ if (op == null) {
+ op = new OperatorExpr();
+ op.addOperand(operand);
+ op.setCurrentop(true);
+ }
+ try{
+ op.addOperator(token.image);
+ } catch (AsterixException e){
+ throw new ParseException(e.getMessage());
+ }
+ }
+ operand = ExponentExpr()
+ {
+ op.addOperand(operand);
+ }
+ )*
+
+ {
+ return op==null?operand:op;
+ }
+}
+
+InsertStatement InsertStatement() throws ParseException:
+{
+ Pair<Identifier,Identifier> nameComponents = null;
+ Pair<Integer, List<String>> returnField = new Pair<Integer, List<String>>(0, null);
+ boolean returnRecord = false;
+ Query query;
+ boolean upsert = false;
+}
+{
+ (<INSERT>|<UPSERT>{ upsert = true; }) <INTO> <DATASET> nameComponents = QualifiedName()
+ query = Query() (<RETURN> "records"{returnRecord = true;} | "returning" returnField = NestedField())?
+ {
+ query.setTopLevel(true);
+ if(upsert){
+ return new UpsertStatement(nameComponents.first, nameComponents.second, query, getVarCounter());
+ } else{
+ return new InsertStatement(nameComponents.first, nameComponents.second, query, getVarCounter(),
+ returnRecord, returnField.second);
+ }
+ }
+}
+
+Expression FunctionCallExpr() throws ParseException:
+{
+ CallExpr callExpr;
+ List<Expression> argList = new ArrayList<Expression>();
+ Expression tmp;
+ int arity = 0;
+ FunctionName funcName = null;
+ String hint = null;
+}
+{
+ funcName = FunctionName()
+ {
+ hint = funcName.hint;
+ }
+ <LEFTPAREN> (tmp = Expression()
+ {
+ argList.add(tmp);
+ arity ++;
+ }
+ (<COMMA> tmp = Expression()
+ {
+ argList.add(tmp);
+ arity++;
+ }
+ )*)? <RIGHTPAREN>
+ {
+ // TODO use funcName.library
+ String fqFunctionName = funcName.library == null ? funcName.function : funcName.library + "#" + funcName.function;
+ FunctionSignature signature
+ = lookupFunctionSignature(funcName.dataverse, fqFunctionName, arity);
+ if (signature == null) {
+ signature = new FunctionSignature(funcName.dataverse, fqFunctionName, arity);
+ }
+ callExpr = new CallExpr(signature,argList);
+ if (hint != null) {
+ if (hint.startsWith(INDEXED_NESTED_LOOP_JOIN_HINT)) {
+ callExpr.addHint(IndexedNLJoinExpressionAnnotation.INSTANCE);
+ } else if (hint.startsWith(SKIP_SECONDARY_INDEX_SEARCH_HINT)) {
+ callExpr.addHint(SkipSecondaryIndexSearchExpressionAnnotation.INSTANCE);
+ }
+ }
+ return callExpr;
+ }
+}
+
+Clause Clause() throws ParseException:
+{
+ Clause clause;
+}
+{
+ (
+ clause = ForClause()
+ | clause = LetClause()
+ | clause = WhereClause()
+ | clause = OrderbyClause()
+ | clause = GroupClause()
+ | clause = LimitClause()
+ | clause = DistinctClause()
+ )
+ {
+ return clause;
+ }
+}
+
+Pair<Integer, List<String>>NestedField() throws ParseException:
+{
+ List<String> exprList = new ArrayList<String>();
+ String lit = null;
+ int source = 0;
+}
+{
+ lit = Identifier()
+ {
+ boolean meetParens = false;
+ }
+ (
+ LOOKAHEAD(1)
+ <LEFTPAREN><RIGHTPAREN>
+ {
+ if(!lit.equals("meta")){
+ throw new ParseException("The string before () has to be \"meta\".");
+ }
+ meetParens = true;
+ source = 1;
+ }
+ )?
+ {
+ if(!meetParens){
+ exprList.add(lit);
+ }
+ }
+ (<DOT>
+ lit = Identifier()
+ {
+ exprList.add(lit);
+ }
+ )*
+ {
+ return new Pair<Integer, List<String>>(source, exprList);
+ }
+}
+
+Expression Literal() throws ParseException:
+{
+ LiteralExpr lit = new LiteralExpr();
+ String str = null;
+}
+{
+ ( str = StringLiteral()
+ {
+ lit.setValue(new StringLiteral(str));
+ }
+ | <INTEGER_LITERAL>
+ {
+ lit.setValue(new LongIntegerLiteral(new Long(token.image)));
+ }
+ | <FLOAT_LITERAL>
+ {
+ lit.setValue(new FloatLiteral(new Float(token.image)));
+ }
+ | <DOUBLE_LITERAL>
+ {
+ lit.setValue(new DoubleLiteral(new Double(token.image)));
+ }
+ | <MISSING>
+ {
+ lit.setValue(MissingLiteral.INSTANCE);
+ }
+ | <NULL>
+ {
+ lit.setValue(NullLiteral.INSTANCE);
+ }
+ | <TRUE>
+ {
+ lit.setValue(TrueLiteral.INSTANCE);
+ }
+ | <FALSE>
+ {
+ lit.setValue(FalseLiteral.INSTANCE);
+ }
+ )
+ {
+ return lit;
+ }
+}
+
+Expression OperatorExpr() throws ParseException:
+{
+ OperatorExpr op = null;
+ Expression operand = null;
+}
+{
+ operand = AndExpr()
+ (
+
+ <OR>
+ {
+ if (op == null) {
+ op = new OperatorExpr();
+ op.addOperand(operand);
+ op.setCurrentop(true);
+ }
+ try{
+ op.addOperator(token.image);
+ } catch (AsterixException e){
+ throw new ParseException(e.getMessage());
+ }
+ }
+
+ operand = AndExpr()
+ {
+ op.addOperand(operand);
+ }
+
+ )*
+
+ {
+ return op==null? operand: op;
+ }
+}
+
+Expression AddExpr() throws ParseException:
+{
+ OperatorExpr op = null;
+ Expression operand = null;
+}
+{
+ operand = MultExpr()
+
+ ( (<PLUS> | <MINUS>)
+ {
+ if (op == null) {
+ op = new OperatorExpr();
+ op.addOperand(operand);
+ op.setCurrentop(true);
+ }
+ try{
+ ((OperatorExpr)op).addOperator(token.image);
+ } catch (AsterixException e){
+ throw new ParseException(e.getMessage());
+ }
+ }
+
+ operand = MultExpr()
+ {
+ op.addOperand(operand);
+ }
+ )*
+
+ {
+ return op==null? operand: op;
+ }
+}
+
+Statement SetStatement() throws ParseException:
+{
+ String pn = null;
+ String pv = null;
+}
+{
+ <SET> pn = Identifier() pv = StringLiteral()
+ {
+ return new SetStatement(pn, pv);
+ }
+}
+
+RunStatement RunStatement() throws ParseException:
+{
+ String system = null;
+ String tmp;
+ ArrayList<String> parameters = new ArrayList<String>();
+ Pair<Identifier,Identifier> nameComponentsFrom = null;
+ Pair<Identifier,Identifier> nameComponentsTo = null;
+}
+{
+ <RUN> system = Identifier()<LEFTPAREN> ( tmp = Identifier() [<COMMA>]
+ {
+ parameters.add(tmp);
+ }
+ )*<RIGHTPAREN>
+ <FROM> <DATASET> nameComponentsFrom = QualifiedName()
+ <TO> <DATASET> nameComponentsTo = QualifiedName()
+ {
+ return new RunStatement(system, parameters, nameComponentsFrom.first, nameComponentsFrom.second, nameComponentsTo.first, nameComponentsTo.second);
+ }
+}
+
+List<Statement>Statement() throws ParseException:
+{
+ scopeStack.push(RootScopeFactory.createRootScope(this));
+ List<Statement> decls = new ArrayList<Statement>();
+ Statement stmt = null;
+}
+{
+ ( stmt = SingleStatement() (";") ?
+ {
+ decls.add(stmt);
+ }
+ )*
+ <EOF>
+ {
+ return decls;
+ }
+}
+
+String GetPolicy() throws ParseException:
+{
+ String policy = null;
+}
+{
+ <USING> <POLICY> policy = Identifier()
+ {
+ return policy;
+ }
+
+}
+
+Expression FLWOGR() throws ParseException:
+{
+ FLWOGRExpression flworg = new FLWOGRExpression();
+ List<Clause> clauseList = new ArrayList<Clause>();
+ Expression returnExpr;
+ Clause tmp;
+ createNewScope();
+}
+{
+ (tmp = ForClause() {clauseList.add(tmp);} | tmp = LetClause() {clauseList.add(tmp);})
+ (tmp = Clause() {clauseList.add(tmp);})* (<RETURN>|<SELECT>) returnExpr = Expression()
+
+ {
+ flworg.setClauseList(clauseList);
+ flworg.setReturnExpr(returnExpr);
+ removeCurrentScope();
+ return flworg;
+ }
+}
+
+DistinctClause DistinctClause() throws ParseException:
+{
+ List<Expression> exprs = new ArrayList<Expression>();
+ Expression expr;
+}
+{
+ <DISTINCT> <BY> expr = Expression()
+ {
+ exprs.add(expr);
+ }
+ (<COMMA> expr = Expression()
+ {
+ exprs.add(expr);
+ }
+ )*
+ {
+ return new DistinctClause(exprs);
+ }
+}
+
+Identifier Field() throws ParseException:
+{
+ String ident = null;
+}
+{
+ <DOT> ident = Identifier()
+ {
+ return new Identifier(ident);
+ }
+}
+
+String Identifier() throws ParseException:
+{
+ String lit = null;
+}
+{
+ ((<IDENTIFIER>)
+ {
+ return token.image;
+ }
+ | lit = StringLiteral()
+ {
+ return lit;
+ }
+ )
+}
+
+// Merged Non-terminal
+Statement SingleStatement() throws ParseException:
+{
+ Statement stmt = null;
+}
+{
+ (
+ stmt = DataverseDeclaration()
+ | stmt = FunctionDeclaration()
+ | stmt = CreateStatement()
+ | stmt = LoadStatement()
+ | stmt = DropStatement()
+ | stmt = WriteStatement()
+ | stmt = SetStatement()
+ | stmt = InsertStatement()
+ | stmt = DeleteStatement()
+ | stmt = UpdateStatement()
+ | stmt = FeedStatement()
+ | stmt = CompactStatement()
+ | stmt = Query()
+ | stmt = RefreshExternalDatasetStatement()
+ | stmt = RunStatement()
+ | stmt = ChannelSubscriptionStatement()
+ )
+ {
+ return stmt;
+ }
+}
+
+Clause LetClause() throws ParseException:
+{
+ LetClause lc = new LetClause();
+ VariableExpr varExp;
+ Expression beExp;
+ extendCurrentScope();
+}
+{
+ (<LET>|<WITH>) varExp = Variable() <ASSIGN> beExp = Expression()
+ {
+ getCurrentScope().addNewVarSymbolToScope(varExp.getVar());
+ lc.setVarExpr(varExp);
+ lc.setBindingExpr(beExp);
+ return lc;
+ }
+}
+
+ListConstructor UnorderedListConstructor() throws ParseException:
+{
+ ListConstructor expr = new ListConstructor();
+ List<Expression> exprList = null;
+ expr.setType(ListConstructor.Type.UNORDERED_LIST_CONSTRUCTOR);
+}
+{
+ <LEFTDBLBRACE> exprList = ExpressionList() <RIGHTDBLBRACE>
+ {
+ expr.setExprList(exprList);
+ return expr;
+ }
+}
+
+Expression PrimaryExpr() throws ParseException:
+{
+ Expression expr = null;
+}
+{
+ ( LOOKAHEAD(2)
+ expr = FunctionCallExpr()
+ | expr = Literal()
+ | expr = DatasetAccessExpression()
+ | expr = VariableRef()
+ {
+ if(((VariableExpr)expr).getIsNewVar() == true)
+ throw new ParseException("can't find variable " + ((VariableExpr)expr).getVar());
+ }
+ | expr = ListConstructor()
+ | expr = RecordConstructor()
+ | expr = ParenthesizedExpression()
+ )
+ {
+ return expr;
+ }
+}
+
+Expression DatasetAccessExpression() throws ParseException:
+{
+ String funcName;
+ String arg1 = null;
+ String arg2 = null;
+ Expression nameArg;
+}
+{
+ <DATASET>
+ {
+ funcName = token.image;
+ }
+ ( ( arg1 = Identifier() ( <DOT> arg2 = Identifier() )? )
+ {
+ String name = arg2 == null ? arg1 : arg1 + "." + arg2;
+ LiteralExpr ds = new LiteralExpr();
+ ds.setValue( new StringLiteral(name) );
+ nameArg = ds;
+ if(arg2 != null){
+ addDataverse(arg1.toString());
+ addDataset(name);
+ } else {
+ addDataset(defaultDataverse + "." + name);
+ }
+ }
+ | ( <LEFTPAREN> nameArg = Expression() <RIGHTPAREN> ) )
+ {
+ String dataverse = MetadataConstants.METADATA_DATAVERSE_NAME;
+ FunctionSignature signature = lookupFunctionSignature(dataverse, funcName, 1);
+ if (signature == null) {
+ signature = new FunctionSignature(dataverse, funcName, 1);
+ }
+ List<Expression> argList = new ArrayList<Expression>();
+ argList.add(nameArg);
+ return new CallExpr(signature, argList);
+ }
+}
+
+Pair<Identifier,Identifier>QualifiedName() throws ParseException:
+{
+ String first = null;
+ String second = null;
+}
+{
+ first = Identifier() (<DOT> second = Identifier())?
+ {
+ Identifier id1 = null;
+ Identifier id2 = null;
+ if (second == null) {
+ id2 = new Identifier(first);
+ } else
+ {
+ id1 = new Identifier(first);
+ id2 = new Identifier(second);
+ }
+ return new Pair<Identifier,Identifier>(id1, id2);
+ }
+}
+
+UpdateClause UpdateClause() throws ParseException:
+{
+ Expression target = null;
+ Expression value = null ;
+ InsertStatement is = null;
+ DeleteStatement ds = null;
+ UpdateStatement us = null;
+ Expression condition = null;
+ UpdateClause ifbranch = null;
+ UpdateClause elsebranch = null;
+}
+{
+ (<SET> target = Expression() <ASSIGN> value = Expression()
+ | is = InsertStatement()
+ | ds = DeleteStatement()
+ | us = UpdateStatement()
+ | <IF> <LEFTPAREN> condition = Expression() <RIGHTPAREN>
+ <THEN> ifbranch = UpdateClause()
+ [LOOKAHEAD(1) <ELSE> elsebranch = UpdateClause()]
+ {
+ return new UpdateClause(target, value, is, ds, us, condition, ifbranch, elsebranch);
+ }
+ )
+}
+
+Clause ForClause() throws ParseException:
+{
+ ForClause fc = new ForClause();
+ VariableExpr varExp;
+ VariableExpr varPos = null;
+ Expression inExp;
+ extendCurrentScope();
+}
+{
+ (<FOR>|<FROM>) varExp = Variable() (<AT> varPos = Variable())? <IN> ( inExp = Expression() )
+ {
+ fc.setVarExpr(varExp);
+ getCurrentScope().addNewVarSymbolToScope(varExp.getVar());
+ fc.setInExpr(inExp);
+ if (varPos != null) {
+ fc.setPosExpr(varPos);
+ getCurrentScope().addNewVarSymbolToScope(varPos.getVar());
+ }
+ return fc;
+ }
+}
+
+Clause OrderbyClause() throws ParseException:
+{
+ OrderbyClause oc = new OrderbyClause();
+ Expression orderbyExpr;
+ List<Expression> orderbyList = new ArrayList<Expression>();
+ List<OrderbyClause.OrderModifier> modifierList = new ArrayList<OrderbyClause.OrderModifier >();
+ int numOfOrderby = 0;
+}
+{
+ (
+ <ORDER>
+ {
+ String hint = getHint(token);
+ if (hint != null) {
+ if (hint.startsWith(INMEMORY_HINT)) {
+ String splits[] = hint.split(" +");
+ int numFrames = Integer.parseInt(splits[1]);
+ int numTuples = Integer.parseInt(splits[2]);
+ oc.setNumFrames(numFrames);
+ oc.setNumTuples(numTuples);
+ }
+ if (hint.startsWith(RANGE_HINT)) {
+ try{
+ oc.setRangeMap(RangeMapBuilder.parseHint(hint.substring(RANGE_HINT.length())));
+ } catch (AsterixException e) {
+ throw new ParseException(e.getMessage());
+ }
+ }
+ }
+ }
+ <BY> orderbyExpr = Expression()
+ {
+ orderbyList.add(orderbyExpr);
+ OrderbyClause.OrderModifier modif = OrderbyClause.OrderModifier.ASC;
+ }
+ ( (<ASC> { modif = OrderbyClause.OrderModifier.ASC; })
+ | (<DESC> { modif = OrderbyClause.OrderModifier.DESC; }))?
+ {
+ modifierList.add(modif);
+ }
+
+ (<COMMA> orderbyExpr = Expression()
+ {
+ orderbyList.add(orderbyExpr);
+ modif = OrderbyClause.OrderModifier.ASC;
+ }
+ ( (<ASC> { modif = OrderbyClause.OrderModifier.ASC; })
+ | (<DESC> { modif = OrderbyClause.OrderModifier.DESC; }))?
+ {
+ modifierList.add(modif);
+ }
+ )*
+)
+ {
+ oc.setModifierList(modifierList);
+ oc.setOrderbyList(orderbyList);
+ return oc;
+ }
+}
+
+Expression IfThenElse() throws ParseException:
+{
+ Expression condExpr;
+ Expression thenExpr;
+ Expression elseExpr;
+ IfExpr ifExpr = new IfExpr();
+}
+{
+ <IF> <LEFTPAREN> condExpr = Expression() <RIGHTPAREN> <THEN> thenExpr = Expression() <ELSE> elseExpr = Expression()
+
+ {
+ ifExpr.setCondExpr(condExpr);
+ ifExpr.setThenExpr(thenExpr);
+ ifExpr.setElseExpr(elseExpr);
+ return ifExpr;
+ }
+}
+
+void RecordField(RecordTypeDefinition recType) throws ParseException:
+{
+ String fieldName;
+ TypeExpression type = null;
+ boolean nullable = false;
+}
+{
+ fieldName = Identifier()
+ {
+ String hint = getHint(token);
+ IRecordFieldDataGen rfdg = hint != null ? parseFieldDataGen(hint) : null;
+ }
+ <COLON> type = TypeExpr() (<QUES> { nullable = true; } )?
+ {
+ recType.addField(fieldName, type, nullable, rfdg);
+ }
+}
+
+Expression UnionExpr() throws ParseException:
+{
+ UnionExpr union = null;
+ Expression operand1 = null;
+ Expression operand2 = null;
+}
+{
+ operand1 = UnaryExpr()
+ (<UNION>
+ (operand2 = UnaryExpr()) {
+ if (union == null) {
+ union = new UnionExpr();
+ union.addExpr(operand1);
+ }
+ union.addExpr(operand2);
+ } )*
+ {
+ return (union == null)? operand1: union;
+ }
+}
+
+Expression RelExpr() throws ParseException:
+{
+ OperatorExpr op = null;
+ Expression operand = null;
+ boolean broadcast = false;
+ IExpressionAnnotation annotation = null;
+}
+{
+ operand = AddExpr()
+ {
+ if (operand instanceof VariableExpr) {
+ String hint = getHint(token);
+ if (hint != null && hint.equals(BROADCAST_JOIN_HINT)) {
+ broadcast = true;
+ }
+ }
+ }
+
+ (
+ LOOKAHEAD(2)( <LT> | <GT> | <LE> | <GE> | <EQ> | <NE> |<SIMILAR>)
+ {
+ String mhint = getHint(token);
+ if (mhint != null) {
+ if (mhint.equals(INDEXED_NESTED_LOOP_JOIN_HINT)) {
+ annotation = IndexedNLJoinExpressionAnnotation.INSTANCE;
+ } else if (mhint.equals(SKIP_SECONDARY_INDEX_SEARCH_HINT)) {
+ annotation = SkipSecondaryIndexSearchExpressionAnnotation.INSTANCE;
+ }
+ }
+ if (op == null) {
+ op = new OperatorExpr();
+ op.addOperand(operand, broadcast);
+ op.setCurrentop(true);
+ broadcast = false;
+ }
+ try{
+ op.addOperator(token.image);
+ } catch (AsterixException e){
+ throw new ParseException(e.getMessage());
+ }
+ }
+
+ operand = AddExpr()
+ {
+ broadcast = false;
+ if (operand instanceof VariableExpr) {
+ String hint = getHint(token);
+ if (hint != null && hint.equals(BROADCAST_JOIN_HINT)) {
+ broadcast = true;
+ }
+ }
+ op.addOperand(operand, broadcast);
+ }
+ )?
+
+ {
+ if (annotation != null) {
+ op.addHint(annotation);
+ }
+ return op==null? operand: op;
+ }
+}
+
+String FilterField() throws ParseException:
+{
+ String filterField = null;
+}
+{
+ filterField = Identifier()
+ {
+ return filterField;
+ }
+}
+
+FunctionSignature ApplyFunction() throws ParseException:
+{
+ FunctionName functioName = null;
+ FunctionSignature funcSig = null;
+}
+{
+ <APPLY> <FUNCTION> functioName = FunctionName()
+ {
+ String fqFunctionName = functioName.library == null ? functioName.function : functioName.library + "#" + functioName.function;
+ return new FunctionSignature(functioName.dataverse, fqFunctionName, 1);
+ }
+}
+
+String CompactionPolicy() throws ParseException:
+{
+ String compactionPolicy = null;
+}
+{
+ compactionPolicy = Identifier()
+ {
+ return compactionPolicy;
+ }
+}
+
+FunctionName FunctionName() throws ParseException:
+{
+ String first = null;
+ String second = null;
+ String third = null;
+ boolean secondAfterDot = false;
+}
+{
+ first = Identifier()
+ {
+ FunctionName result = new FunctionName();
+ result.hint = getHint(token);
+ }
+ ( <DOT> second = Identifier()
+ {
+ secondAfterDot = true;
+ }
+ ( <SYMBOLHASH> third = Identifier())? | <SYMBOLHASH> second = Identifier() )?
+ {
+ if (second == null) {
+ result.dataverse = defaultDataverse;
+ result.library = null;
+ result.function = first;
+ } else if (third == null) {
+ if (secondAfterDot) {
+ result.dataverse = first;
+ result.library = null;
+ result.function = second;
+ } else {
+ result.dataverse = defaultDataverse;
+ result.library = first;
+ result.function = second;
+ }
+ } else {
+ result.dataverse = first;
+ result.library = second;
+ result.function = third;
+ }
+
+ if (result.function.equalsIgnoreCase("int")) {
+ result.function = "int64";
+ }
+ return result;
+ }
+}
+
+List<Expression>ExpressionList() throws ParseException:
+{
+ Expression expr = null;
+ List<Expression> list = null;
+ List<Expression> exprList = new ArrayList<Expression>();
+}
+{
+ (
+ expr = Expression() { exprList.add(expr); }
+ (LOOKAHEAD(1) <COMMA> list = ExpressionList() { exprList.addAll(list); })?
+ )?
+ (LOOKAHEAD(1) Comma())?
+ {
+ return exprList;
+ }
+}
+
+DeleteStatement DeleteStatement() throws ParseException:
+{
+ VariableExpr var = null;
+ Expression condition = null;
+ Pair<Identifier, Identifier> nameComponents;
+ // This is related to the new metadata lock management
+ setDataverses(new ArrayList<String>());
+ setDatasets(new ArrayList<String>());
+
+}
+{
+ <DELETE> var = Variable()
+ {
+ getCurrentScope().addNewVarSymbolToScope(var.getVar());
+ }
+ <FROM> <DATASET> nameComponents = QualifiedName()
+ (<WHERE> condition = Expression())?
+ {
+ // First we get the dataverses and datasets that we want to lock
+ List<String> dataverses = getDataverses();
+ List<String> datasets = getDatasets();
+ // we remove the pointer to the dataverses and datasets
+ setDataverses(null);
+ setDatasets(null);
+ return new DeleteStatement(var, nameComponents.first, nameComponents.second,
+ condition, getVarCounter(), dataverses, datasets);
+ }
+}
+
+Map<String,String>Properties() throws ParseException:
+{
+ Map<String,String> properties = new HashMap<String,String>();
+ Pair<String, String> property;
+}
+{
+ ( <LEFTPAREN> property = Property()
+ {
+ properties.put(property.first, property.second);
+ }
+ ( <COMMA> property = Property()
+ {
+ properties.put(property.first, property.second);
+ }
+ )* <RIGHTPAREN> )?
+ {
+ return properties;
+ }
+}
+
+Clause GroupClause() throws ParseException:
+{
+ GroupbyClause gbc = new GroupbyClause();
+ // GbyVariableExpressionPair pair = new GbyVariableExpressionPair();
+ List<GbyVariableExpressionPair> vePairList = new ArrayList<GbyVariableExpressionPair>();
+ List<GbyVariableExpressionPair> decorPairList = new ArrayList<GbyVariableExpressionPair>();
+ Map<Expression, VariableExpr> withVarMap = new HashMap<Expression, VariableExpr>();
+ VariableExpr var = null;
+ VariableExpr withVar = null;
+ Expression expr = null;
+ VariableExpr decorVar = null;
+ Expression decorExpr = null;
+}
+{
+ {
+ Scope newScope = extendCurrentScopeNoPush(true);
+ // extendCurrentScope(true);
+ }
+ <GROUP>
+ {
+ String hint = getHint(token);
+ if (hint != null && hint.equals(HASH_GROUP_BY_HINT)) {
+ gbc.setHashGroupByHint(true);
+ }
+ }
+ <BY> (LOOKAHEAD(2) var = Variable()
+ {
+ newScope.addNewVarSymbolToScope(var.getVar());
+ } <ASSIGN>)?
+ expr = Expression()
+ {
+ GbyVariableExpressionPair pair1 = new GbyVariableExpressionPair(var, expr);
+ vePairList.add(pair1);
+ }
+ (<COMMA> ( LOOKAHEAD(2) var = Variable()
+ {
+ newScope.addNewVarSymbolToScope(var.getVar());
+ } <ASSIGN>)?
+ expr = Expression()
+ {
+ GbyVariableExpressionPair pair2 = new GbyVariableExpressionPair(var, expr);
+ vePairList.add(pair2);
+ }
+ )*
+ (<DECOR> decorVar = Variable() <ASSIGN> decorExpr = Expression()
+ {
+ newScope.addNewVarSymbolToScope(decorVar.getVar());
+ GbyVariableExpressionPair pair3 = new GbyVariableExpressionPair(decorVar, decorExpr);
+ decorPairList.add(pair3);
+ }
+ (<COMMA> <DECOR> decorVar = Variable() <ASSIGN> decorExpr = Expression()
+ {
+ newScope.addNewVarSymbolToScope(decorVar.getVar());
+ GbyVariableExpressionPair pair4 = new GbyVariableExpressionPair(decorVar, decorExpr);
+ decorPairList.add(pair4);
+ }
+ )*
+ )?
+ (<WITH>|<KEEPING>) withVar = VariableRef()
+ {
+ if(withVar.getIsNewVar()==true)
+ throw new ParseException("can't find variable " + withVar.getVar());
+ withVarMap.put(withVar, withVar);
+ newScope.addNewVarSymbolToScope(withVar.getVar());
+ }
+ (<COMMA> withVar = VariableRef()
+ {
+ if(withVar.getIsNewVar()==true)
+ throw new ParseException("can't find variable " + withVar.getVar());
+ withVarMap.put(withVar, withVar);
+ newScope.addNewVarSymbolToScope(withVar.getVar());
+ })*
+ {
+ gbc.setGbyPairList(vePairList);
+ gbc.setDecorPairList(decorPairList);
+ gbc.setWithVarMap(withVarMap);
+ replaceCurrentScope(newScope);
+ return gbc;
+ }
+}
+
+OrderedListTypeDefinition OrderedListTypeDef() throws ParseException:
+{
+ TypeExpression type = null;
+}
+{
+ <LEFTBRACKET>
+ ( type = TypeExpr() )
+ <RIGHTBRACKET>
+ {
+ return new OrderedListTypeDefinition(type);
+ }
+}
+
+boolean IfNotExists() throws ParseException:
+{
+}
+{
+ (
+ LOOKAHEAD(1)
+ <IF>
+ <IDENTIFIER>
+ (
+ {
+ if(!token.image.equals("not")){
+ throw new ParseException("Expect word \"not\" at line " + token.beginLine + ", column "
+ + token.beginColumn +"!");
+ }
+ }
+ )
+ <EXISTS>
+ {
+ return true;
+ }
+ )?
+ {
+ return false;
+ }
+}
+
+Expression ListConstructor() throws ParseException:
+{
+ Expression expr = null;
+}
+{
+ (
+ expr = OrderedListConstructor() | expr = UnorderedListConstructor()
+ )
+
+ {
+ return expr;
+ }
+}
+
+LoadStatement LoadStatement() throws ParseException:
+{
+ Identifier dataverseName = null;
+ Identifier datasetName = null;
+ boolean alreadySorted = false;
+ String adapterName;
+ Map<String,String> properties;
+ Pair<Identifier,Identifier> nameComponents = null;
+}
+{
+ <LOAD> <DATASET> nameComponents = QualifiedName()
+ {
+ dataverseName = nameComponents.first;
+ datasetName = nameComponents.second;
+ }
+ <USING> adapterName = AdapterName() properties = Configuration()
+ (<PRESORTED>
+ {
+ alreadySorted = true;
+ }
+ )?
+ {
+ return new LoadStatement(dataverseName, datasetName, adapterName, properties, alreadySorted);
+ }
+}
+
+Statement ChannelSubscriptionStatement() throws ParseException:
+{
+ Statement stmt = null;
+ Pair<Identifier,Identifier> nameComponents = null;
+ List<Expression> argList = new ArrayList<Expression>();
+ Expression tmp = null;
+ String id = null;
+ String subscriptionId = null;
+ Pair<Identifier,Identifier> brokerName = null;
+}
+{
+ (
+ "subscribe" <TO> nameComponents = QualifiedName()
+ <LEFTPAREN> (tmp = Expression()
+ {
+ argList.add(tmp);
+ }
+ (<COMMA> tmp = Expression()
+ {
+ argList.add(tmp);
+ }
+ )*)? <RIGHTPAREN> <ON> brokerName = QualifiedName()
+ {
+ stmt = new ChannelSubscribeStatement(nameComponents.first, nameComponents.second, argList, getVarCounter(), brokerName.first, brokerName.second, subscriptionId);
+ }
+ | "unsubscribe" id = StringLiteral() <FROM> nameComponents = QualifiedName()
+ {
+ setDataverses(new ArrayList<String>());
+ setDatasets(new ArrayList<String>());
+ VariableExpr varExp = new VariableExpr();
+ VarIdentifier var = new VarIdentifier();
+ varExp.setVar(var);
+ var.setValue("$subscriptionPlaceholder");
+ getCurrentScope().addNewVarSymbolToScope(varExp.getVar());
+ List<String> dataverses = getDataverses();
+ List<String> datasets = getDatasets();
+ // we remove the pointer to the dataverses and datasets
+ setDataverses(null);
+ setDatasets(null);
+ stmt = new ChannelUnsubscribeStatement(varExp, nameComponents.first, nameComponents.second, id, getVarCounter(), dataverses, datasets);
+ }
+ | "change" "subscription" subscriptionId = StringLiteral() <ON> nameComponents = QualifiedName()
+ <LEFTPAREN> (tmp = Expression()
+ {
+ argList.add(tmp);
+ }
+ (<COMMA> tmp = Expression()
+ {
+ argList.add(tmp);
+ }
+ )*)? <RIGHTPAREN>
+ <TO> brokerName = QualifiedName()
+ {
+ stmt = new ChannelSubscribeStatement(nameComponents.first, nameComponents.second, argList, getVarCounter(), brokerName.first, brokerName.second, subscriptionId);
+ }
+ )
+ {
+ return stmt;
+ }
+}
+
+Expression UnaryExpr() throws ParseException:
+{
+ UnaryExpr uexpr = null;
+ Expression expr = null;
+}
+{
+ ( (<PLUS> | <MINUS>)
+ {
+ uexpr = new UnaryExpr();
+ try{
+ uexpr.setExprType(token.image);
+ } catch (AsterixException e){
+ throw new ParseException(e.getMessage());
+ }
+ }
+ )?
+
+ expr = ValueExpr()
+ {
+ if(uexpr!=null){
+ ((UnaryExpr)uexpr).setExpr(expr);
+ return uexpr;
+ }
+ else{
+ return expr;
+ }
+ }
+}
+
+Query Query() throws ParseException:
+{
+ Query query = new Query(false);
+ // we set the pointers to the dataverses and datasets lists to fill them with entities to be locked
+ setDataverses(query.getDataverses());
+ setDatasets(query.getDatasets());
+ Expression expr;
+}
+{
+ expr = Expression()
+ {
+ query.setBody(expr);
+ query.setVarCounter(getVarCounter());
+ // we remove the pointers to the locked entities before we return the query object
+ setDataverses(null);
+ setDatasets(null);
+ return query;
+ }
+}
+
+Expression ValueExpr() throws ParseException:
+{
+ Expression expr = null;
+ Identifier ident = null;
+ AbstractAccessor fa = null;
+ Expression indexExpr = null;
+}
+{
+ expr = PrimaryExpr() ( ident = Field()
+ {
+ fa = (fa == null ? new FieldAccessor(expr, ident)
+ : new FieldAccessor(fa, ident));
+ }
+ | indexExpr = Index()
+ {
+ fa = (fa == null ? new IndexAccessor(expr, indexExpr)
+ : new IndexAccessor(fa, indexExpr));
+ }
+ )*
+ {
+ return fa == null ? expr : fa;
+ }
+}
+
+TypeReferenceExpression TypeReference() throws ParseException:
+{
+ String id = null;
+}
+{
+ id = Identifier()
+ {
+ if (id.equalsIgnoreCase("int")) {
+ id = "int64";
+ }
+
+ return new TypeReferenceExpression(new Identifier(id));
+ }
+}
+
+// Merged Non-terminal
+Statement DropStatement() throws ParseException:
+{
+ String id = null;
+ Pair<Identifier,Identifier> pairId = null;
+ Triple<Identifier,Identifier,Identifier> tripleId = null;
+ FunctionSignature funcSig = null;
+ boolean ifExists = false;
+ Statement stmt = null;
+}
+{
+ <DROP>
+ (
+ <DATASET> pairId = QualifiedName() ifExists = IfExists()
+ {
+ stmt = new DropDatasetStatement(pairId.first, pairId.second, ifExists);
+ }
+ | <INDEX> tripleId = DoubleQualifiedName() ifExists = IfExists()
+ {
+ stmt = new IndexDropStatement(tripleId.first, tripleId.second, tripleId.third, ifExists);
+ }
+ | <NODEGROUP> id = Identifier() ifExists = IfExists()
+ {
+ stmt = new NodeGroupDropStatement(new Identifier(id), ifExists);
+ }
+ | <TYPE> pairId = TypeName() ifExists = IfExists()
+ {
+ stmt = new TypeDropStatement(pairId.first, pairId.second, ifExists);
+ }
+ | <DATAVERSE> id = Identifier() ifExists = IfExists()
+ {
+ stmt = new DataverseDropStatement(new Identifier(id), ifExists);
+ }
+ | <FUNCTION> funcSig = FunctionSignature() ifExists = IfExists()
+ {
+ stmt = new FunctionDropStatement(funcSig, ifExists);
+ }
+ | <FEED> pairId = QualifiedName() ifExists = IfExists()
+ {
+ stmt = new FeedDropStatement(pairId.first, pairId.second, ifExists);
+ }
+ | <INGESTION> <POLICY> pairId = QualifiedName() ifExists = IfExists()
+ {
+ stmt = new FeedPolicyDropStatement(pairId.first, pairId.second, ifExists);
+ }
+ | <CHANNEL> pairId = QualifiedName() ifExists = IfExists()
+ {
+ stmt = new ChannelDropStatement(pairId.first, pairId.second, ifExists);
+ }
+ | <BROKER> pairId = QualifiedName() ifExists = IfExists()
+ {
+ stmt = new BrokerDropStatement(pairId.first, pairId.second, ifExists);
+ }
+
+ )
+ {
+ return stmt;
+ }
+}
+
+Expression ParenthesizedExpression() throws ParseException:
+{
+ Expression expr;
+}
+{
+ <LEFTPAREN> expr = Expression() <RIGHTPAREN>
+ {
+ return expr;
+ }
+}
+
+// Merged Non-terminal
+Statement CreateStatement() throws ParseException:
+{
+ String hint = null;
+ boolean dgen = false;
+ Statement stmt = null;
+}
+{
+ <CREATE>
+ (
+ {
+ hint = getHint(token);
+ if (hint != null && hint.startsWith(DGEN_HINT)) {
+ dgen = true;
+ }
+ }
+ stmt = TypeSpecification(hint, dgen)
+ | stmt = NodegroupSpecification()
+ | stmt = DatasetSpecification()
+ | stmt = IndexSpecification()
+ | stmt = DataverseSpecification()
+ | stmt = FunctionSpecification()
+ | stmt = FeedSpecification()
+ | stmt = FeedPolicySpecification()
+ | stmt = ChannelSpecification() | stmt = BrokerSpecification()
+ )
+ {
+ return stmt;
+ }
+}
+
+QuantifiedExpression QuantifiedExpression() throws ParseException:
+{
+ QuantifiedExpression qc = new QuantifiedExpression();
+ List<QuantifiedPair> quantifiedList = new ArrayList<QuantifiedPair>();
+ Expression satisfiesExpr;
+ VariableExpr var;
+ Expression inExpr;
+ QuantifiedPair pair;
+}
+{
+ {
+ createNewScope();
+ }
+
+ ( (<SOME> { qc.setQuantifier(QuantifiedExpression.Quantifier.SOME); })
+ | (<EVERY> { qc.setQuantifier(QuantifiedExpression.Quantifier.EVERY); }))
+ var = Variable() <IN> inExpr = Expression()
+ {
+ pair = new QuantifiedPair(var, inExpr);
+ getCurrentScope().addNewVarSymbolToScope(var.getVar());
+ quantifiedList.add(pair);
+ }
+ (
+ <COMMA> var = Variable() <IN> inExpr = Expression()
+ {
+ pair = new QuantifiedPair(var, inExpr);
+ getCurrentScope().addNewVarSymbolToScope(var.getVar());
+ quantifiedList.add(pair);
+ }
+ )*
+ <SATISFIES> satisfiesExpr = Expression()
+ {
+ qc.setSatisfiesExpr(satisfiesExpr);
+ qc.setQuantifiedList(quantifiedList);
+ removeCurrentScope();
+ return qc;
+ }
+}
+
+String AdapterName() throws ParseException:
+{
+ String adapterName = null;
+}
+{
+ adapterName = Identifier()
+ {
+ return adapterName;
+ }
+}
+
+DataverseDecl DataverseDeclaration() throws ParseException:
+{
+ String dvName = null;
+}
+{
+ <USE> <DATAVERSE> dvName = Identifier()
+ {
+ defaultDataverse = dvName;
+ return new DataverseDecl(new Identifier(dvName));
+ }
+}
+
+CreateFeedStatement FeedSpecification() throws ParseException:
+{
+ Pair<Identifier,Identifier> nameComponents = null;
+ boolean ifNotExists = false;
+ String adapterName = null;
+ Map<String,String> properties = null;
+ FunctionSignature appliedFunction = null;
+ CreateFeedStatement cfs = null;
+ Pair<Identifier,Identifier> sourceNameComponents = null;
+
+}
+{
+ (
+ <SECONDARY> <FEED> nameComponents = QualifiedName() ifNotExists = IfNotExists()
+ <FROM> <FEED> sourceNameComponents = QualifiedName() (appliedFunction = ApplyFunction())?
+ {
+ cfs = new CreateSecondaryFeedStatement(nameComponents, sourceNameComponents, appliedFunction, ifNotExists);
+ }
+ |
+ (<PRIMARY>)? <FEED> nameComponents = QualifiedName() ifNotExists = IfNotExists()
+ <USING> adapterName = AdapterName() properties = Configuration() (appliedFunction = ApplyFunction())?
+ {
+ cfs = new CreatePrimaryFeedStatement(nameComponents, adapterName, properties, appliedFunction, ifNotExists);
+ }
+ )
+ {
+ return cfs;
+ }
+}
+
+FunctionSignature FunctionSignature() throws ParseException:
+{
+ FunctionName fctName = null;
+ int arity = 0;
+}
+{
+ fctName = FunctionName() <SYMBOLAT> <INTEGER_LITERAL>
+ {
+ arity = new Integer(token.image);
+ if (arity < 0 && arity != FunctionIdentifier.VARARGS) {
+ throw new ParseException(" invalid arity:" + arity);
+ }
+
+ // TODO use fctName.library
+ String fqFunctionName = fctName.library == null ? fctName.function : fctName.library + "#" + fctName.function;
+ return new FunctionSignature(fctName.dataverse, fqFunctionName, arity);
+ }
+}
+
+FieldBinding FieldBinding() throws ParseException:
+{
+ FieldBinding fb = new FieldBinding();
+ Expression left, right;
+}
+{
+ left = Expression() <COLON> right = Expression()
+ {
+ fb.setLeftExpr(left);
+ fb.setRightExpr(right);
+ return fb;
+ }
+}
+
+DatasetDecl DatasetSpecification() throws ParseException:
+{
+ Pair<Identifier,Identifier> nameComponents = null;
+ boolean ifNotExists = false;
+ Pair<Identifier,Identifier> typeComponents = null;
+ String adapterName = null;
+ Map<String,String> properties = null;
+ Map<String,String> compactionPolicyProperties = null;
+ FunctionSignature appliedFunction = null;
+ Pair<List<Integer>, List<List<String>>> primaryKeyFields = null;
+ String nodeGroupName = null;
+ Map<String,String> hints = new HashMap<String,String>();
+ DatasetDecl dsetDecl = null;
+ boolean autogenerated = false;
+ String compactionPolicy = null;
+ boolean temp = false;
+ Pair<Integer, List<String>> filterField = null;
+ Pair<Identifier,Identifier> metaTypeComponents = new Pair<Identifier, Identifier>(null, null);
+}
+{
+ (
+ <EXTERNAL> <DATASET> nameComponents = QualifiedName()
+ <LEFTPAREN> typeComponents = TypeName() <RIGHTPAREN>
+ ifNotExists = IfNotExists()
+ <USING> adapterName = AdapterName() properties = Configuration()
+ ( <ON> nodeGroupName = Identifier() )?
+ ( <HINTS> hints = Properties() )?
+ ( <USING> <COMPACTION> <POLICY> compactionPolicy = CompactionPolicy() (compactionPolicyProperties = Configuration())? )?
+ {
+ ExternalDetailsDecl edd = new ExternalDetailsDecl();
+ edd.setAdapter(adapterName);
+ edd.setProperties(properties);
+ dsetDecl = new DatasetDecl(nameComponents.first,
+ nameComponents.second,
+ typeComponents.first,
+ typeComponents.second,
+ metaTypeComponents.first,
+ metaTypeComponents.second,
+ nodeGroupName != null? new Identifier(nodeGroupName): null,
+ compactionPolicy,
+ compactionPolicyProperties,
+ hints,
+ DatasetType.EXTERNAL,
+ edd,
+ ifNotExists);
+ }
+
+ | (<INTERNAL> | <TEMPORARY> {
+ temp = token.image.toLowerCase().equals("temporary");
+ }
+ )?
+ <DATASET> nameComponents = QualifiedName()
+ <LEFTPAREN> typeComponents = TypeName() <RIGHTPAREN>
+ (
+ { String name; }
+ <WITH>
+ name = Identifier()
+ {
+ if(!name.equals("meta")){
+ throw new ParseException("We can only support one additional associated field called \"meta\".");
+ }
+ }
+ <LEFTPAREN> metaTypeComponents = TypeName() <RIGHTPAREN>
+ )?
+ ifNotExists = IfNotExists()
+ primaryKeyFields = PrimaryKey()
+ ( <AUTOGENERATED> { autogenerated = true; } )?
+ ( <ON> nodeGroupName = Identifier() )?
+ ( <HINTS> hints = Properties() )?
+ ( <USING> <COMPACTION> <POLICY> compactionPolicy = CompactionPolicy() (compactionPolicyProperties = Configuration())? )?
+ ( <WITH> <FILTER> <ON> filterField = NestedField() )?
+ {
+ if(filterField!=null && filterField.first!=0){
+ throw new ParseException("A filter field can only be a field in the main record of the dataset.");
+ }
+ InternalDetailsDecl idd = new InternalDetailsDecl(primaryKeyFields.second,
+ primaryKeyFields.first,
+ autogenerated,
+ filterField == null? null : filterField.second,
+ temp);
+ dsetDecl = new DatasetDecl(nameComponents.first,
+ nameComponents.second,
+ typeComponents.first,
+ typeComponents.second,
+ metaTypeComponents.first,
+ metaTypeComponents.second,
+ nodeGroupName != null ? new Identifier(nodeGroupName) : null,
+ compactionPolicy,
+ compactionPolicyProperties,
+ hints,
+ DatasetType.INTERNAL,
+ idd,
+ ifNotExists);
+ }
+ )
+ {
+ return dsetDecl;
+ }
+}
+
+Clause WhereClause() throws ParseException:
+{
+ WhereClause wc = new WhereClause();
+ Expression whereExpr;
+}
+{
+ <WHERE> whereExpr = Expression()
+ {
+ wc.setWhereExpr(whereExpr);
+ return wc;
+ }
+}
+
+Pair<String, String>KeyValuePair() throws ParseException:
+{
+ String key;
+ String value;
+}
+{
+ <LEFTPAREN> key = StringLiteral() <EQ> value = StringLiteral() <RIGHTPAREN>
+ {
+ return new Pair<String, String>(key, value);
+ }
+}
+
+Statement FeedStatement() throws ParseException:
+{
+ Pair<Identifier,Identifier> feedNameComponents = null;
+ Pair<Identifier,Identifier> datasetNameComponents = null;
+
+ Map<String,String> configuration = null;
+ Statement stmt = null;
+ String policy = null;
+}
+{
+ (
+ <CONNECT> <FEED> feedNameComponents = QualifiedName() <TO> <DATASET> datasetNameComponents = QualifiedName() (policy = GetPolicy())?
+ {
+ stmt = new ConnectFeedStatement(feedNameComponents, datasetNameComponents, policy, getVarCounter());
+ }
+ | <DISCONNECT> <FEED> feedNameComponents = QualifiedName() <FROM> <DATASET> datasetNameComponents = QualifiedName()
+ {
+ stmt = new DisconnectFeedStatement(feedNameComponents, datasetNameComponents);
+ }
+ )
+ {
+ return stmt;
+ }
+}
+
+CreateFeedPolicyStatement FeedPolicySpecification() throws ParseException:
+{
+ String policyName = null;
+ String basePolicyName = null;
+ String sourcePolicyFile = null;
+ String definition = null;
+ boolean ifNotExists = false;
+ Map<String,String> properties = null;
+ CreateFeedPolicyStatement cfps = null;
+}
+{
+ (
+ <INGESTION> <POLICY> policyName = Identifier() ifNotExists = IfNotExists()
+ <FROM>
+ (
+ <POLICY> basePolicyName = Identifier() properties = Configuration() ( <DEFINITION> definition = StringLiteral())?
+ {
+ cfps = new CreateFeedPolicyStatement(policyName, basePolicyName, properties, definition, ifNotExists);
+ }
+ |<PATH> sourcePolicyFile = StringLiteral() (<DEFINITION> definition = StringLiteral())?
+ {
+ cfps = new CreateFeedPolicyStatement(policyName, sourcePolicyFile, definition, ifNotExists);
+ }
+ )
+ )
+ {
+ return cfps;
+ }
+}
+
+VariableExpr VariableRef() throws ParseException:
+{
+ VariableExpr varExp = new VariableExpr();
+ VarIdentifier var = new VarIdentifier();
+}
+{
+ <VARIABLE>
+ {
+ String varName = token.image;
+ Identifier ident = lookupSymbol(varName);
+ if (isInForbiddenScopes(varName)) {
+ throw new ParseException("Inside limit clauses, it is disallowed to reference a variable having the same name as any variable bound in the same scope as the limit clause.");
+ }
+ if(ident != null) { // exist such ident
+ varExp.setIsNewVar(false);
+ varExp.setVar((VarIdentifier)ident);
+ } else {
+ varExp.setVar(var);
+ }
+ var.setValue(varName);
+ return varExp;
+ }
+}
+
+ListConstructor OrderedListConstructor() throws ParseException:
+{
+ ListConstructor expr = new ListConstructor();
+ List<Expression> exprList = null;
+ expr.setType(ListConstructor.Type.ORDERED_LIST_CONSTRUCTOR);
+}
+{
+ <LEFTBRACKET> exprList = ExpressionList() <RIGHTBRACKET>
+ {
+ expr.setExprList(exprList);
+ return expr;
+ }
+}
+
+VariableExpr Variable() throws ParseException:
+{
+ VariableExpr varExp = new VariableExpr();
+ VarIdentifier var = new VarIdentifier();
+}
+{
+ <VARIABLE>
+ {
+ Identifier ident = lookupSymbol(token.image);
+ if(ident != null) { // exist such ident
+ varExp.setIsNewVar(false);
+ }
+ varExp.setVar(var);
+ var.setValue(token.image);
+ return varExp;
+ }
+}
+
+CreateChannelStatement ChannelSpecification() throws ParseException:
+{
+ Pair<Identifier,Identifier> nameComponents = null;
+ FunctionSignature appliedFunction = null;
+ CreateChannelStatement ccs = null;
+ String fqFunctionName = null;
+ Expression period = null;
+}
+{
+ (
+ "repetitive" <CHANNEL> nameComponents = QualifiedName()
+ <USING> appliedFunction = FunctionSignature()
+ "period" period = FunctionCallExpr()
+ {
+ ccs = new CreateChannelStatement(nameComponents.first,
+ nameComponents.second, appliedFunction, period);
+ }
+ )
+ {
+ return ccs;
+ }
+}
+
+UpdateStatement UpdateStatement() throws ParseException:
+{
+ VariableExpr vars;
+ Expression target;
+ Expression condition;
+ UpdateClause uc;
+ List<UpdateClause> ucs = new ArrayList<UpdateClause>();
+}
+{
+ <UPDATE> vars = Variable() <IN> target = Expression()
+ <WHERE> condition = Expression()
+ <LEFTPAREN> (uc = UpdateClause()
+ {
+ ucs.add(uc);
+ }
+ (<COMMA> uc = UpdateClause()
+ {
+ ucs.add(uc);
+ }
+ )*) <RIGHTPAREN>
+ {
+ return new UpdateStatement(vars, target, condition, ucs);
+ }
+}
+
+RecordConstructor RecordConstructor() throws ParseException:
+{
+ RecordConstructor expr = new RecordConstructor();
+ FieldBinding tmp = null;
+ List<FieldBinding> fbList = new ArrayList<FieldBinding>();
+}
+{
+ <LEFTBRACE> (tmp = FieldBinding()
+ {
+ fbList.add(tmp);
+ }
+ (<COMMA> tmp = FieldBinding() { fbList.add(tmp); })*)? <RIGHTBRACE>
+ {
+ expr.setFbList(fbList);
+ return expr;
+ }
+}
+
+Expression ExponentExpr() throws ParseException:
+{
+ OperatorExpr op = null;
+ Expression operand = null;
+}
+{
+ operand = UnionExpr()
+
+ ( <CARET>
+ {
+ if (op == null) {
+ op = new OperatorExpr();
+ op.addOperand(operand);
+ op.setCurrentop(true);
+ }
+ try{
+ op.addOperator(token.image);
+ } catch (AsterixException e){
+ throw new ParseException(e.getMessage());
+ }
+ }
+ operand = UnionExpr()
+ {
+ op.addOperand(operand);
+ }
+ )?
+
+ {
+ return op==null?operand:op;
+ }
+}
+
+CreateFunctionStatement FunctionSpecification() throws ParseException:
+{
+ FunctionSignature signature;
+ boolean ifNotExists = false;
+ List<VarIdentifier> paramList = new ArrayList<VarIdentifier>();
+ String functionBody;
+ VarIdentifier var = null;
+ Expression functionBodyExpr;
+ Token beginPos;
+ Token endPos;
+ FunctionName fctName = null;
+
+ createNewScope();
+}
+{
+ <FUNCTION> fctName = FunctionName()
+ ifNotExists = IfNotExists()
+ paramList = ParameterList()
+ <LEFTBRACE>
+ {
+ beginPos = token;
+ }
+ functionBodyExpr = Expression() <RIGHTBRACE>
+ {
+ endPos = token;
+ functionBody = extractFragment(beginPos.beginLine, beginPos.beginColumn, endPos.beginLine, endPos.beginColumn);
+ // TODO use fctName.library
+ signature = new FunctionSignature(fctName.dataverse, fctName.function, paramList.size());
+ getCurrentScope().addFunctionDescriptor(signature, false);
+ removeCurrentScope();
+ return new CreateFunctionStatement(signature, paramList, functionBody, ifNotExists);
+ }
+}
+
+List<VarIdentifier>ParameterList() throws ParseException:
+{
+ List<VarIdentifier> paramList = new ArrayList<VarIdentifier>();
+ VarIdentifier var = null;
+}
+{
+ <LEFTPAREN> (<VARIABLE>
+ {
+ var = new VarIdentifier();
+ var.setValue(token.image);
+ paramList.add(var);
+ getCurrentScope().addNewVarSymbolToScope(var);
+ }
+ ( <COMMA> <VARIABLE>
+ {
+ var = new VarIdentifier();
+ var.setValue(token.image);
+ paramList.add(var);
+ getCurrentScope().addNewVarSymbolToScope(var);
+ }
+ )*)? <RIGHTPAREN>
+ {
+ return paramList;
+ }
+}
+
+CreateDataverseStatement DataverseSpecification() throws ParseException:
+{
+ String dvName = null;
+ boolean ifNotExists = false;
+ String format = null;
+}
+{
+ <DATAVERSE> dvName = Identifier()
+ ifNotExists = IfNotExists()
+ ( <WITH> <FORMAT> format = StringLiteral() )?
+ {
+ return new CreateDataverseStatement(new Identifier(dvName), format, ifNotExists);
+ }
+}
+
+void Comma() :
+{}
+{
+ <COMMA>
+}
+
+Pair<String, String>Property() throws ParseException:
+{
+ String key;
+ String value;
+}
+{
+ key = Identifier() <EQ> ( value = StringLiteral() | <INTEGER_LITERAL>
+ {
+ try {
+ value = "" + Long.valueOf(token.image);
+ } catch (NumberFormatException nfe) {
+ throw new ParseException("inapproriate value: " + token.image);
+ }
+ }
+ )
+ {
+ return new Pair<String, String>(key.toUpperCase(), value);
+ }
+}
+
+Expression Expression() :
+{
+ Expression expr = null;
+ Expression exprP = null;
+}
+{
+(
+
+//OperatorExpr | IfThenElse | FLWOGRExpression | QuantifiedExpression
+ expr = OperatorExpr()
+ | expr = IfThenElse()
+ | expr = FLWOGR()
+ | expr = QuantifiedExpression()
+
+
+)
+ {
+ return (exprP==null) ? expr : exprP;
+ }
+}
+
+CreateIndexStatement IndexSpecification() throws ParseException:
+{
+ CreateIndexStatement cis = new CreateIndexStatement();
+ String indexName = null;
+ boolean ifNotExists = false;
+ Pair<Identifier,Identifier> nameComponents = null;
+ Pair<Integer, Pair<List<String>, TypeExpression>> fieldPair = null;
+ IndexParams indexType = null;
+ boolean enforced = false;
+}
+{
+ <INDEX> indexName = Identifier()
+ ifNotExists = IfNotExists()
+ <ON> nameComponents = QualifiedName()
+ <LEFTPAREN> ( fieldPair = OpenField()
+ {
+ cis.addFieldExprPair(fieldPair.second);
+ cis.addFieldIndexIndicator(fieldPair.first);
+ }
+ ) (<COMMA> fieldPair = OpenField()
+ {
+ cis.addFieldExprPair(fieldPair.second);
+ cis.addFieldIndexIndicator(fieldPair.first);
+ }
+ )* <RIGHTPAREN> ( <TYPE> indexType = IndexType() )? ( <ENFORCED> { enforced = true; } )?
+ {
+ cis.setIndexName(new Identifier(indexName));
+ cis.setIfNotExists(ifNotExists);
+ cis.setDataverseName(nameComponents.first);
+ cis.setDatasetName(nameComponents.second);
+ if (indexType != null) {
+ cis.setIndexType(indexType.type);
+ cis.setGramLength(indexType.gramLength);
+ }
+ cis.setEnforced(enforced);
+ return cis;
+ }
+}
+
+RecordTypeDefinition RecordTypeDef() throws ParseException:
+{
+ RecordTypeDefinition recType = new RecordTypeDefinition();
+ RecordTypeDefinition.RecordKind recordKind = null;
+}
+{
+ ( <CLOSED>{ recordKind = RecordTypeDefinition.RecordKind.CLOSED; }
+ | <OPEN>{ recordKind = RecordTypeDefinition.RecordKind.OPEN; } )?
+ <LEFTBRACE>
+ {
+ String hint = getHint(token);
+ if (hint != null) {
+ String splits[] = hint.split(" +");
+ if (splits[0].equals(GEN_FIELDS_HINT)) {
+ if (splits.length != 5) {
+ throw new ParseException("Expecting: /*+ gen-fields <type> <min> <max> <prefix>*/");
+ }
+ if (!splits[1].equals("int")) {
+ throw new ParseException("The only supported type for gen-fields is int.");
+ }
+ UndeclaredFieldsDataGen ufdg = new UndeclaredFieldsDataGen(UndeclaredFieldsDataGen.Type.INT,
+ Integer.parseInt(splits[2]), Integer.parseInt(splits[3]), splits[4]);
+ recType.setUndeclaredFieldsDataGen(ufdg);
+ }
+ }
+
+ }
+ (
+ RecordField(recType)
+ ( <COMMA> RecordField(recType) )*
+ )?
+ <RIGHTBRACE>
+ {
+ if (recordKind == null) {
+ recordKind = RecordTypeDefinition.RecordKind.OPEN;
+ }
+ recType.setRecordKind(recordKind);
+ return recType;
+ }
+}
+
+UnorderedListTypeDefinition UnorderedListTypeDef() throws ParseException:
+{
+ TypeExpression type = null;
+}
+{
+ <LEFTDBLBRACE>
+ ( type = TypeExpr() )
+ <RIGHTDBLBRACE>
+ {
+ return new UnorderedListTypeDefinition(type);
+ }
+}
+
+TypeExpression IndexedTypeExpr() throws ParseException:
+{
+ TypeExpression typeExpr = null;
+}
+{
+ (
+ typeExpr = TypeReference()
+ | typeExpr = OrderedListTypeDef()
+ | typeExpr = UnorderedListTypeDef()
+ )
+ {
+ return typeExpr;
+ }
+}
+
+NodegroupDecl NodegroupSpecification() throws ParseException:
+{
+ String name = null;
+ String tmp = null;
+ boolean ifNotExists = false;
+ List<Identifier>ncNames = null;
+}
+{
+ <NODEGROUP> name = Identifier()
+ ifNotExists = IfNotExists() <ON> tmp = Identifier()
+ {
+ ncNames = new ArrayList<Identifier>();
+ ncNames.add(new Identifier(tmp));
+ }
+ ( <COMMA> tmp = Identifier()
+ {
+ ncNames.add(new Identifier(tmp));
+ }
+ )*
+ {
+ return new NodegroupDecl(new Identifier(name), ncNames, ifNotExists);
+ }
+}
+
+Pair<Identifier,Identifier>TypeName() throws ParseException:
+{
+ Pair<Identifier,Identifier> name = null;
+}
+{
+ name = QualifiedName()
+ {
+ if (name.first == null) {
+ name.first = new Identifier(defaultDataverse);
+ }
+ return name;
+ }
+}
+
+Pair<List<Integer>, List<List<String>>>PrimaryKey() throws ParseException:
+{
+ Pair<Integer, List<String>> tmp = null;
+ List<Integer> keyFieldSourceIndicators = new ArrayList<Integer>();
+ List<List<String>> primaryKeyFields = new ArrayList<List<String>>();
+}
+{
+ <PRIMARY> <KEY> tmp = NestedField()
+ {
+ keyFieldSourceIndicators.add(tmp.first);
+ primaryKeyFields.add(tmp.second);
+ }
+ ( <COMMA> tmp = NestedField()
+ {
+ keyFieldSourceIndicators.add(tmp.first);
+ primaryKeyFields.add(tmp.second);
+ }
+ )*
+ {
+ return new Pair<List<Integer>, List<List<String>>> (keyFieldSourceIndicators, primaryKeyFields);
+ }
+}
+
+TypeExpression TypeExpr() throws ParseException:
+{
+ TypeExpression typeExpr = null;
+}
+{
+ (
+ typeExpr = RecordTypeDef()
+ | typeExpr = TypeReference()
+ | typeExpr = OrderedListTypeDef()
+ | typeExpr = UnorderedListTypeDef()
+ )
+ {
+ return typeExpr;
+ }
+}
+
+Map<String,String>Configuration() throws ParseException:
+{
+ Map<String,String> configuration = new LinkedHashMap<String,String>();
+ Pair<String, String> keyValuePair = null;
+}
+{
+ <LEFTPAREN> ( keyValuePair = KeyValuePair()
+ {
+ configuration.put(keyValuePair.first, keyValuePair.second);
+ }
+ ( <COMMA> keyValuePair = KeyValuePair()
+ {
+ configuration.put(keyValuePair.first, keyValuePair.second);
+ }
+ )* )? <RIGHTPAREN>
+ {
+ return configuration;
+ }
+}
+< DEFAULT,IN_DBL_BRACE >
+ TOKEN [IGNORE_CASE] :
+{
+ <BROKER : "broker">
+ | <CHANNEL : "channel">
+}
+< DEFAULT,IN_DBL_BRACE >
+ TOKEN :
+{
+ <APPLY : "apply">
+ | <AS : "as">
+ | <ASC : "asc">
+ | <AT : "at">
+ | <AUTOGENERATED : "autogenerated">
+ | <BTREE : "btree">
+ | <BY : "by">
+ | <CLOSED : "closed">
+ | <COMPACT : "compact">
+ | <COMPACTION : "compaction">
+ | <CONNECT : "connect">
+ | <CREATE : "create">
+ | <DATASET : "dataset">
+ | <DATAVERSE : "dataverse">
+ | <DECLARE : "declare">
+ | <DECOR : "decor">
+ | <DEFINITION : "definition">
+ | <DELETE : "delete">
+ | <DESC : "desc">
+ | <DISCONNECT : "disconnect">
+ | <DISTINCT : "distinct">
+ | <DROP : "drop">
+ | <ELSE : "else">
+ | <ENFORCED : "enforced">
+ | <EVERY : "every">
+ | <EXISTS : "exists">
+ | <EXTERNAL : "external">
+ | <FEED : "feed">
+ | <FILTER : "filter">
+ | <FOR : "for">
+ | <FORMAT : "format">
+ | <FROM : "from">
+ | <FUNCTION : "function">
+ | <GROUP : "group">
+ | <HINTS : "hints">
+ | <IF : "if">
+ | <IN : "in">
+ | <INDEX : "index">
+ | <INGESTION : "ingestion">
+ | <INSERT : "insert">
+ | <INTERNAL : "internal">
+ | <INTO : "into">
+ | <KEY : "key">
+ | <KEYWORD : "keyword">
+ | <KEEPING : "keeping">
+ | <LET : "let">
+ | <LIMIT : "limit">
+ | <LOAD : "load">
+ | <NGRAM : "ngram">
+ | <NODEGROUP : "nodegroup">
+ | <OFFSET : "offset">
+ | <ON : "on">
+ | <OPEN : "open">
+ | <ORDER : "order">
+ | <OUTPUT : "output">
+ | <PATH : "path">
+ | <POLICY : "policy">
+ | <PRESORTED : "pre-sorted">
+ | <PRIMARY : "primary">
+ | <REFRESH : "refresh">
+ | <RETURN : "return">
+ | <RTREE : "rtree">
+ | <RUN : "run">
+ | <SATISFIES : "satisfies">
+ | <SECONDARY : "secondary">
+ | <SELECT : "select">
+ | <SET : "set">
+ | <SOME : "some">
+ | <TEMPORARY : "temporary">
+ | <THEN : "then">
+ | <TO : "to">
+ | <TYPE : "type">
+ | <UNION : "union">
+ | <UPDATE : "update">
+ | <UPSERT : "upsert">
+ | <USE : "use">
+ | <USING : "using">
+ | <WHERE : "where">
+ | <WITH : "with">
+ | <WRITE : "write">
+}
+< DEFAULT,IN_DBL_BRACE >
+ TOKEN :
+{
+ <CARET : "^">
+ | <DIV : "/">
+ | <IDIV : "idiv">
+ | <MINUS : "-">
+ | <MOD : "%">
+ | <MUL : "*">
+ | <PLUS : "+">
+
+ | <LEFTPAREN : "(">
+ | <RIGHTPAREN : ")">
+ | <LEFTBRACKET : "[">
+ | <RIGHTBRACKET : "]">
+
+ | <COLON : ":">
+ | <COMMA : ",">
+ | <DOT : ".">
+ | <QUES : "?">
+
+ | <LT : "<">
+ | <GT : ">">
+ | <LE : "<=">
+ | <GE : ">=">
+ | <EQ : "=">
+ | <NE : "!=">
+ | <SIMILAR : "~=">
+ | <ASSIGN : ":=">
+
+ | <AND : "and">
+ | <OR : "or">
+
+ | <SYMBOLAT : "@">
+ | <SYMBOLHASH : "#">
+}
+< DEFAULT,IN_DBL_BRACE >
+ TOKEN :
+{
+ <LEFTBRACE : "{"> { pushState(); } : DEFAULT
+}
+< DEFAULT >
+ TOKEN :
+{
+ <RIGHTBRACE : "}"> { popState("}"); }
+}
+< DEFAULT,IN_DBL_BRACE >
+ TOKEN :
+{
+ <LEFTDBLBRACE : "{{"> { pushState(); } : IN_DBL_BRACE
+}
+< IN_DBL_BRACE >
+ TOKEN :
+{
+ <RIGHTDBLBRACE : "}}"> { popState("}}"); }
+}
+< DEFAULT,IN_DBL_BRACE >
+ TOKEN :
+{
+ <INTEGER_LITERAL : (<DIGIT>)+ >
+}
+< DEFAULT,IN_DBL_BRACE >
+ TOKEN :
+{
+ < MISSING : "missing">
+ | <NULL : "null">
+ | <TRUE : "true">
+ | <FALSE : "false">
+}
+< DEFAULT,IN_DBL_BRACE >
+ TOKEN :
+{
+ <#DIGIT : ["0" - "9"]>
+}
+< DEFAULT,IN_DBL_BRACE >
+ TOKEN :
+{
+ < DOUBLE_LITERAL: <DIGITS>
+ | <DIGITS> ( "." <DIGITS> )?
+ | "." <DIGITS>
+ >
+ | < FLOAT_LITERAL: <DIGITS> ( "f" | "F" )
+ | <DIGITS> ( "." <DIGITS> ( "f" | "F" ) )?
+ | "." <DIGITS> ( "f" | "F" )
+ >
+ | <DIGITS : (<DIGIT>)+ >
+}
+< DEFAULT,IN_DBL_BRACE >
+ TOKEN :
+{
+ <#LETTER : ["A" - "Z", "a" - "z"]>
+ | <SPECIALCHARS : ["$", "_", "-"]>
+}
+< DEFAULT,IN_DBL_BRACE >
+ TOKEN :
+{
+ // backslash u + 4 hex digits escapes are handled in the underlying JavaCharStream
+ <STRING_LITERAL : ("\"" (
+ <EscapeQuot>
+ | <EscapeBslash>
+ | <EscapeSlash>
+ | <EscapeBspace>
+ | <EscapeFormf>
+ | <EscapeNl>
+ | <EscapeCr>
+ | <EscapeTab>
+ | ~["\"","\\"])* "\"")
+ | ("\'"(
+ <EscapeApos>
+ | <EscapeBslash>
+ | <EscapeSlash>
+ | <EscapeBspace>
+ | <EscapeFormf>
+ | <EscapeNl>
+ | <EscapeCr>
+ | <EscapeTab>
+ | ~["\'","\\"])* "\'")>
+ | < #EscapeQuot: "\\\"" >
+ | < #EscapeApos: "\\\'" >
+ | < #EscapeBslash: "\\\\" >
+ | < #EscapeSlash: "\\/" >
+ | < #EscapeBspace: "\\b" >
+ | < #EscapeFormf: "\\f" >
+ | < #EscapeNl: "\\n" >
+ | < #EscapeCr: "\\r" >
+ | < #EscapeTab: "\\t" >
+}
+< DEFAULT,IN_DBL_BRACE >
+ TOKEN :
+{
+ <IDENTIFIER : <LETTER> (<LETTER> | <DIGIT> | <SPECIALCHARS>)*>
+}
+< DEFAULT,IN_DBL_BRACE >
+ TOKEN :
+{
+ <VARIABLE : "$" <LETTER> (<LETTER> | <DIGIT> | "_")*>
+}
+< DEFAULT,IN_DBL_BRACE >
+ SKIP :
+{
+ " "
+ | "\t"
+ | "\r"
+ | "\n"
+}
+< DEFAULT,IN_DBL_BRACE >
+ SKIP :
+{
+ <"//" (~["\n"])* "\n">
+}
+< DEFAULT,IN_DBL_BRACE >
+ SKIP :
+{
+ <"//" (~["\n","\r"])* ("\n"|"\r"|"\r\n")?>
+}
+< DEFAULT,IN_DBL_BRACE >
+ SKIP :
+{
+ <"/*"> { pushState(); } : INSIDE_COMMENT
+}
+< INSIDE_COMMENT >
+ SPECIAL_TOKEN :
+{
+ <"+"(" ")*(~["*"])*>
+}
+< INSIDE_COMMENT >
+ SKIP :
+{
+ <"/*"> { pushState(); }
+}
+< INSIDE_COMMENT >
+ SKIP :
+{
+ <"*/"> { popState("*/"); }
+ | <~[]>
+}
[10/12] asterixdb-bad git commit: Initial commit
Posted by sj...@apache.org.
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/metadata/ChannelTupleTranslator.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/metadata/ChannelTupleTranslator.java b/src/main/java/org/apache/asterix/bad/metadata/ChannelTupleTranslator.java
new file mode 100644
index 0000000..122905e
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/metadata/ChannelTupleTranslator.java
@@ -0,0 +1,159 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * you may obtain a copy of the License from
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.asterix.bad.metadata;
+
+import java.io.ByteArrayInputStream;
+import java.io.DataInput;
+import java.io.DataInputStream;
+import java.io.IOException;
+
+import org.apache.asterix.common.functions.FunctionSignature;
+import org.apache.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
+import org.apache.asterix.metadata.MetadataException;
+import org.apache.asterix.metadata.entitytupletranslators.AbstractTupleTranslator;
+import org.apache.asterix.om.base.ARecord;
+import org.apache.asterix.om.base.AString;
+import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
+
+/**
+ * Translates a Channel metadata entity to an ITupleReference and vice versa.
+ */
+public class ChannelTupleTranslator extends AbstractTupleTranslator<Channel> {
+ // Field indexes of serialized Feed in a tuple.
+ // Key field.
+ public static final int CHANNEL_DATAVERSE_NAME_FIELD_INDEX = 0;
+
+ public static final int CHANNEL_NAME_FIELD_INDEX = 1;
+
+ // Payload field containing serialized feed.
+ public static final int CHANNEL_PAYLOAD_TUPLE_FIELD_INDEX = 2;
+
+ @SuppressWarnings("unchecked")
+ private ISerializerDeserializer<ARecord> recordSerDes = AqlSerializerDeserializerProvider.INSTANCE
+ .getSerializerDeserializer(BADMetadataRecordTypes.CHANNEL_RECORDTYPE);
+
+ @SuppressWarnings("unchecked")
+ public ChannelTupleTranslator(boolean getTuple) {
+ super(getTuple, BADMetadataIndexes.CHANNEL_DATASET.getFieldCount());
+ }
+
+ @Override
+ public Channel getMetadataEntityFromTuple(ITupleReference frameTuple) throws IOException {
+ byte[] serRecord = frameTuple.getFieldData(CHANNEL_PAYLOAD_TUPLE_FIELD_INDEX);
+ int recordStartOffset = frameTuple.getFieldStart(CHANNEL_PAYLOAD_TUPLE_FIELD_INDEX);
+ int recordLength = frameTuple.getFieldLength(CHANNEL_PAYLOAD_TUPLE_FIELD_INDEX);
+ ByteArrayInputStream stream = new ByteArrayInputStream(serRecord, recordStartOffset, recordLength);
+ DataInput in = new DataInputStream(stream);
+ ARecord channelRecord = recordSerDes.deserialize(in);
+ return createChannelFromARecord(channelRecord);
+ }
+
+ private Channel createChannelFromARecord(ARecord channelRecord) {
+ Channel channel = null;
+ String dataverseName = ((AString) channelRecord
+ .getValueByPos(BADMetadataRecordTypes.CHANNEL_ARECORD_DATAVERSE_NAME_FIELD_INDEX)).getStringValue();
+ String channelName = ((AString) channelRecord
+ .getValueByPos(BADMetadataRecordTypes.CHANNEL_ARECORD_CHANNEL_NAME_FIELD_INDEX)).getStringValue();
+ String subscriptionsName = ((AString) channelRecord
+ .getValueByPos(BADMetadataRecordTypes.CHANNEL_ARECORD_SUBSCRIPTIONS_NAME_FIELD_INDEX)).getStringValue();
+ String resultsName = ((AString) channelRecord
+ .getValueByPos(BADMetadataRecordTypes.CHANNEL_ARECORD_RESULTS_NAME_FIELD_INDEX)).getStringValue();
+ String fName = ((AString) channelRecord
+ .getValueByPos(BADMetadataRecordTypes.CHANNEL_ARECORD_FUNCTION_FIELD_INDEX)).getStringValue();
+ String duration = ((AString) channelRecord
+ .getValueByPos(BADMetadataRecordTypes.CHANNEL_ARECORD_DURATION_FIELD_INDEX)).getStringValue();
+
+ FunctionSignature signature = null;
+
+ String[] qnameComponents = fName.split("\\.");
+ String functionDataverse;
+ String functionName;
+ if (qnameComponents.length == 2) {
+ functionDataverse = qnameComponents[0];
+ functionName = qnameComponents[1];
+ } else {
+ functionDataverse = dataverseName;
+ functionName = qnameComponents[0];
+ }
+
+ String[] nameComponents = functionName.split("@");
+ signature = new FunctionSignature(functionDataverse, nameComponents[0], Integer.parseInt(nameComponents[1]));
+
+ channel = new Channel(dataverseName, channelName, subscriptionsName, resultsName, signature, duration);
+ return channel;
+ }
+
+ @Override
+ public ITupleReference getTupleFromMetadataEntity(Channel channel) throws IOException, MetadataException {
+ // write the key in the first fields of the tuple
+
+ tupleBuilder.reset();
+ aString.setValue(channel.getChannelId().getDataverse());
+ stringSerde.serialize(aString, tupleBuilder.getDataOutput());
+ tupleBuilder.addFieldEndOffset();
+
+ aString.setValue(channel.getChannelId().getEntityName());
+ stringSerde.serialize(aString, tupleBuilder.getDataOutput());
+ tupleBuilder.addFieldEndOffset();
+
+ recordBuilder.reset(BADMetadataRecordTypes.CHANNEL_RECORDTYPE);
+
+ // write field 0
+ fieldValue.reset();
+ aString.setValue(channel.getChannelId().getDataverse());
+ stringSerde.serialize(aString, fieldValue.getDataOutput());
+ recordBuilder.addField(BADMetadataRecordTypes.CHANNEL_ARECORD_DATAVERSE_NAME_FIELD_INDEX, fieldValue);
+
+ // write field 1
+ fieldValue.reset();
+ aString.setValue(channel.getChannelId().getEntityName());
+ stringSerde.serialize(aString, fieldValue.getDataOutput());
+ recordBuilder.addField(BADMetadataRecordTypes.CHANNEL_ARECORD_CHANNEL_NAME_FIELD_INDEX, fieldValue);
+
+ // write field 2
+ fieldValue.reset();
+ aString.setValue(channel.getSubscriptionsDataset());
+ stringSerde.serialize(aString, fieldValue.getDataOutput());
+ recordBuilder.addField(BADMetadataRecordTypes.CHANNEL_ARECORD_SUBSCRIPTIONS_NAME_FIELD_INDEX, fieldValue);
+
+ // write field 3
+ fieldValue.reset();
+ aString.setValue(channel.getResultsDatasetName());
+ stringSerde.serialize(aString, fieldValue.getDataOutput());
+ recordBuilder.addField(BADMetadataRecordTypes.CHANNEL_ARECORD_RESULTS_NAME_FIELD_INDEX, fieldValue);
+
+ // write field 4
+ fieldValue.reset();
+ aString.setValue(channel.getFunction().toString());
+ stringSerde.serialize(aString, fieldValue.getDataOutput());
+ recordBuilder.addField(BADMetadataRecordTypes.CHANNEL_ARECORD_FUNCTION_FIELD_INDEX, fieldValue);
+
+ // write field 5
+ fieldValue.reset();
+ aString.setValue(channel.getDuration());
+ stringSerde.serialize(aString, fieldValue.getDataOutput());
+ recordBuilder.addField(BADMetadataRecordTypes.CHANNEL_ARECORD_DURATION_FIELD_INDEX, fieldValue);
+
+ // write record
+ recordBuilder.write(tupleBuilder.getDataOutput(), true);
+
+ tupleBuilder.addFieldEndOffset();
+
+ tuple.reset(tupleBuilder.getFieldEndOffsets(), tupleBuilder.getByteArray());
+ return tuple;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/rules/InsertBrokerNotifierForChannelRule.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/rules/InsertBrokerNotifierForChannelRule.java b/src/main/java/org/apache/asterix/bad/rules/InsertBrokerNotifierForChannelRule.java
new file mode 100644
index 0000000..8e19fc0
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/rules/InsertBrokerNotifierForChannelRule.java
@@ -0,0 +1,317 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad.rules;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.asterix.active.EntityId;
+import org.apache.asterix.algebra.operators.CommitOperator;
+import org.apache.asterix.bad.BADConstants;
+import org.apache.asterix.bad.runtime.NotifyBrokerOperator;
+import org.apache.asterix.bad.runtime.NotifyBrokerPOperator;
+import org.apache.asterix.lang.common.util.FunctionUtil;
+import org.apache.asterix.metadata.declared.DatasetDataSource;
+import org.apache.asterix.om.base.AString;
+import org.apache.asterix.om.constants.AsterixConstantValue;
+import org.apache.asterix.om.functions.AsterixBuiltinFunctions;
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.commons.lang3.mutable.MutableObject;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.common.utils.Pair;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
+import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AggregateOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.DataSourceScanOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.DistinctOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.DistributeResultOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExtensionOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.GroupByOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.NestedTupleSourceOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
+import org.apache.hyracks.algebricks.core.algebra.plan.ALogicalPlanImpl;
+import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
+
+public class InsertBrokerNotifierForChannelRule implements IAlgebraicRewriteRule {
+
+ @Override
+ public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+ throws AlgebricksException {
+ return false;
+ }
+
+ @Override
+ public boolean rewritePost(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+ throws AlgebricksException {
+ AbstractLogicalOperator op1 = (AbstractLogicalOperator) opRef.getValue();
+ if (op1.getOperatorTag() != LogicalOperatorTag.DISTRIBUTE_RESULT) {
+ return false;
+ }
+ AbstractLogicalOperator op = (AbstractLogicalOperator) op1.getInputs().get(0).getValue();
+ if (op.getOperatorTag() != LogicalOperatorTag.EXTENSION_OPERATOR) {
+ return false;
+ }
+ ExtensionOperator eOp = (ExtensionOperator) op;
+ if (!(eOp.getDelegate() instanceof CommitOperator)) {
+ return false;
+ }
+ AbstractLogicalOperator descendantOp = (AbstractLogicalOperator) eOp.getInputs().get(0).getValue();
+ if (descendantOp.getOperatorTag() != LogicalOperatorTag.INSERT_DELETE_UPSERT) {
+ return false;
+ }
+ InsertDeleteUpsertOperator insertOp = (InsertDeleteUpsertOperator) descendantOp;
+ if (insertOp.getOperation() != InsertDeleteUpsertOperator.Kind.INSERT) {
+ return false;
+ }
+ DatasetDataSource dds = (DatasetDataSource) insertOp.getDataSource();
+ String datasetName = dds.getDataset().getDatasetName();
+ if (!dds.getDataset().getItemTypeDataverseName().equals("Metadata")
+ || !dds.getDataset().getItemTypeName().equals("ChannelResultsType")
+ || !datasetName.endsWith("Results")) {
+ return false;
+ }
+ String channelDataverse = dds.getDataset().getDataverseName();
+ //Now we know that we are inserting into results
+
+ String channelName = datasetName.substring(0, datasetName.length() - 7);
+ String subscriptionsName = channelName + "Subscriptions";
+ //TODO: Can we check here to see if there is a channel with such a name?
+
+ DataSourceScanOperator subscriptionsScan = (DataSourceScanOperator) findOp(op, subscriptionsName);
+ if (subscriptionsScan == null) {
+ return false;
+ }
+
+ //Now we want to make sure and set the commit to be a nonsink commit
+ ((CommitOperator) eOp.getDelegate()).setSink(false);
+
+ //Now we need to get the broker EndPoint
+ LogicalVariable brokerEndpointVar = context.newVar();
+ AbstractLogicalOperator opAboveBrokersScan = findOp(op, "brokers");
+ AssignOperator assignOp = createbrokerEndPointAssignOperator(brokerEndpointVar, opAboveBrokersScan);
+ //now brokerNameVar holds the brokerName for use farther up in the plan
+
+ //Place assignOp between the scan and the op above it
+ assignOp.getInputs().addAll(opAboveBrokersScan.getInputs());
+ opAboveBrokersScan.getInputs().clear();
+ opAboveBrokersScan.getInputs().add(new MutableObject<ILogicalOperator>(assignOp));
+ context.computeAndSetTypeEnvironmentForOperator(assignOp);
+ context.computeAndSetTypeEnvironmentForOperator(opAboveBrokersScan);
+ context.computeAndSetTypeEnvironmentForOperator(eOp);
+
+ //get subscriptionIdVar
+ LogicalVariable subscriptionIdVar = subscriptionsScan.getVariables().get(0);
+
+ //The channelExecutionTime is created just before the scan
+ LogicalVariable channelExecutionVar = ((AssignOperator) subscriptionsScan.getInputs().get(0).getValue())
+ .getVariables().get(0);
+
+ ProjectOperator badProject = (ProjectOperator) findOp(op, "project");
+ badProject.getVariables().add(subscriptionIdVar);
+ badProject.getVariables().add(brokerEndpointVar);
+ badProject.getVariables().add(channelExecutionVar);
+ context.computeAndSetTypeEnvironmentForOperator(badProject);
+
+ //Create my brokerNotify plan above the extension Operator
+ ExtensionOperator dOp = createNotifyBrokerPlan(brokerEndpointVar, subscriptionIdVar, channelExecutionVar,
+ context, eOp, (DistributeResultOperator) op1, channelDataverse, channelName);
+
+ opRef.setValue(dOp);
+
+ return true;
+ }
+
+ private ExtensionOperator createNotifyBrokerPlan(LogicalVariable brokerEndpointVar,
+ LogicalVariable subscriptionIdVar, LogicalVariable channelExecutionVar, IOptimizationContext context,
+ ILogicalOperator eOp, DistributeResultOperator distributeOp, String channelDataverse, String channelName)
+ throws AlgebricksException {
+ //create the Distinct Op
+ ArrayList<Mutable<ILogicalExpression>> expressions = new ArrayList<Mutable<ILogicalExpression>>();
+ VariableReferenceExpression vExpr = new VariableReferenceExpression(subscriptionIdVar);
+ expressions.add(new MutableObject<ILogicalExpression>(vExpr));
+ DistinctOperator distinctOp = new DistinctOperator(expressions);
+
+ //create the GroupBy Op
+ //And set the distinct as input
+ List<Pair<LogicalVariable, Mutable<ILogicalExpression>>> groupByList = new ArrayList<Pair<LogicalVariable, Mutable<ILogicalExpression>>>();
+ List<Pair<LogicalVariable, Mutable<ILogicalExpression>>> groupByDecorList = new ArrayList<Pair<LogicalVariable, Mutable<ILogicalExpression>>>();
+ List<ILogicalPlan> nestedPlans = new ArrayList<ILogicalPlan>();
+
+ //create group by operator
+ GroupByOperator groupbyOp = new GroupByOperator(groupByList, groupByDecorList, nestedPlans);
+ groupbyOp.addGbyExpression(null, new VariableReferenceExpression(brokerEndpointVar));
+ groupbyOp.addGbyExpression(null, new VariableReferenceExpression(channelExecutionVar));
+ groupbyOp.getInputs().add(new MutableObject<ILogicalOperator>(distinctOp));
+
+ //create nested plan for subscription ids in group by
+ NestedTupleSourceOperator nestedTupleSourceOp = new NestedTupleSourceOperator(
+ new MutableObject<ILogicalOperator>(groupbyOp));
+ //TODO: This is from translationcontext. It might be needed to make the variable exist outside of the subplan
+ //LogicalVariable subscriptionListVar = context.newSubplanOutputVar();
+ LogicalVariable subscriptionListVar = context.newVar();
+ List<LogicalVariable> aggVars = new ArrayList<LogicalVariable>();
+ aggVars.add(subscriptionListVar);
+ AggregateFunctionCallExpression funAgg = AsterixBuiltinFunctions.makeAggregateFunctionExpression(
+ AsterixBuiltinFunctions.LISTIFY, new ArrayList<Mutable<ILogicalExpression>>());
+ funAgg.getArguments()
+ .add(new MutableObject<ILogicalExpression>(new VariableReferenceExpression(subscriptionIdVar)));
+ List<Mutable<ILogicalExpression>> aggExpressions = new ArrayList<Mutable<ILogicalExpression>>();
+ aggExpressions.add(new MutableObject<ILogicalExpression>(funAgg));
+ AggregateOperator listifyOp = new AggregateOperator(aggVars, aggExpressions);
+ listifyOp.getInputs().add(new MutableObject<ILogicalOperator>(nestedTupleSourceOp));
+
+ //add nested plans
+ nestedPlans.add(new ALogicalPlanImpl(new MutableObject<ILogicalOperator>(listifyOp)));
+
+ //Create the NotifyBrokerOperator
+ NotifyBrokerOperator notifyBrokerOp = new NotifyBrokerOperator(brokerEndpointVar, subscriptionListVar,
+ channelExecutionVar);
+ EntityId activeId = new EntityId(BADConstants.CHANNEL_EXTENSION_NAME, channelDataverse, channelName);
+ NotifyBrokerPOperator notifyBrokerPOp = new NotifyBrokerPOperator(activeId);
+ notifyBrokerOp.setPhysicalOperator(notifyBrokerPOp);
+ ExtensionOperator extensionOp = new ExtensionOperator(notifyBrokerOp);
+ extensionOp.setPhysicalOperator(notifyBrokerPOp);
+ extensionOp.getInputs().add(new MutableObject<ILogicalOperator>(groupbyOp));
+
+ //Set the input for the brokerNotify as the replicate operator
+ distinctOp.getInputs().add(new MutableObject<ILogicalOperator>(eOp));
+
+ //compute environment bottom up
+
+ context.computeAndSetTypeEnvironmentForOperator(distinctOp);
+ context.computeAndSetTypeEnvironmentForOperator(groupbyOp);
+ context.computeAndSetTypeEnvironmentForOperator(nestedTupleSourceOp);
+ context.computeAndSetTypeEnvironmentForOperator(listifyOp);
+ context.computeAndSetTypeEnvironmentForOperator(extensionOp);
+
+ return extensionOp;
+
+ }
+
+ @SuppressWarnings("unchecked")
+ private AssignOperator createbrokerEndPointAssignOperator(LogicalVariable brokerEndpointVar,
+ AbstractLogicalOperator opAboveBrokersScan) {
+ Mutable<ILogicalExpression> fieldRef = new MutableObject<ILogicalExpression>(
+ new ConstantExpression(new AsterixConstantValue(new AString(BADConstants.BrokerEndPoint))));
+ DataSourceScanOperator brokerScan = null;
+ for (Mutable<ILogicalOperator> subOp : opAboveBrokersScan.getInputs()) {
+ if (isBrokerScan((AbstractLogicalOperator) subOp.getValue())) {
+ brokerScan = (DataSourceScanOperator) subOp.getValue();
+ }
+ }
+ Mutable<ILogicalExpression> varRef = new MutableObject<ILogicalExpression>(
+ new VariableReferenceExpression(brokerScan.getVariables().get(2)));
+
+ ScalarFunctionCallExpression fieldAccessByName = new ScalarFunctionCallExpression(
+ FunctionUtil.getFunctionInfo(AsterixBuiltinFunctions.FIELD_ACCESS_BY_NAME), varRef, fieldRef);
+ ArrayList<LogicalVariable> varArray = new ArrayList<LogicalVariable>(1);
+ varArray.add(brokerEndpointVar);
+ ArrayList<Mutable<ILogicalExpression>> exprArray = new ArrayList<Mutable<ILogicalExpression>>(1);
+ exprArray.add(new MutableObject<ILogicalExpression>(fieldAccessByName));
+ return new AssignOperator(varArray, exprArray);
+ }
+
+ /*This function searches for the needed op
+ * If lookingForBrokers, find the op above the brokers scan
+ * Else find the suscbriptionsScan
+ */
+ private AbstractLogicalOperator findOp(AbstractLogicalOperator op, String lookingForString) {
+ if (!op.hasInputs()) {
+ return null;
+ }
+ for (Mutable<ILogicalOperator> subOp : op.getInputs()) {
+ if (lookingForString.equals("brokers")) {
+ if (isBrokerScan((AbstractLogicalOperator) subOp.getValue())) {
+ return op;
+ } else {
+ AbstractLogicalOperator nestedOp = findOp((AbstractLogicalOperator) subOp.getValue(),
+ lookingForString);
+ if (nestedOp != null) {
+ return nestedOp;
+ }
+ }
+
+ } else if (lookingForString.equals("project")) {
+ if (subOp.getValue().getOperatorTag() == LogicalOperatorTag.PROJECT) {
+ return (AbstractLogicalOperator) subOp.getValue();
+ } else {
+ AbstractLogicalOperator nestedOp = findOp((AbstractLogicalOperator) subOp.getValue(),
+ lookingForString);
+ if (nestedOp != null) {
+ return nestedOp;
+ }
+ }
+ }
+
+ else {
+ if (isSubscriptionsScan((AbstractLogicalOperator) subOp.getValue(), lookingForString)) {
+ return (AbstractLogicalOperator) subOp.getValue();
+ } else {
+ AbstractLogicalOperator nestedOp = findOp((AbstractLogicalOperator) subOp.getValue(),
+ lookingForString);
+ if (nestedOp != null) {
+ return nestedOp;
+ }
+ }
+
+ }
+ }
+ return null;
+ }
+
+ private boolean isBrokerScan(AbstractLogicalOperator op) {
+ if (op instanceof DataSourceScanOperator) {
+ if (((DataSourceScanOperator) op).getDataSource() instanceof DatasetDataSource) {
+ DatasetDataSource dds = (DatasetDataSource) ((DataSourceScanOperator) op).getDataSource();
+ if (dds.getDataset().getDataverseName().equals("Metadata")
+ && dds.getDataset().getDatasetName().equals("Broker")) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ private boolean isSubscriptionsScan(AbstractLogicalOperator op, String subscriptionsName) {
+ if (op instanceof DataSourceScanOperator) {
+ if (((DataSourceScanOperator) op).getDataSource() instanceof DatasetDataSource) {
+ DatasetDataSource dds = (DatasetDataSource) ((DataSourceScanOperator) op).getDataSource();
+ if (dds.getDataset().getItemTypeDataverseName().equals("Metadata")
+ && dds.getDataset().getItemTypeName().equals("ChannelSubscriptionsType")) {
+ if (dds.getDataset().getDatasetName().equals(subscriptionsName)) {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerOperator.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerOperator.java b/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerOperator.java
new file mode 100644
index 0000000..c680988
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerOperator.java
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad.runtime;
+
+import java.util.Collection;
+
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractExtensibleLogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IOperatorExtension;
+import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalExpressionReferenceTransform;
+
+/**
+ * A repetitive channel operator, which uses a Java timer to run a given query periodically
+ */
+public class NotifyBrokerOperator extends AbstractExtensibleLogicalOperator {
+ private final LogicalVariable subscriptionIdVar;
+ private final LogicalVariable brokerEndpointVar;
+ private final LogicalVariable channelExecutionVar;
+
+ public NotifyBrokerOperator(LogicalVariable brokerEndpointVar, LogicalVariable subscriptionIdVar,
+ LogicalVariable resultSetVar) {
+ this.brokerEndpointVar = brokerEndpointVar;
+ this.subscriptionIdVar = subscriptionIdVar;
+ this.channelExecutionVar = resultSetVar;
+ }
+
+ public LogicalVariable getSubscriptionVariable() {
+ return subscriptionIdVar;
+ }
+
+ public LogicalVariable getBrokerEndpointVariable() {
+ return brokerEndpointVar;
+ }
+
+ public LogicalVariable getChannelExecutionVariable() {
+ return channelExecutionVar;
+ }
+
+ @Override
+ public String toString() {
+ return "notify-brokers";
+ }
+
+ @Override
+ public boolean isMap() {
+ return false;
+ }
+
+ @Override
+ public IOperatorExtension newInstance() {
+ return new NotifyBrokerOperator(brokerEndpointVar, subscriptionIdVar, channelExecutionVar);
+ }
+
+ @Override
+ public boolean acceptExpressionTransform(ILogicalExpressionReferenceTransform transform)
+ throws AlgebricksException {
+ return false;
+ }
+
+ @Override
+ public void getUsedVariables(Collection<LogicalVariable> usedVars) {
+ usedVars.add(subscriptionIdVar);
+ usedVars.add(brokerEndpointVar);
+ usedVars.add(channelExecutionVar);
+ }
+
+ @Override
+ public void getProducedVariables(Collection<LogicalVariable> producedVars) {
+ // none produced
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerPOperator.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerPOperator.java b/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerPOperator.java
new file mode 100644
index 0000000..753ece7
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerPOperator.java
@@ -0,0 +1,111 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.bad.runtime;
+
+import org.apache.asterix.active.EntityId;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.IHyracksJobBuilder;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.base.PhysicalOperatorTag;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExtensionOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
+import org.apache.hyracks.algebricks.core.algebra.operators.physical.AbstractPhysicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.properties.IPhysicalPropertiesVector;
+import org.apache.hyracks.algebricks.core.algebra.properties.PhysicalRequirements;
+import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenContext;
+import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenHelper;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.evaluators.ColumnAccessEvalFactory;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+
+public class NotifyBrokerPOperator extends AbstractPhysicalOperator {
+
+ private final EntityId entityId;
+
+ public NotifyBrokerPOperator(EntityId entityId) {
+ this.entityId = entityId;
+ }
+
+ @Override
+ public PhysicalOperatorTag getOperatorTag() {
+ return PhysicalOperatorTag.EXTENSION_OPERATOR;
+ }
+
+ @Override
+ public String toString() {
+ return "NOTIFY_BROKERS";
+ }
+
+ @Override
+ public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
+ IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
+ return emptyUnaryRequirements();
+ }
+
+ @Override
+ public void computeDeliveredProperties(ILogicalOperator op, IOptimizationContext context)
+ throws AlgebricksException {
+ AbstractLogicalOperator op2 = (AbstractLogicalOperator) op.getInputs().get(0).getValue();
+ deliveredProperties = op2.getDeliveredPhysicalProperties().clone();
+ }
+
+ @Override
+ public void contributeRuntimeOperator(IHyracksJobBuilder builder, JobGenContext context, ILogicalOperator op,
+ IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema)
+ throws AlgebricksException {
+ ExtensionOperator notify = (ExtensionOperator) op;
+ LogicalVariable subVar = ((NotifyBrokerOperator) notify.getDelegate()).getSubscriptionVariable();
+ LogicalVariable brokerVar = ((NotifyBrokerOperator) notify.getDelegate()).getBrokerEndpointVariable();
+ LogicalVariable executionVar = ((NotifyBrokerOperator) notify.getDelegate()).getChannelExecutionVariable();
+
+ int brokerColumn = inputSchemas[0].findVariable(brokerVar);
+ int subColumn = inputSchemas[0].findVariable(subVar);
+ int executionColumn = inputSchemas[0].findVariable(executionVar);
+
+ IScalarEvaluatorFactory brokerEvalFactory = new ColumnAccessEvalFactory(brokerColumn);
+ IScalarEvaluatorFactory subEvalFactory = new ColumnAccessEvalFactory(subColumn);
+ IScalarEvaluatorFactory channelExecutionEvalFactory = new ColumnAccessEvalFactory(executionColumn);
+
+ NotifyBrokerRuntimeFactory runtime = new NotifyBrokerRuntimeFactory(brokerEvalFactory, subEvalFactory,
+ channelExecutionEvalFactory, entityId);
+
+ RecordDescriptor recDesc = JobGenHelper.mkRecordDescriptor(context.getTypeEnvironment(op), propagatedSchema,
+ context);
+
+ builder.contributeMicroOperator(op, runtime, recDesc);
+
+ // and contribute one edge from its child
+ ILogicalOperator src = op.getInputs().get(0).getValue();
+ builder.contributeGraphEdge(src, 0, notify, 0);
+ }
+
+ @Override
+ public boolean isMicroOperator() {
+ return true;
+ }
+
+ @Override
+ public boolean expensiveThanMaterialization() {
+ return false;
+ }
+}
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.java b/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.java
new file mode 100644
index 0000000..d55080c
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.java
@@ -0,0 +1,138 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.bad.runtime;
+
+import java.io.DataInputStream;
+import java.nio.ByteBuffer;
+
+import org.apache.asterix.active.ActiveManager;
+import org.apache.asterix.active.EntityId;
+import org.apache.asterix.bad.ChannelJobService;
+import org.apache.asterix.common.api.IAsterixAppRuntimeContext;
+import org.apache.asterix.dataflow.data.nontagged.serde.ADateTimeSerializerDeserializer;
+import org.apache.asterix.dataflow.data.nontagged.serde.AOrderedListSerializerDeserializer;
+import org.apache.asterix.dataflow.data.nontagged.serde.AStringSerializerDeserializer;
+import org.apache.asterix.om.base.ADateTime;
+import org.apache.asterix.om.base.AOrderedList;
+import org.apache.asterix.om.base.AString;
+import org.apache.asterix.om.types.AOrderedListType;
+import org.apache.asterix.om.types.BuiltinType;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.api.IPointable;
+import org.apache.hyracks.data.std.primitive.VoidPointable;
+import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
+import org.apache.hyracks.dataflow.common.comm.util.ByteBufferInputStream;
+import org.apache.hyracks.dataflow.common.data.accessors.FrameTupleReference;
+
+public class NotifyBrokerRuntime extends AbstractOneInputOneOutputOneFramePushRuntime {
+
+ private final ByteBufferInputStream bbis = new ByteBufferInputStream();
+ private final DataInputStream di = new DataInputStream(bbis);
+ private final AOrderedListSerializerDeserializer subSerDes = new AOrderedListSerializerDeserializer(
+ new AOrderedListType(BuiltinType.AUUID, null));
+
+ private IPointable inputArg0 = new VoidPointable();
+ private IPointable inputArg1 = new VoidPointable();
+ private IPointable inputArg2 = new VoidPointable();
+ private IScalarEvaluator eval0;
+ private IScalarEvaluator eval1;
+ private IScalarEvaluator eval2;
+ private final ActiveManager activeManager;
+ private final EntityId entityId;
+ private ChannelJobService channelJobService;
+
+ public NotifyBrokerRuntime(IHyracksTaskContext ctx, IScalarEvaluatorFactory brokerEvalFactory,
+ IScalarEvaluatorFactory subEvalFactory, IScalarEvaluatorFactory channelExecutionEvalFactory,
+ EntityId activeJobId) throws AlgebricksException {
+ this.tRef = new FrameTupleReference();
+ eval0 = brokerEvalFactory.createScalarEvaluator(ctx);
+ eval1 = subEvalFactory.createScalarEvaluator(ctx);
+ eval2 = channelExecutionEvalFactory.createScalarEvaluator(ctx);
+ this.activeManager = (ActiveManager) ((IAsterixAppRuntimeContext) ctx.getJobletContext().getApplicationContext()
+ .getApplicationObject()).getActiveManager();
+ this.entityId = activeJobId;
+ channelJobService = new ChannelJobService();
+ }
+
+ @Override
+ public void open() throws HyracksDataException {
+ return;
+ }
+
+ @Override
+ public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
+ tAccess.reset(buffer);
+ int nTuple = tAccess.getTupleCount();
+ for (int t = 0; t < nTuple; t++) {
+ tRef.reset(tAccess, t);
+ try {
+ eval0.evaluate(tRef, inputArg0);
+ eval1.evaluate(tRef, inputArg1);
+ eval2.evaluate(tRef, inputArg2);
+ } catch (AlgebricksException e) {
+ throw new HyracksDataException(e);
+ }
+ int serBrokerOffset = inputArg0.getStartOffset();
+ bbis.setByteBuffer(tRef.getFrameTupleAccessor().getBuffer(), serBrokerOffset + 1);
+ AString endpoint = AStringSerializerDeserializer.INSTANCE.deserialize(di);
+
+ int serSubOffset = inputArg1.getStartOffset();
+ bbis.setByteBuffer(tRef.getFrameTupleAccessor().getBuffer(), serSubOffset + 1);
+ AOrderedList subs = subSerDes.deserialize(di);
+
+ int resultSetOffset = inputArg2.getStartOffset();
+ bbis.setByteBuffer(tRef.getFrameTupleAccessor().getBuffer(), resultSetOffset + 1);
+ ADateTime executionTime = ADateTimeSerializerDeserializer.INSTANCE.deserialize(di);
+ String executionTimeString = executionTime.toSimpleString();
+
+ channelJobService.sendBrokerNotificationsForChannel(entityId, endpoint.getStringValue(), subs,
+ executionTimeString);
+
+ }
+
+ }
+
+ @Override
+ public void close() throws HyracksDataException {
+ return;
+ }
+
+ @Override
+ public void setInputRecordDescriptor(int index, RecordDescriptor recordDescriptor) {
+ this.inputRecordDesc = recordDescriptor;
+ this.tAccess = new FrameTupleAccessor(inputRecordDesc);
+ }
+
+ @Override
+ public void flush() throws HyracksDataException {
+ return;
+ }
+
+ @Override
+ public void fail() throws HyracksDataException {
+ failed = true;
+ }
+}
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntimeFactory.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntimeFactory.java b/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntimeFactory.java
new file mode 100644
index 0000000..d5452d4
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntimeFactory.java
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.bad.runtime;
+
+import org.apache.asterix.active.EntityId;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.runtime.base.IPushRuntime;
+import org.apache.hyracks.algebricks.runtime.base.IPushRuntimeFactory;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+
+public class NotifyBrokerRuntimeFactory implements IPushRuntimeFactory {
+
+ private static final long serialVersionUID = 1L;
+
+ private final IScalarEvaluatorFactory brokerEvalFactory;
+ private final IScalarEvaluatorFactory subEvalFactory;
+ private final IScalarEvaluatorFactory channelExecutionEvalFactory;
+ private final EntityId entityId;
+
+ public NotifyBrokerRuntimeFactory(IScalarEvaluatorFactory brokerEvalFactory, IScalarEvaluatorFactory subEvalFactory,
+ IScalarEvaluatorFactory channelExecutionEvalFactory, EntityId entityId) {
+ this.brokerEvalFactory = brokerEvalFactory;
+ this.subEvalFactory = subEvalFactory;
+ this.channelExecutionEvalFactory = channelExecutionEvalFactory;
+ this.entityId = entityId;
+ }
+
+ @Override
+ public String toString() {
+ return "notify-broker";
+ }
+
+ @Override
+ public IPushRuntime createPushRuntime(IHyracksTaskContext ctx) throws AlgebricksException {
+ return new NotifyBrokerRuntime(ctx, brokerEvalFactory, subEvalFactory, channelExecutionEvalFactory, entityId);
+ }
+}
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorDescriptor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorDescriptor.java b/src/main/java/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorDescriptor.java
new file mode 100644
index 0000000..6521ecb
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorDescriptor.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2009-2013 by The Regents of the University of California
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * you may obtain a copy of the License from
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.asterix.bad.runtime;
+
+import java.util.logging.Logger;
+
+import org.apache.asterix.active.ActiveRuntimeId;
+import org.apache.asterix.active.EntityId;
+import org.apache.asterix.bad.BADConstants;
+import org.apache.asterix.common.exceptions.AsterixException;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.IOperatorNodePushable;
+import org.apache.hyracks.api.dataflow.value.IRecordDescriptorProvider;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.api.job.JobSpecification;
+import org.apache.hyracks.dataflow.std.base.AbstractSingleActivityOperatorDescriptor;
+
+/**
+ * A repetitive channel operator, which uses a Java timer to run a given query periodically
+ */
+public class RepetitiveChannelOperatorDescriptor extends AbstractSingleActivityOperatorDescriptor {
+
+ private static final long serialVersionUID = 1L;
+
+ private static final Logger LOGGER = Logger.getLogger(RepetitiveChannelOperatorDescriptor.class.getName());
+
+ /** The unique identifier of the job. **/
+ protected final EntityId entityId;
+
+ protected final JobSpecification jobSpec;
+
+ private final String duration;
+
+ private String strIP;
+ private int port;
+
+ public RepetitiveChannelOperatorDescriptor(JobSpecification spec, String dataverseName, String channelName,
+ String duration, JobSpecification channeljobSpec, String strIP, int port) {
+ super(spec, 0, 0);
+ this.entityId = new EntityId(BADConstants.CHANNEL_EXTENSION_NAME, dataverseName, channelName);
+ this.jobSpec = channeljobSpec;
+ this.duration = duration;
+ this.strIP = strIP;
+ this.port = port;
+ }
+
+ @Override
+ public IOperatorNodePushable createPushRuntime(IHyracksTaskContext ctx,
+ IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions) throws HyracksDataException {
+ ActiveRuntimeId runtimeId = new ActiveRuntimeId(entityId,
+ RepetitiveChannelOperatorDescriptor.class.getSimpleName(), partition);
+ try {
+ return new RepetitiveChannelOperatorNodePushable(ctx, runtimeId, jobSpec, duration, strIP, port);
+ } catch (AsterixException e) {
+ throw new HyracksDataException(e);
+ }
+ }
+
+ public String getDuration() {
+ return duration;
+ }
+
+ public EntityId getEntityId() {
+ return entityId;
+ }
+
+ public JobSpecification getJobSpec() {
+ return jobSpec;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/java/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorNodePushable.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorNodePushable.java b/src/main/java/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorNodePushable.java
new file mode 100644
index 0000000..873d2e7
--- /dev/null
+++ b/src/main/java/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorNodePushable.java
@@ -0,0 +1,125 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad.runtime;
+
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
+import java.util.logging.Logger;
+
+import org.apache.asterix.active.ActiveRuntimeId;
+import org.apache.asterix.active.ActiveSourceOperatorNodePushable;
+import org.apache.asterix.bad.ChannelJobService;
+import org.apache.asterix.common.exceptions.AsterixException;
+import org.apache.hyracks.api.comm.IFrameWriter;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.api.job.JobSpecification;
+
+public class RepetitiveChannelOperatorNodePushable extends ActiveSourceOperatorNodePushable {
+
+ private static final Logger LOGGER = Logger.getLogger(RepetitiveChannelOperatorNodePushable.class.getName());
+
+ private ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);
+ private final JobSpecification jobSpec;
+ private long duration;
+ private ChannelJobService channelJobService;
+ private String strIP;
+ private int port;
+
+ public RepetitiveChannelOperatorNodePushable(IHyracksTaskContext ctx, ActiveRuntimeId runtimeId,
+ JobSpecification channeljobSpec, String duration, String strIP, int port) throws AsterixException {
+ super(ctx, runtimeId);
+ this.jobSpec = channeljobSpec;
+ this.duration = findPeriod(duration);
+ //TODO: we should share channelJobService as a single instance
+ //And only create one hcc
+ channelJobService = new ChannelJobService();
+ this.strIP = strIP;
+ this.port = port;
+ }
+
+ public void executeJob() throws Exception {
+ LOGGER.info("Executing Job: " + runtimeId.toString());
+ channelJobService.runChannelJob(jobSpec, strIP, port);
+ }
+
+ @Override
+ public void setOutputFrameWriter(int index, IFrameWriter writer, RecordDescriptor recordDesc)
+ throws HyracksDataException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ protected void start() throws HyracksDataException, InterruptedException {
+ scheduledExecutorService.scheduleAtFixedRate(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ executeJob();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }, duration, duration, TimeUnit.MILLISECONDS);
+
+ while (!scheduledExecutorService.isTerminated()) {
+
+ }
+
+ }
+
+ @Override
+ protected void abort() throws HyracksDataException, InterruptedException {
+ scheduledExecutorService.shutdown();
+ }
+
+ private long findPeriod(String duration) {
+ //TODO: Allow Repetitive Channels to use YMD durations
+ String hoursMinutesSeconds = "";
+ if (duration.indexOf('T') != -1) {
+ hoursMinutesSeconds = duration.substring(duration.indexOf('T') + 1);
+ }
+ double seconds = 0;
+ if (hoursMinutesSeconds != "") {
+ int pos = 0;
+ if (hoursMinutesSeconds.indexOf('H') != -1) {
+ Double hours = Double.parseDouble(hoursMinutesSeconds.substring(pos, hoursMinutesSeconds.indexOf('H')));
+ seconds += (hours * 60 * 60);
+ pos = hoursMinutesSeconds.indexOf('H') + 1;
+
+ }
+ if (hoursMinutesSeconds.indexOf('M') != -1) {
+ Double minutes = Double
+ .parseDouble(hoursMinutesSeconds.substring(pos, hoursMinutesSeconds.indexOf('M')));
+ seconds += (minutes * 60);
+ pos = hoursMinutesSeconds.indexOf('M') + 1;
+ }
+ if (hoursMinutesSeconds.indexOf('S') != -1) {
+ Double s = Double.parseDouble(hoursMinutesSeconds.substring(pos, hoursMinutesSeconds.indexOf('S')));
+ seconds += (s);
+ }
+
+ }
+ return (long) (seconds * 1000);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/resources/git.properties
----------------------------------------------------------------------
diff --git a/src/main/resources/git.properties b/src/main/resources/git.properties
new file mode 100644
index 0000000..44f9457
--- /dev/null
+++ b/src/main/resources/git.properties
@@ -0,0 +1,22 @@
+#Generated by Git-Commit-Id-Plugin
+#Thu Jun 02 10:54:34 PDT 2016
+git.build.user.email=sjaco002@ucr.edu
+git.build.host=Sisyphus.local
+git.dirty=false
+git.remote.origin.url=https\://github.com/apache/incubator-asterixdb/
+git.closest.tag.name=apache-asterixdb-0.8.8-incubating
+git.commit.id.describe-short=apache-asterixdb-0.8.8-incubating-2824
+git.commit.user.email=sjaco002@ucr.edu
+git.commit.time=20.05.2016 @ 12\:58\:28 PDT
+git.commit.message.full=Fixed Broker Field Names and updated tests
+git.build.version=0.8.9-SNAPSHOT
+git.commit.message.short=Fixed Broker Field Names and updated tests
+git.commit.id.abbrev=bcef8a3
+git.branch=steven/active
+git.build.user.name=Steven Glenn Jacobs
+git.closest.tag.commit.count=2824
+git.commit.id.describe=apache-asterixdb-0.8.8-incubating-2824-gbcef8a3
+git.commit.id=bcef8a3dac1dd3ee61e66c0746e137f71225f47a
+git.tags=
+git.build.time=02.06.2016 @ 10\:54\:34 PDT
+git.commit.user.name=Steven Jacobs
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/main/resources/lang-extension/lang.txt
----------------------------------------------------------------------
diff --git a/src/main/resources/lang-extension/lang.txt b/src/main/resources/lang-extension/lang.txt
new file mode 100644
index 0000000..90edb91
--- /dev/null
+++ b/src/main/resources/lang-extension/lang.txt
@@ -0,0 +1,179 @@
+import org.apache.asterix.bad.lang.statement.BrokerDropStatement;
+import org.apache.asterix.bad.lang.statement.ChannelDropStatement;
+import org.apache.asterix.bad.lang.statement.ChannelSubscribeStatement;
+import org.apache.asterix.bad.lang.statement.ChannelUnsubscribeStatement;
+import org.apache.asterix.bad.lang.statement.CreateBrokerStatement;
+import org.apache.asterix.bad.lang.statement.CreateChannelStatement;
+
+
+@merge
+Statement SingleStatement() throws ParseException:
+{
+ // merge area 1
+ before:
+ after:
+}
+{
+ (
+ // merge area 2
+ before:
+ after: | stmt = ChannelSubscriptionStatement())
+ {
+ // merge area 3
+ }
+}
+
+@merge
+Statement CreateStatement() throws ParseException:
+{
+ // merge area 1
+ before:
+ after:
+}
+{
+ (
+ // merge area 2
+ before:
+ after: | stmt = ChannelSpecification() | stmt = BrokerSpecification())
+ {
+ // merge area 3
+ }
+}
+
+@merge
+Statement DropStatement() throws ParseException:
+{
+ // merge area 1
+ before:
+ after:
+}
+{
+ (
+ // merge area 2
+ before:
+ after: | <CHANNEL> pairId = QualifiedName() ifExists = IfExists()
+ {
+ stmt = new ChannelDropStatement(pairId.first, pairId.second, ifExists);
+ }
+ | <BROKER> pairId = QualifiedName() ifExists = IfExists()
+ {
+ stmt = new BrokerDropStatement(pairId.first, pairId.second, ifExists);
+ }
+ )
+ {
+ // merge area 3
+ }
+}
+
+@new
+CreateChannelStatement ChannelSpecification() throws ParseException:
+{
+ Pair<Identifier,Identifier> nameComponents = null;
+ FunctionSignature appliedFunction = null;
+ CreateChannelStatement ccs = null;
+ String fqFunctionName = null;
+ Expression period = null;
+}
+{
+ (
+ "repetitive" <CHANNEL> nameComponents = QualifiedName()
+ <USING> appliedFunction = FunctionSignature()
+ "period" period = FunctionCallExpr()
+ {
+ ccs = new CreateChannelStatement(nameComponents.first,
+ nameComponents.second, appliedFunction, period);
+ }
+ )
+ {
+ return ccs;
+ }
+}
+
+@new
+CreateBrokerStatement BrokerSpecification() throws ParseException:
+{
+ CreateBrokerStatement cbs = null;
+ Pair<Identifier,Identifier> name = null;
+ String endPoint = null;
+}
+{
+ (
+ <BROKER> name = QualifiedName()
+ <AT> endPoint = StringLiteral()
+ {
+ cbs = new CreateBrokerStatement(name.first, name.second,endPoint);
+ }
+ )
+ {
+ return cbs;
+ }
+}
+
+@new
+Statement ChannelSubscriptionStatement() throws ParseException:
+{
+ Statement stmt = null;
+ Pair<Identifier,Identifier> nameComponents = null;
+ List<Expression> argList = new ArrayList<Expression>();
+ Expression tmp = null;
+ String id = null;
+ String subscriptionId = null;
+ Pair<Identifier,Identifier> brokerName = null;
+}
+{
+ (
+ "subscribe" <TO> nameComponents = QualifiedName()
+ <LEFTPAREN> (tmp = Expression()
+ {
+ argList.add(tmp);
+ }
+ (<COMMA> tmp = Expression()
+ {
+ argList.add(tmp);
+ }
+ )*)? <RIGHTPAREN> <ON> brokerName = QualifiedName()
+ {
+ stmt = new ChannelSubscribeStatement(nameComponents.first, nameComponents.second, argList, getVarCounter(), brokerName.first, brokerName.second, subscriptionId);
+ }
+ | "unsubscribe" id = StringLiteral() <FROM> nameComponents = QualifiedName()
+ {
+ setDataverses(new ArrayList<String>());
+ setDatasets(new ArrayList<String>());
+ VariableExpr varExp = new VariableExpr();
+ VarIdentifier var = new VarIdentifier();
+ varExp.setVar(var);
+ var.setValue("$subscriptionPlaceholder");
+ getCurrentScope().addNewVarSymbolToScope(varExp.getVar());
+ List<String> dataverses = getDataverses();
+ List<String> datasets = getDatasets();
+ // we remove the pointer to the dataverses and datasets
+ setDataverses(null);
+ setDatasets(null);
+ stmt = new ChannelUnsubscribeStatement(varExp, nameComponents.first, nameComponents.second, id, getVarCounter(), dataverses, datasets);
+ }
+ | "change" "subscription" subscriptionId = StringLiteral() <ON> nameComponents = QualifiedName()
+ <LEFTPAREN> (tmp = Expression()
+ {
+ argList.add(tmp);
+ }
+ (<COMMA> tmp = Expression()
+ {
+ argList.add(tmp);
+ }
+ )*)? <RIGHTPAREN>
+ <TO> brokerName = QualifiedName()
+ {
+ stmt = new ChannelSubscribeStatement(nameComponents.first, nameComponents.second, argList, getVarCounter(), brokerName.first, brokerName.second, subscriptionId);
+ }
+ )
+ {
+ return stmt;
+ }
+}
+
+<DEFAULT,IN_DBL_BRACE>
+TOKEN [IGNORE_CASE]:
+{
+ <BROKER : "broker">
+ | <CHANNEL : "channel">
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/java/org/apache/asterix/bad/test/BADExecutionTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/asterix/bad/test/BADExecutionTest.java b/src/test/java/org/apache/asterix/bad/test/BADExecutionTest.java
new file mode 100644
index 0000000..77e8afe
--- /dev/null
+++ b/src/test/java/org/apache/asterix/bad/test/BADExecutionTest.java
@@ -0,0 +1,98 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad.test;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.logging.Logger;
+
+import org.apache.asterix.common.config.AsterixTransactionProperties;
+import org.apache.asterix.test.aql.TestExecutor;
+import org.apache.asterix.test.runtime.ExecutionTestUtil;
+import org.apache.asterix.testframework.context.TestCaseContext;
+import org.apache.asterix.testframework.xml.TestGroup;
+import org.apache.commons.lang3.StringUtils;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+/**
+ * Runs the runtime test cases under 'src/test/resources/runtimets'.
+ */
+@RunWith(Parameterized.class)
+public class BADExecutionTest {
+
+ protected static final Logger LOGGER = Logger.getLogger(BADExecutionTest.class.getName());
+
+ protected static final String PATH_ACTUAL = "target/rttest" + File.separator;
+ protected static final String PATH_BASE = StringUtils.join(new String[] { "src", "test", "resources", "runtimets" },
+ File.separator);
+
+ protected static final String TEST_CONFIG_FILE_NAME = "src/test/resources/conf/asterix-build-configuration.xml";
+
+ protected static AsterixTransactionProperties txnProperties;
+ private static final TestExecutor testExecutor = new TestExecutor();
+ private static final boolean cleanupOnStart = true;
+ private static final boolean cleanupOnStop = true;
+
+ protected static TestGroup FailedGroup;
+
+ @BeforeClass
+ public static void setUp() throws Exception {
+ File outdir = new File(PATH_ACTUAL);
+ outdir.mkdirs();
+ ExecutionTestUtil.setUp(cleanupOnStart, TEST_CONFIG_FILE_NAME);
+ }
+
+ @AfterClass
+ public static void tearDown() throws Exception {
+ ExecutionTestUtil.tearDown(cleanupOnStop);
+ ExecutionTestUtil.integrationUtil.removeTestStorageFiles();
+ }
+
+ @Parameters(name = "BADExecutionTest {index}: {0}")
+ public static Collection<Object[]> tests() throws Exception {
+ return buildTestsInXml("testsuite.xml");
+ }
+
+ protected static Collection<Object[]> buildTestsInXml(String xmlfile) throws Exception {
+ Collection<Object[]> testArgs = new ArrayList<Object[]>();
+ TestCaseContext.Builder b = new TestCaseContext.Builder();
+ for (TestCaseContext ctx : b.build(new File(PATH_BASE), xmlfile)) {
+ testArgs.add(new Object[] { ctx });
+ }
+ return testArgs;
+
+ }
+
+ protected TestCaseContext tcCtx;
+
+ public BADExecutionTest(TestCaseContext tcCtx) {
+ this.tcCtx = tcCtx;
+ }
+
+ @Test
+ public void test() throws Exception {
+ testExecutor.executeTest(PATH_ACTUAL, tcCtx, null, false, FailedGroup);
+ }
+}
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/java/org/apache/asterix/bad/test/BADOptimizerTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/asterix/bad/test/BADOptimizerTest.java b/src/test/java/org/apache/asterix/bad/test/BADOptimizerTest.java
new file mode 100644
index 0000000..040a4e9
--- /dev/null
+++ b/src/test/java/org/apache/asterix/bad/test/BADOptimizerTest.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.bad.test;
+
+import java.io.File;
+import java.util.logging.Logger;
+
+import org.apache.asterix.common.config.GlobalConfig;
+import org.apache.asterix.external.util.ExternalDataConstants;
+import org.apache.asterix.external.util.IdentitiyResolverFactory;
+import org.apache.asterix.test.optimizer.OptimizerTest;
+import org.apache.asterix.test.runtime.HDFSCluster;
+import org.junit.BeforeClass;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+@RunWith(Parameterized.class)
+public class BADOptimizerTest extends OptimizerTest {
+
+ private static final Logger LOGGER = Logger.getLogger(BADOptimizerTest.class.getName());
+
+ @BeforeClass
+ public static void setUp() throws Exception {
+ TEST_CONFIG_FILE_NAME = "src/test/resources/conf/asterix-build-configuration.xml";
+ System.setProperty(GlobalConfig.CONFIG_FILE_PROPERTY, TEST_CONFIG_FILE_NAME);
+ final File outdir = new File(PATH_ACTUAL);
+ outdir.mkdirs();
+
+ HDFSCluster.getInstance().setup();
+
+ integrationUtil.init(true);
+ // Set the node resolver to be the identity resolver that expects node names
+ // to be node controller ids; a valid assumption in test environment.
+ System.setProperty(ExternalDataConstants.NODE_RESOLVER_FACTORY_PROPERTY,
+ IdentitiyResolverFactory.class.getName());
+ }
+
+ public BADOptimizerTest(File queryFile, File expectedFile, File actualFile) {
+ super(queryFile, expectedFile, actualFile);
+ TEST_CONFIG_FILE_NAME = "src/test/resources/conf/asterix-build-configuration.xml";
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/conf/asterix-build-configuration.xml
----------------------------------------------------------------------
diff --git a/src/test/resources/conf/asterix-build-configuration.xml b/src/test/resources/conf/asterix-build-configuration.xml
new file mode 100644
index 0000000..c2f5d41
--- /dev/null
+++ b/src/test/resources/conf/asterix-build-configuration.xml
@@ -0,0 +1,110 @@
+<!--
+ ! Licensed to the Apache Software Foundation (ASF) under one
+ ! or more contributor license agreements. See the NOTICE file
+ ! distributed with this work for additional information
+ ! regarding copyright ownership. The ASF licenses this file
+ ! to you under the Apache License, Version 2.0 (the
+ ! "License"); you may not use this file except in compliance
+ ! with the License. You may obtain a copy of the License at
+ !
+ ! http://www.apache.org/licenses/LICENSE-2.0
+ !
+ ! Unless required by applicable law or agreed to in writing,
+ ! software distributed under the License is distributed on an
+ ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ! KIND, either express or implied. See the License for the
+ ! specific language governing permissions and limitations
+ ! under the License.
+ !-->
+<asterixConfiguration xmlns="asterixconf">
+ <metadataNode>asterix_nc1</metadataNode>
+ <store>
+ <ncId>asterix_nc1</ncId>
+ <storeDirs>iodevice0,iodevice1</storeDirs>
+ </store>
+ <store>
+ <ncId>asterix_nc2</ncId>
+ <storeDirs>iodevice0,iodevice1</storeDirs>
+ </store>
+ <transactionLogDir>
+ <ncId>asterix_nc1</ncId>
+ <txnLogDirPath>target/txnLogDir/asterix_nc1</txnLogDirPath>
+ </transactionLogDir>
+ <transactionLogDir>
+ <ncId>asterix_nc2</ncId>
+ <txnLogDirPath>target/txnLogDir/asterix_nc2</txnLogDirPath>
+ </transactionLogDir>
+ <extensions>
+ <extension>
+ <extensionClassName>org.apache.asterix.bad.lang.BADQueryTranslatorExtension</extensionClassName>
+ </extension>
+ <extension>
+ <extensionClassName>org.apache.asterix.bad.lang.BADLangExtension</extensionClassName>
+ </extension>
+ <extension>
+ <extensionClassName>org.apache.asterix.bad.metadata.BADMetadataExtension</extensionClassName>
+ </extension>
+ </extensions>
+ <property>
+ <name>max.wait.active.cluster</name>
+ <value>60</value>
+ <description>Maximum wait (in seconds) for a cluster to be ACTIVE (all
+ nodes are available)
+ before a submitted query/statement can be
+ executed. (Default = 60 seconds)
+ </description>
+ </property>
+ <property>
+ <name>log.level</name>
+ <value>WARNING</value>
+ <description>Log level for running tests/build</description>
+ </property>
+ <property>
+ <name>compiler.framesize</name>
+ <value>32768</value>
+ </property>
+ <property>
+ <name>compiler.sortmemory</name>
+ <value>327680</value>
+ </property>
+ <property>
+ <name>compiler.groupmemory</name>
+ <value>163840</value>
+ </property>
+ <property>
+ <name>compiler.joinmemory</name>
+ <value>163840</value>
+ </property>
+ <property>
+ <name>compiler.pregelix.home</name>
+ <value>~/pregelix</value>
+ </property>
+ <property>
+ <name>storage.buffercache.pagesize</name>
+ <value>32768</value>
+ <description>The page size in bytes for pages in the buffer cache.
+ (Default = "32768" // 32KB)
+ </description>
+ </property>
+ <property>
+ <name>storage.buffercache.size</name>
+ <value>33554432</value>
+ <description>The size of memory allocated to the disk buffer cache.
+ The value should be a multiple of the buffer cache page size(Default
+ = "33554432" // 32MB)
+ </description>
+ </property>
+ <property>
+ <name>storage.memorycomponent.numpages</name>
+ <value>8</value>
+ <description>The number of pages to allocate for a memory component.
+ (Default = 8)
+ </description>
+ </property>
+ <property>
+ <name>plot.activate</name>
+ <value>false</value>
+ <description>Enabling plot of Algebricks plan to tmp folder. (Default = false)
+ </description>
+ </property>
+</asterixConfiguration>
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/conf/cluster.xml
----------------------------------------------------------------------
diff --git a/src/test/resources/conf/cluster.xml b/src/test/resources/conf/cluster.xml
new file mode 100644
index 0000000..8f0b694
--- /dev/null
+++ b/src/test/resources/conf/cluster.xml
@@ -0,0 +1,49 @@
+<!--
+ ! Licensed to the Apache Software Foundation (ASF) under one
+ ! or more contributor license agreements. See the NOTICE file
+ ! distributed with this work for additional information
+ ! regarding copyright ownership. The ASF licenses this file
+ ! to you under the Apache License, Version 2.0 (the
+ ! "License"); you may not use this file except in compliance
+ ! with the License. You may obtain a copy of the License at
+ !
+ ! http://www.apache.org/licenses/LICENSE-2.0
+ !
+ ! Unless required by applicable law or agreed to in writing,
+ ! software distributed under the License is distributed on an
+ ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ! KIND, either express or implied. See the License for the
+ ! specific language governing permissions and limitations
+ ! under the License.
+ !-->
+<cluster xmlns="cluster">
+ <instance_name>asterix</instance_name>
+ <store>storage</store>
+
+ <data_replication>
+ <enabled>false</enabled>
+ <replication_port>2016</replication_port>
+ <replication_factor>2</replication_factor>
+ <auto_failover>false</auto_failover>
+ <replication_time_out>30</replication_time_out>
+ </data_replication>
+
+ <master_node>
+ <id>master</id>
+ <client_ip>127.0.0.1</client_ip>
+ <cluster_ip>127.0.0.1</cluster_ip>
+ <client_port>1098</client_port>
+ <cluster_port>1099</cluster_port>
+ <http_port>8888</http_port>
+ </master_node>
+ <node>
+ <id>nc1</id>
+ <cluster_ip>127.0.0.1</cluster_ip>
+ <replication_port>2016</replication_port>
+ </node>
+ <node>
+ <id>nc2</id>
+ <cluster_ip>127.0.0.1</cluster_ip>
+ <replication_port>2017</replication_port>
+ </node>
+</cluster>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/conf/hyracks-deployment.properties
----------------------------------------------------------------------
diff --git a/src/test/resources/conf/hyracks-deployment.properties b/src/test/resources/conf/hyracks-deployment.properties
new file mode 100644
index 0000000..17a6772
--- /dev/null
+++ b/src/test/resources/conf/hyracks-deployment.properties
@@ -0,0 +1,21 @@
+#/*
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+cc.bootstrap.class=org.apache.asterix.hyracks.bootstrap.CCBootstrapImpl
+nc.bootstrap.class=org.apache.asterix.hyracks.bootstrap.NCBootstrapImpl
+cc.ip=127.0.0.1
+cc.port=1098
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/conf/test.properties
----------------------------------------------------------------------
diff --git a/src/test/resources/conf/test.properties b/src/test/resources/conf/test.properties
new file mode 100644
index 0000000..86269c8
--- /dev/null
+++ b/src/test/resources/conf/test.properties
@@ -0,0 +1,22 @@
+#/*
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+MetadataNode=nc1
+NewUniverse=true
+nc1.stores=nc1data
+nc2.stores=nc2data
+OutputDir=/tmp/asterix_output/
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/optimizerts/queries/channel/channel-create.aql
----------------------------------------------------------------------
diff --git a/src/test/resources/optimizerts/queries/channel/channel-create.aql b/src/test/resources/optimizerts/queries/channel/channel-create.aql
new file mode 100644
index 0000000..4dc9291
--- /dev/null
+++ b/src/test/resources/optimizerts/queries/channel/channel-create.aql
@@ -0,0 +1,36 @@
+/*
+ * Description : Check the Plan used by a channel
+ * Expected Res : Success
+ * Date : Mar 2015
+ */
+
+drop dataverse channels if exists;
+create dataverse channels;
+use dataverse channels;
+
+
+create type TweetMessageTypeuuid as closed {
+ tweetid: uuid,
+ sender-location: point,
+ send-time: datetime,
+ referred-topics: {{ string }},
+ message-text: string,
+ countA: int32,
+ countB: int32
+}
+
+
+create dataset TweetMessageuuids(TweetMessageTypeuuid)
+primary key tweetid autogenerated;
+
+create function NearbyTweetsContainingText($location, $text) {
+ for $tweet in dataset TweetMessageuuids
+ let $circle := create-circle($location,30.0)
+ where contains($tweet.message-text,$text)
+ and spatial-intersect($tweet.sender-location, $location)
+ return $tweet.message-text
+};
+
+write output to nc1:"rttest/channel-create.adm";
+
+create repetitive channel nearbyTweetChannel using NearbyTweetsContainingText@2 period duration("PT10M");
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/optimizerts/queries/channel/channel-subscribe.aql
----------------------------------------------------------------------
diff --git a/src/test/resources/optimizerts/queries/channel/channel-subscribe.aql b/src/test/resources/optimizerts/queries/channel/channel-subscribe.aql
new file mode 100644
index 0000000..682bd6d
--- /dev/null
+++ b/src/test/resources/optimizerts/queries/channel/channel-subscribe.aql
@@ -0,0 +1,40 @@
+/*
+ * Description : Check the Plan for Subscribing to a channel
+ * Expected Res : Success
+ * Date : Mar 2015
+ */
+
+drop dataverse channels if exists;
+create dataverse channels;
+use dataverse channels;
+
+
+create type TweetMessageTypeuuid as closed {
+ tweetid: uuid,
+ sender-location: point,
+ send-time: datetime,
+ referred-topics: {{ string }},
+ message-text: string,
+ countA: int32,
+ countB: int32
+}
+
+
+create dataset TweetMessageuuids(TweetMessageTypeuuid)
+primary key tweetid autogenerated;
+
+create function NearbyTweetsContainingText($location, $text) {
+ for $tweet in dataset TweetMessageuuids
+ let $circle := create-circle($location,30.0)
+ where contains($tweet.message-text,$text)
+ and spatial-intersect($tweet.sender-location, $location)
+ return $tweet.message-text
+};
+
+create repetitive channel nearbyTweetChannel using NearbyTweetsContainingText@2 period duration("PT10M");
+
+write output to nc1:"rttest/channel-subscribe.adm";
+
+create broker brokerA at "http://www.hello.com";
+
+subscribe to nearbyTweetChannel (point("30.0, 30.0"), "Live") on brokerA;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/optimizerts/queries/channel/channel-unsubscribe.aql
----------------------------------------------------------------------
diff --git a/src/test/resources/optimizerts/queries/channel/channel-unsubscribe.aql b/src/test/resources/optimizerts/queries/channel/channel-unsubscribe.aql
new file mode 100644
index 0000000..7cdec50
--- /dev/null
+++ b/src/test/resources/optimizerts/queries/channel/channel-unsubscribe.aql
@@ -0,0 +1,38 @@
+/*
+ * Description : Check the Plan for Unsubscribing to a channel
+ * Expected Res : Success
+ * Date : Mar 2015
+ */
+
+drop dataverse channels if exists;
+create dataverse channels;
+use dataverse channels;
+
+
+create type TweetMessageTypeuuid as closed {
+ tweetid: uuid,
+ sender-location: point,
+ send-time: datetime,
+ referred-topics: {{ string }},
+ message-text: string,
+ countA: int32,
+ countB: int32
+}
+
+
+create dataset TweetMessageuuids(TweetMessageTypeuuid)
+primary key tweetid autogenerated;
+
+create function NearbyTweetsContainingText($location, $text) {
+ for $tweet in dataset TweetMessageuuids
+ let $circle := create-circle($location,30.0)
+ where contains($tweet.message-text,$text)
+ and spatial-intersect($tweet.sender-location, $location)
+ return $tweet.message-text
+};
+
+create repetitive channel nearbyTweetChannel using NearbyTweetsContainingText@2 period duration("PT10M");
+
+write output to nc1:"rttest/channel-unsubscribe.adm";
+
+unsubscribe "c45ef6d0-c5ae-4b9e-b5da-cf1932718296" from nearbyTweetChannel;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/optimizerts/results/channel/channel-create.plan
----------------------------------------------------------------------
diff --git a/src/test/resources/optimizerts/results/channel/channel-create.plan b/src/test/resources/optimizerts/results/channel/channel-create.plan
new file mode 100644
index 0000000..f597191
--- /dev/null
+++ b/src/test/resources/optimizerts/results/channel/channel-create.plan
@@ -0,0 +1,30 @@
+-- COMMIT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- INSERT_DELETE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$22] |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/src/test/resources/optimizerts/results/channel/channel-subscribe.plan
----------------------------------------------------------------------
diff --git a/src/test/resources/optimizerts/results/channel/channel-subscribe.plan b/src/test/resources/optimizerts/results/channel/channel-subscribe.plan
new file mode 100644
index 0000000..4530923
--- /dev/null
+++ b/src/test/resources/optimizerts/results/channel/channel-subscribe.plan
@@ -0,0 +1,44 @@
+-- COMMIT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- INSERT_DELETE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$22] |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+-- DISTRIBUTE_RESULT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- COMMIT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- INSERT_DELETE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$8] |PARTITIONED|
+ -- ASSIGN |UNPARTITIONED|
+ -- STREAM_PROJECT |UNPARTITIONED|
+ -- ASSIGN |UNPARTITIONED|
+ -- STREAM_PROJECT |UNPARTITIONED|
+ -- ASSIGN |UNPARTITIONED|
+ -- ASSIGN |UNPARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
\ No newline at end of file
[08/12] asterixdb-bad git commit: Initial commit
Posted by sj...@apache.org.
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/META-INF/LICENSE
----------------------------------------------------------------------
diff --git a/target/classes/META-INF/LICENSE b/target/classes/META-INF/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/target/classes/META-INF/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/META-INF/NOTICE
----------------------------------------------------------------------
diff --git a/target/classes/META-INF/NOTICE b/target/classes/META-INF/NOTICE
new file mode 100644
index 0000000..6d778da
--- /dev/null
+++ b/target/classes/META-INF/NOTICE
@@ -0,0 +1,8 @@
+
+asterix-opt
+Copyright 2016 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/git.properties
----------------------------------------------------------------------
diff --git a/target/classes/git.properties b/target/classes/git.properties
new file mode 100644
index 0000000..44f9457
--- /dev/null
+++ b/target/classes/git.properties
@@ -0,0 +1,22 @@
+#Generated by Git-Commit-Id-Plugin
+#Thu Jun 02 10:54:34 PDT 2016
+git.build.user.email=sjaco002@ucr.edu
+git.build.host=Sisyphus.local
+git.dirty=false
+git.remote.origin.url=https\://github.com/apache/incubator-asterixdb/
+git.closest.tag.name=apache-asterixdb-0.8.8-incubating
+git.commit.id.describe-short=apache-asterixdb-0.8.8-incubating-2824
+git.commit.user.email=sjaco002@ucr.edu
+git.commit.time=20.05.2016 @ 12\:58\:28 PDT
+git.commit.message.full=Fixed Broker Field Names and updated tests
+git.build.version=0.8.9-SNAPSHOT
+git.commit.message.short=Fixed Broker Field Names and updated tests
+git.commit.id.abbrev=bcef8a3
+git.branch=steven/active
+git.build.user.name=Steven Glenn Jacobs
+git.closest.tag.commit.count=2824
+git.commit.id.describe=apache-asterixdb-0.8.8-incubating-2824-gbcef8a3
+git.commit.id=bcef8a3dac1dd3ee61e66c0746e137f71225f47a
+git.tags=
+git.build.time=02.06.2016 @ 10\:54\:34 PDT
+git.commit.user.name=Steven Jacobs
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/lang-extension/lang.txt
----------------------------------------------------------------------
diff --git a/target/classes/lang-extension/lang.txt b/target/classes/lang-extension/lang.txt
new file mode 100644
index 0000000..90edb91
--- /dev/null
+++ b/target/classes/lang-extension/lang.txt
@@ -0,0 +1,179 @@
+import org.apache.asterix.bad.lang.statement.BrokerDropStatement;
+import org.apache.asterix.bad.lang.statement.ChannelDropStatement;
+import org.apache.asterix.bad.lang.statement.ChannelSubscribeStatement;
+import org.apache.asterix.bad.lang.statement.ChannelUnsubscribeStatement;
+import org.apache.asterix.bad.lang.statement.CreateBrokerStatement;
+import org.apache.asterix.bad.lang.statement.CreateChannelStatement;
+
+
+@merge
+Statement SingleStatement() throws ParseException:
+{
+ // merge area 1
+ before:
+ after:
+}
+{
+ (
+ // merge area 2
+ before:
+ after: | stmt = ChannelSubscriptionStatement())
+ {
+ // merge area 3
+ }
+}
+
+@merge
+Statement CreateStatement() throws ParseException:
+{
+ // merge area 1
+ before:
+ after:
+}
+{
+ (
+ // merge area 2
+ before:
+ after: | stmt = ChannelSpecification() | stmt = BrokerSpecification())
+ {
+ // merge area 3
+ }
+}
+
+@merge
+Statement DropStatement() throws ParseException:
+{
+ // merge area 1
+ before:
+ after:
+}
+{
+ (
+ // merge area 2
+ before:
+ after: | <CHANNEL> pairId = QualifiedName() ifExists = IfExists()
+ {
+ stmt = new ChannelDropStatement(pairId.first, pairId.second, ifExists);
+ }
+ | <BROKER> pairId = QualifiedName() ifExists = IfExists()
+ {
+ stmt = new BrokerDropStatement(pairId.first, pairId.second, ifExists);
+ }
+ )
+ {
+ // merge area 3
+ }
+}
+
+@new
+CreateChannelStatement ChannelSpecification() throws ParseException:
+{
+ Pair<Identifier,Identifier> nameComponents = null;
+ FunctionSignature appliedFunction = null;
+ CreateChannelStatement ccs = null;
+ String fqFunctionName = null;
+ Expression period = null;
+}
+{
+ (
+ "repetitive" <CHANNEL> nameComponents = QualifiedName()
+ <USING> appliedFunction = FunctionSignature()
+ "period" period = FunctionCallExpr()
+ {
+ ccs = new CreateChannelStatement(nameComponents.first,
+ nameComponents.second, appliedFunction, period);
+ }
+ )
+ {
+ return ccs;
+ }
+}
+
+@new
+CreateBrokerStatement BrokerSpecification() throws ParseException:
+{
+ CreateBrokerStatement cbs = null;
+ Pair<Identifier,Identifier> name = null;
+ String endPoint = null;
+}
+{
+ (
+ <BROKER> name = QualifiedName()
+ <AT> endPoint = StringLiteral()
+ {
+ cbs = new CreateBrokerStatement(name.first, name.second,endPoint);
+ }
+ )
+ {
+ return cbs;
+ }
+}
+
+@new
+Statement ChannelSubscriptionStatement() throws ParseException:
+{
+ Statement stmt = null;
+ Pair<Identifier,Identifier> nameComponents = null;
+ List<Expression> argList = new ArrayList<Expression>();
+ Expression tmp = null;
+ String id = null;
+ String subscriptionId = null;
+ Pair<Identifier,Identifier> brokerName = null;
+}
+{
+ (
+ "subscribe" <TO> nameComponents = QualifiedName()
+ <LEFTPAREN> (tmp = Expression()
+ {
+ argList.add(tmp);
+ }
+ (<COMMA> tmp = Expression()
+ {
+ argList.add(tmp);
+ }
+ )*)? <RIGHTPAREN> <ON> brokerName = QualifiedName()
+ {
+ stmt = new ChannelSubscribeStatement(nameComponents.first, nameComponents.second, argList, getVarCounter(), brokerName.first, brokerName.second, subscriptionId);
+ }
+ | "unsubscribe" id = StringLiteral() <FROM> nameComponents = QualifiedName()
+ {
+ setDataverses(new ArrayList<String>());
+ setDatasets(new ArrayList<String>());
+ VariableExpr varExp = new VariableExpr();
+ VarIdentifier var = new VarIdentifier();
+ varExp.setVar(var);
+ var.setValue("$subscriptionPlaceholder");
+ getCurrentScope().addNewVarSymbolToScope(varExp.getVar());
+ List<String> dataverses = getDataverses();
+ List<String> datasets = getDatasets();
+ // we remove the pointer to the dataverses and datasets
+ setDataverses(null);
+ setDatasets(null);
+ stmt = new ChannelUnsubscribeStatement(varExp, nameComponents.first, nameComponents.second, id, getVarCounter(), dataverses, datasets);
+ }
+ | "change" "subscription" subscriptionId = StringLiteral() <ON> nameComponents = QualifiedName()
+ <LEFTPAREN> (tmp = Expression()
+ {
+ argList.add(tmp);
+ }
+ (<COMMA> tmp = Expression()
+ {
+ argList.add(tmp);
+ }
+ )*)? <RIGHTPAREN>
+ <TO> brokerName = QualifiedName()
+ {
+ stmt = new ChannelSubscribeStatement(nameComponents.first, nameComponents.second, argList, getVarCounter(), brokerName.first, brokerName.second, subscriptionId);
+ }
+ )
+ {
+ return stmt;
+ }
+}
+
+<DEFAULT,IN_DBL_BRACE>
+TOKEN [IGNORE_CASE]:
+{
+ <BROKER : "broker">
+ | <CHANNEL : "channel">
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/BADConstants$ChannelJobType.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/BADConstants$ChannelJobType.class b/target/classes/org/apache/asterix/bad/BADConstants$ChannelJobType.class
new file mode 100644
index 0000000..a2fc05c
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/BADConstants$ChannelJobType.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/BADConstants.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/BADConstants.class b/target/classes/org/apache/asterix/bad/BADConstants.class
new file mode 100644
index 0000000..0634fb1
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/BADConstants.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/ChannelJobInfo.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/ChannelJobInfo.class b/target/classes/org/apache/asterix/bad/ChannelJobInfo.class
new file mode 100644
index 0000000..80761e2
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/ChannelJobInfo.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/ChannelJobService.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/ChannelJobService.class b/target/classes/org/apache/asterix/bad/ChannelJobService.class
new file mode 100644
index 0000000..85733ea
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/ChannelJobService.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/BADAQLParser$1.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/BADAQLParser$1.class b/target/classes/org/apache/asterix/bad/lang/BADAQLParser$1.class
new file mode 100644
index 0000000..88fe683
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/BADAQLParser$1.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/BADAQLParser$FunctionName.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/BADAQLParser$FunctionName.class b/target/classes/org/apache/asterix/bad/lang/BADAQLParser$FunctionName.class
new file mode 100644
index 0000000..f3b37a8
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/BADAQLParser$FunctionName.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/BADAQLParser$IndexParams.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/BADAQLParser$IndexParams.class b/target/classes/org/apache/asterix/bad/lang/BADAQLParser$IndexParams.class
new file mode 100644
index 0000000..0494370
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/BADAQLParser$IndexParams.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/BADAQLParser$JJCalls.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/BADAQLParser$JJCalls.class b/target/classes/org/apache/asterix/bad/lang/BADAQLParser$JJCalls.class
new file mode 100644
index 0000000..09a7ab5
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/BADAQLParser$JJCalls.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/BADAQLParser$LookaheadSuccess.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/BADAQLParser$LookaheadSuccess.class b/target/classes/org/apache/asterix/bad/lang/BADAQLParser$LookaheadSuccess.class
new file mode 100644
index 0000000..862de60
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/BADAQLParser$LookaheadSuccess.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/BADAQLParser.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/BADAQLParser.class b/target/classes/org/apache/asterix/bad/lang/BADAQLParser.class
new file mode 100644
index 0000000..994a68c
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/BADAQLParser.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/BADAQLParserConstants.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/BADAQLParserConstants.class b/target/classes/org/apache/asterix/bad/lang/BADAQLParserConstants.class
new file mode 100644
index 0000000..80a8ace
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/BADAQLParserConstants.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/BADAQLParserTokenManager.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/BADAQLParserTokenManager.class b/target/classes/org/apache/asterix/bad/lang/BADAQLParserTokenManager.class
new file mode 100644
index 0000000..fab3028
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/BADAQLParserTokenManager.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/BADCompilationProvider.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/BADCompilationProvider.class b/target/classes/org/apache/asterix/bad/lang/BADCompilationProvider.class
new file mode 100644
index 0000000..4632dc9
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/BADCompilationProvider.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/BADLangExtension$1.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/BADLangExtension$1.class b/target/classes/org/apache/asterix/bad/lang/BADLangExtension$1.class
new file mode 100644
index 0000000..63a35df
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/BADLangExtension$1.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/BADLangExtension.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/BADLangExtension.class b/target/classes/org/apache/asterix/bad/lang/BADLangExtension.class
new file mode 100644
index 0000000..f2274af
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/BADLangExtension.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/BADParserFactory.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/BADParserFactory.class b/target/classes/org/apache/asterix/bad/lang/BADParserFactory.class
new file mode 100644
index 0000000..4d1fb2e
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/BADParserFactory.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/BADQueryTranslatorExtension$LazyHolder.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/BADQueryTranslatorExtension$LazyHolder.class b/target/classes/org/apache/asterix/bad/lang/BADQueryTranslatorExtension$LazyHolder.class
new file mode 100644
index 0000000..6566e18
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/BADQueryTranslatorExtension$LazyHolder.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/BADQueryTranslatorExtension.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/BADQueryTranslatorExtension.class b/target/classes/org/apache/asterix/bad/lang/BADQueryTranslatorExtension.class
new file mode 100644
index 0000000..4db5796
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/BADQueryTranslatorExtension.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/BADQueryTranslatorFactory.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/BADQueryTranslatorFactory.class b/target/classes/org/apache/asterix/bad/lang/BADQueryTranslatorFactory.class
new file mode 100644
index 0000000..ad95bcf
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/BADQueryTranslatorFactory.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/BADStatementExecutor.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/BADStatementExecutor.class b/target/classes/org/apache/asterix/bad/lang/BADStatementExecutor.class
new file mode 100644
index 0000000..c5be509
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/BADStatementExecutor.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/JavaCharStream.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/JavaCharStream.class b/target/classes/org/apache/asterix/bad/lang/JavaCharStream.class
new file mode 100644
index 0000000..9492408
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/JavaCharStream.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/ParseException.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/ParseException.class b/target/classes/org/apache/asterix/bad/lang/ParseException.class
new file mode 100644
index 0000000..90063d2
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/ParseException.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/Token.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/Token.class b/target/classes/org/apache/asterix/bad/lang/Token.class
new file mode 100644
index 0000000..5103c1f
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/Token.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/TokenMgrError.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/TokenMgrError.class b/target/classes/org/apache/asterix/bad/lang/TokenMgrError.class
new file mode 100644
index 0000000..e288d27
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/TokenMgrError.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/statement/BrokerDropStatement.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/statement/BrokerDropStatement.class b/target/classes/org/apache/asterix/bad/lang/statement/BrokerDropStatement.class
new file mode 100644
index 0000000..4dd0352
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/statement/BrokerDropStatement.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/statement/ChannelDropStatement.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/statement/ChannelDropStatement.class b/target/classes/org/apache/asterix/bad/lang/statement/ChannelDropStatement.class
new file mode 100644
index 0000000..131dacc
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/statement/ChannelDropStatement.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/statement/ChannelSubscribeStatement.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/statement/ChannelSubscribeStatement.class b/target/classes/org/apache/asterix/bad/lang/statement/ChannelSubscribeStatement.class
new file mode 100644
index 0000000..e90b4ab
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/statement/ChannelSubscribeStatement.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/statement/ChannelUnsubscribeStatement.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/statement/ChannelUnsubscribeStatement.class b/target/classes/org/apache/asterix/bad/lang/statement/ChannelUnsubscribeStatement.class
new file mode 100644
index 0000000..7bdf66b
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/statement/ChannelUnsubscribeStatement.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/statement/CreateBrokerStatement.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/statement/CreateBrokerStatement.class b/target/classes/org/apache/asterix/bad/lang/statement/CreateBrokerStatement.class
new file mode 100644
index 0000000..836e128
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/statement/CreateBrokerStatement.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/lang/statement/CreateChannelStatement.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/lang/statement/CreateChannelStatement.class b/target/classes/org/apache/asterix/bad/lang/statement/CreateChannelStatement.class
new file mode 100644
index 0000000..6d1292a
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/lang/statement/CreateChannelStatement.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/metadata/BADMetadataExtension.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/metadata/BADMetadataExtension.class b/target/classes/org/apache/asterix/bad/metadata/BADMetadataExtension.class
new file mode 100644
index 0000000..8c9672b
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/metadata/BADMetadataExtension.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/metadata/BADMetadataIndexes.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/metadata/BADMetadataIndexes.class b/target/classes/org/apache/asterix/bad/metadata/BADMetadataIndexes.class
new file mode 100644
index 0000000..43f481e
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/metadata/BADMetadataIndexes.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/metadata/BADMetadataRecordTypes.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/metadata/BADMetadataRecordTypes.class b/target/classes/org/apache/asterix/bad/metadata/BADMetadataRecordTypes.class
new file mode 100644
index 0000000..2665135
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/metadata/BADMetadataRecordTypes.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/metadata/Broker.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/metadata/Broker.class b/target/classes/org/apache/asterix/bad/metadata/Broker.class
new file mode 100644
index 0000000..dcc6cd7
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/metadata/Broker.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/metadata/BrokerSearchKey.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/metadata/BrokerSearchKey.class b/target/classes/org/apache/asterix/bad/metadata/BrokerSearchKey.class
new file mode 100644
index 0000000..77b613d
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/metadata/BrokerSearchKey.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/metadata/BrokerTupleTranslator.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/metadata/BrokerTupleTranslator.class b/target/classes/org/apache/asterix/bad/metadata/BrokerTupleTranslator.class
new file mode 100644
index 0000000..8f1a264
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/metadata/BrokerTupleTranslator.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/metadata/Channel.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/metadata/Channel.class b/target/classes/org/apache/asterix/bad/metadata/Channel.class
new file mode 100644
index 0000000..3ff2b80
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/metadata/Channel.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/metadata/ChannelEventsListener$1.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/metadata/ChannelEventsListener$1.class b/target/classes/org/apache/asterix/bad/metadata/ChannelEventsListener$1.class
new file mode 100644
index 0000000..ab330fb
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/metadata/ChannelEventsListener$1.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/metadata/ChannelEventsListener.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/metadata/ChannelEventsListener.class b/target/classes/org/apache/asterix/bad/metadata/ChannelEventsListener.class
new file mode 100644
index 0000000..47e43c7
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/metadata/ChannelEventsListener.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/metadata/ChannelSearchKey.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/metadata/ChannelSearchKey.class b/target/classes/org/apache/asterix/bad/metadata/ChannelSearchKey.class
new file mode 100644
index 0000000..6e497d1
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/metadata/ChannelSearchKey.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/metadata/ChannelTupleTranslator.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/metadata/ChannelTupleTranslator.class b/target/classes/org/apache/asterix/bad/metadata/ChannelTupleTranslator.class
new file mode 100644
index 0000000..dd25237
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/metadata/ChannelTupleTranslator.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/rules/InsertBrokerNotifierForChannelRule.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/rules/InsertBrokerNotifierForChannelRule.class b/target/classes/org/apache/asterix/bad/rules/InsertBrokerNotifierForChannelRule.class
new file mode 100644
index 0000000..b16fe35
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/rules/InsertBrokerNotifierForChannelRule.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/runtime/NotifyBrokerOperator.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/runtime/NotifyBrokerOperator.class b/target/classes/org/apache/asterix/bad/runtime/NotifyBrokerOperator.class
new file mode 100644
index 0000000..73cd26f
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/runtime/NotifyBrokerOperator.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/runtime/NotifyBrokerPOperator.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/runtime/NotifyBrokerPOperator.class b/target/classes/org/apache/asterix/bad/runtime/NotifyBrokerPOperator.class
new file mode 100644
index 0000000..b8bb5e0
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/runtime/NotifyBrokerPOperator.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.class b/target/classes/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.class
new file mode 100644
index 0000000..beb0875
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/runtime/NotifyBrokerRuntimeFactory.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/runtime/NotifyBrokerRuntimeFactory.class b/target/classes/org/apache/asterix/bad/runtime/NotifyBrokerRuntimeFactory.class
new file mode 100644
index 0000000..c97f520
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/runtime/NotifyBrokerRuntimeFactory.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorDescriptor.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorDescriptor.class b/target/classes/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorDescriptor.class
new file mode 100644
index 0000000..a34bdcf
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorDescriptor.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorNodePushable$1.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorNodePushable$1.class b/target/classes/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorNodePushable$1.class
new file mode 100644
index 0000000..49b5567
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorNodePushable$1.class differ
http://git-wip-us.apache.org/repos/asf/asterixdb-bad/blob/bdba1b86/target/classes/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorNodePushable.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorNodePushable.class b/target/classes/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorNodePushable.class
new file mode 100644
index 0000000..3f82914
Binary files /dev/null and b/target/classes/org/apache/asterix/bad/runtime/RepetitiveChannelOperatorNodePushable.class differ