You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@quickstep.apache.org by sh...@apache.org on 2016/06/17 20:35:13 UTC
[1/7] incubator-quickstep git commit: Bug fixed in \analyze command
and reuse code. [Forced Update!]
Repository: incubator-quickstep
Updated Branches:
refs/heads/SQL-window-aggregation 0805afb8e -> 00ca1e4b3 (forced update)
Bug fixed in \analyze command and reuse code.
- The \analyze command issues SQL queries. Due to a recent change in the
execution engine, there was a bug in issuing the queries, which is
fixed in this branch.
- Reuse code to receive feedback from Foreman upon query completion.
- Minor inclusion fixes in touched files.
Project: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/commit/a7013627
Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/a7013627
Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/a7013627
Branch: refs/heads/SQL-window-aggregation
Commit: a7013627ecfab78aa80b483ee7f910ef7ea014d9
Parents: 4931623
Author: Harshad Deshmukh <hb...@apache.org>
Authored: Wed Jun 15 14:10:43 2016 -0500
Committer: Harshad Deshmukh <hb...@apache.org>
Committed: Wed Jun 15 14:10:43 2016 -0500
----------------------------------------------------------------------
cli/CommandExecutor.cpp | 2 ++
cli/QuickstepCli.cpp | 9 ++------
query_execution/QueryExecutionUtil.hpp | 23 ++++++++++++++++++++
.../tests/ExecutionGeneratorTestRunner.cpp | 10 ++++-----
.../tests/ExecutionGeneratorTestRunner.hpp | 3 +++
5 files changed, 34 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/a7013627/cli/CommandExecutor.cpp
----------------------------------------------------------------------
diff --git a/cli/CommandExecutor.cpp b/cli/CommandExecutor.cpp
index dc14741..7083ef5 100644
--- a/cli/CommandExecutor.cpp
+++ b/cli/CommandExecutor.cpp
@@ -220,6 +220,8 @@ inline TypedValue executeQueryForSingleResult(
QueryExecutionUtil::ConstructAndSendAdmitRequestMessage(
main_thread_client_id, foreman_client_id, query_handle.get(), bus);
+ QueryExecutionUtil::ReceiveQueryCompletionMessage(main_thread_client_id, bus);
+
// Retrieve the scalar result from the result relation.
const CatalogRelation *query_result_relation = query_handle->getQueryResultRelation();
DCHECK(query_result_relation != nullptr);
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/a7013627/cli/QuickstepCli.cpp
----------------------------------------------------------------------
diff --git a/cli/QuickstepCli.cpp b/cli/QuickstepCli.cpp
index 0b64fda..35bd16e 100644
--- a/cli/QuickstepCli.cpp
+++ b/cli/QuickstepCli.cpp
@@ -88,7 +88,6 @@ typedef quickstep::LineReaderDumb LineReaderImpl;
#include "tmb/id_typedefs.h"
#include "tmb/message_bus.h"
#include "tmb/message_style.h"
-#include "tmb/tagged_message.h"
namespace quickstep {
class CatalogRelation;
@@ -119,7 +118,6 @@ using quickstep::QueryHandle;
using quickstep::QueryPlan;
using quickstep::QueryProcessor;
using quickstep::SqlParserWrapper;
-using quickstep::TaggedMessage;
using quickstep::Worker;
using quickstep::WorkerDirectory;
using quickstep::WorkerMessage;
@@ -128,7 +126,6 @@ using quickstep::kPoisonMessage;
using quickstep::kWorkloadCompletionMessage;
using tmb::client_id;
-using tmb::AnnotatedMessage;
namespace quickstep {
@@ -440,10 +437,8 @@ int main(int argc, char* argv[]) {
&bus);
try {
- const AnnotatedMessage annotated_msg =
- bus.Receive(main_thread_client_id, 0, true);
- const TaggedMessage &tagged_message = annotated_msg.tagged_message;
- DCHECK_EQ(kWorkloadCompletionMessage, tagged_message.message_type());
+ QueryExecutionUtil::ReceiveQueryCompletionMessage(
+ main_thread_client_id, &bus);
end = std::chrono::steady_clock::now();
const CatalogRelation *query_result_relation = query_handle->getQueryResultRelation();
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/a7013627/query_execution/QueryExecutionUtil.hpp
----------------------------------------------------------------------
diff --git a/query_execution/QueryExecutionUtil.hpp b/query_execution/QueryExecutionUtil.hpp
index 78fd159..6ea4a29 100644
--- a/query_execution/QueryExecutionUtil.hpp
+++ b/query_execution/QueryExecutionUtil.hpp
@@ -25,13 +25,18 @@
#include "query_execution/WorkerMessage.hpp"
#include "utility/Macros.hpp"
+#include "glog/logging.h"
+
#include "tmb/address.h"
+#include "tmb/id_typedefs.h"
#include "tmb/message_style.h"
#include "tmb/message_bus.h"
#include "tmb/tagged_message.h"
namespace quickstep {
+class QueryHandle;
+
/**
* @brief A static class for reusable methods in query_execution module.
**/
@@ -91,6 +96,24 @@ class QueryExecutionUtil {
bus, sender_id, receiver_id, std::move(admit_tagged_message));
}
+ /**
+ * @brief Receive a query completion message.
+ *
+ * @param receiver_id The TMB client ID of the receiver thread.
+ * @param bus A pointer to the TMB.
+ *
+ * @note Right now the query completion message is of no interest to the
+ * caller. In the future, if this message needs to be fetched, make this
+ * function return the TaggedMessage.
+ **/
+ static void ReceiveQueryCompletionMessage(const tmb::client_id receiver_id,
+ tmb::MessageBus *bus) {
+ const AnnotatedMessage annotated_msg =
+ bus->Receive(receiver_id, 0, true);
+ const TaggedMessage &tagged_message = annotated_msg.tagged_message;
+ DCHECK_EQ(kWorkloadCompletionMessage, tagged_message.message_type());
+ }
+
static void BroadcastPoisonMessage(const tmb::client_id sender_id, tmb::MessageBus *bus) {
// Terminate all threads.
// The sender thread broadcasts poison message to the workers and foreman.
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/a7013627/query_optimizer/tests/ExecutionGeneratorTestRunner.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/tests/ExecutionGeneratorTestRunner.cpp b/query_optimizer/tests/ExecutionGeneratorTestRunner.cpp
index ea871d0..8c1d306 100644
--- a/query_optimizer/tests/ExecutionGeneratorTestRunner.cpp
+++ b/query_optimizer/tests/ExecutionGeneratorTestRunner.cpp
@@ -42,7 +42,8 @@
#include "glog/logging.h"
-#include "tmb/tagged_message.h"
+#include "tmb/id_typedefs.h"
+#include "tmb/message_bus.h"
namespace quickstep {
@@ -101,11 +102,8 @@ void ExecutionGeneratorTestRunner::runTestCase(
&query_handle,
&bus_);
- // Receive workload completion message from Foreman.
- const AnnotatedMessage annotated_msg =
- bus_.Receive(main_thread_client_id_, 0, true);
- const TaggedMessage &tagged_message = annotated_msg.tagged_message;
- DCHECK_EQ(kWorkloadCompletionMessage, tagged_message.message_type());
+ QueryExecutionUtil::ReceiveQueryCompletionMessage(
+ main_thread_client_id_, &bus_);
const CatalogRelation *query_result_relation = query_handle.getQueryResultRelation();
if (query_result_relation) {
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/a7013627/query_optimizer/tests/ExecutionGeneratorTestRunner.hpp
----------------------------------------------------------------------
diff --git a/query_optimizer/tests/ExecutionGeneratorTestRunner.hpp b/query_optimizer/tests/ExecutionGeneratorTestRunner.hpp
index 9204073..bb2a26f 100644
--- a/query_optimizer/tests/ExecutionGeneratorTestRunner.hpp
+++ b/query_optimizer/tests/ExecutionGeneratorTestRunner.hpp
@@ -35,6 +35,9 @@
#include "utility/Macros.hpp"
#include "utility/textbased_test/TextBasedTestDriver.hpp"
+#include "tmb/id_typedefs.h"
+#include "tmb/message_bus.h"
+
namespace quickstep {
namespace optimizer {
[6/7] incubator-quickstep git commit: QUICKSTEP-20: Added parser
support for SQL window aggregation function
Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/00ca1e4b/parser/preprocessed/SqlLexer_gen.cpp
----------------------------------------------------------------------
diff --git a/parser/preprocessed/SqlLexer_gen.cpp b/parser/preprocessed/SqlLexer_gen.cpp
index db20491..d02db56 100644
--- a/parser/preprocessed/SqlLexer_gen.cpp
+++ b/parser/preprocessed/SqlLexer_gen.cpp
@@ -8,8 +8,8 @@
#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 6
-#define YY_FLEX_SUBMINOR_VERSION 0
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 39
#if YY_FLEX_SUBMINOR_VERSION > 0
#define FLEX_BETA
#endif
@@ -354,7 +354,7 @@ void quickstep_yyfree (void * ,yyscan_t yyscanner );
/* Begin user sect3 */
-#define quickstep_yywrap(yyscanner) (/*CONSTCOND*/1)
+#define quickstep_yywrap(yyscanner) 1
#define YY_SKIP_YYWRAP
typedef unsigned char YY_CHAR;
@@ -366,9 +366,6 @@ typedef int yy_state_type;
static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner);
static int yy_get_next_buffer (yyscan_t yyscanner );
-#if defined(__GNUC__) && __GNUC__ >= 3
-__attribute__((__noreturn__))
-#endif
static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
/* Done after the current pattern has been matched and before the
@@ -381,8 +378,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
*yy_cp = '\0'; \
yyg->yy_c_buf_p = yy_cp;
-#define YY_NUM_RULES 152
-#define YY_END_OF_BUFFER 153
+#define YY_NUM_RULES 160
+#define YY_END_OF_BUFFER 161
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@@ -390,72 +387,75 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static yyconst flex_int16_t yy_accept[553] =
+static yyconst flex_int16_t yy_accept[588] =
{ 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 153, 2, 2, 151, 151, 150, 149, 151,
- 128, 124, 127, 124, 124, 147, 120, 117, 121, 146,
- 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
- 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
- 146, 146, 146, 146, 125, 4, 5, 5, 3, 143,
- 143, 140, 144, 144, 138, 145, 145, 142, 1, 150,
- 118, 148, 147, 147, 147, 0, 122, 119, 123, 146,
- 146, 146, 146, 10, 146, 146, 146, 22, 146, 146,
- 146, 146, 146, 146, 146, 146, 146, 146, 126, 146,
-
- 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
- 146, 146, 58, 66, 146, 146, 146, 146, 146, 146,
- 146, 146, 146, 146, 146, 80, 81, 146, 146, 146,
- 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
- 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
- 146, 4, 5, 3, 143, 139, 144, 137, 137, 129,
- 131, 132, 133, 134, 135, 136, 137, 145, 141, 148,
- 147, 0, 147, 6, 7, 146, 9, 11, 146, 146,
- 15, 146, 146, 146, 146, 146, 146, 146, 146, 146,
- 146, 32, 146, 146, 146, 146, 146, 146, 146, 146,
-
- 43, 146, 146, 146, 146, 146, 146, 50, 146, 146,
- 146, 146, 146, 146, 146, 146, 146, 62, 146, 68,
- 146, 146, 146, 146, 146, 146, 146, 76, 146, 79,
- 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
- 146, 146, 146, 146, 97, 98, 146, 146, 146, 146,
- 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
- 129, 131, 130, 146, 146, 146, 146, 146, 146, 146,
- 20, 23, 146, 146, 146, 28, 146, 146, 30, 146,
- 146, 146, 146, 37, 146, 146, 41, 42, 146, 146,
- 146, 146, 146, 146, 146, 52, 53, 146, 55, 146,
-
- 57, 146, 146, 146, 146, 65, 67, 69, 70, 71,
- 146, 73, 146, 146, 77, 146, 146, 146, 146, 146,
- 88, 146, 90, 146, 146, 146, 146, 146, 146, 146,
- 146, 146, 102, 103, 105, 146, 146, 146, 146, 146,
- 146, 112, 146, 114, 115, 129, 130, 8, 146, 146,
- 146, 146, 146, 146, 146, 25, 146, 146, 146, 146,
- 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
- 146, 47, 48, 49, 146, 54, 146, 59, 60, 146,
- 146, 146, 72, 146, 75, 78, 82, 83, 146, 146,
- 146, 89, 146, 146, 93, 146, 146, 146, 146, 146,
-
- 101, 146, 146, 146, 146, 109, 146, 146, 113, 146,
- 146, 146, 14, 146, 146, 146, 146, 146, 26, 146,
- 29, 146, 146, 146, 146, 35, 146, 146, 146, 40,
- 146, 45, 146, 146, 56, 61, 146, 146, 74, 146,
- 146, 146, 146, 92, 146, 95, 96, 146, 146, 146,
- 146, 107, 108, 110, 146, 146, 146, 13, 146, 146,
- 146, 146, 146, 146, 21, 146, 33, 34, 146, 146,
- 146, 146, 46, 51, 63, 146, 146, 86, 87, 146,
- 146, 146, 146, 146, 146, 111, 146, 146, 146, 146,
- 146, 146, 146, 146, 31, 146, 146, 39, 146, 64,
-
- 146, 146, 146, 99, 146, 146, 146, 146, 12, 146,
- 146, 146, 146, 24, 146, 36, 146, 146, 84, 146,
- 146, 100, 104, 146, 116, 16, 146, 146, 146, 27,
- 38, 146, 85, 91, 146, 146, 146, 18, 19, 146,
- 146, 106, 146, 146, 146, 146, 146, 94, 146, 44,
- 17, 0
+ 0, 0, 161, 2, 2, 159, 159, 158, 157, 159,
+ 136, 132, 135, 132, 132, 155, 128, 125, 129, 154,
+ 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
+ 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
+ 154, 154, 154, 154, 133, 4, 5, 5, 3, 151,
+ 151, 148, 152, 152, 146, 153, 153, 150, 1, 158,
+ 126, 156, 155, 155, 155, 0, 130, 127, 131, 154,
+ 154, 154, 154, 10, 154, 154, 154, 22, 154, 154,
+ 154, 154, 154, 154, 154, 154, 154, 154, 154, 134,
+
+ 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
+ 154, 154, 154, 60, 68, 154, 154, 154, 154, 154,
+ 154, 154, 154, 154, 154, 154, 82, 83, 154, 154,
+ 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
+ 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
+ 154, 154, 154, 4, 5, 3, 151, 147, 152, 145,
+ 145, 137, 139, 140, 141, 142, 143, 144, 145, 153,
+ 149, 156, 155, 0, 155, 6, 7, 154, 9, 11,
+ 154, 154, 15, 154, 154, 154, 154, 154, 154, 154,
+ 154, 154, 154, 154, 33, 154, 154, 154, 154, 154,
+
+ 154, 154, 154, 44, 154, 154, 154, 154, 154, 154,
+ 154, 52, 154, 154, 154, 154, 154, 154, 154, 154,
+ 154, 64, 154, 70, 154, 154, 154, 154, 154, 154,
+ 154, 78, 154, 81, 154, 154, 154, 154, 154, 154,
+ 154, 154, 154, 154, 154, 154, 154, 98, 154, 154,
+ 103, 104, 154, 154, 154, 154, 154, 154, 154, 154,
+ 154, 154, 154, 154, 154, 154, 154, 154, 137, 139,
+ 138, 154, 154, 154, 154, 154, 154, 154, 20, 23,
+ 154, 154, 154, 28, 154, 154, 154, 31, 154, 154,
+ 154, 154, 38, 154, 154, 42, 43, 154, 154, 154,
+
+ 154, 154, 154, 154, 154, 54, 55, 154, 57, 154,
+ 59, 154, 154, 154, 154, 67, 69, 71, 72, 73,
+ 154, 75, 154, 154, 79, 154, 154, 86, 154, 154,
+ 154, 154, 92, 154, 94, 154, 154, 154, 100, 154,
+ 154, 154, 154, 154, 154, 108, 109, 111, 154, 154,
+ 154, 154, 154, 154, 154, 119, 154, 154, 122, 123,
+ 137, 138, 8, 154, 154, 154, 154, 154, 154, 154,
+ 25, 154, 154, 154, 154, 154, 154, 154, 154, 154,
+ 154, 154, 154, 154, 154, 154, 154, 48, 49, 50,
+ 154, 154, 56, 154, 61, 62, 154, 154, 154, 74,
+
+ 154, 77, 80, 84, 85, 154, 154, 154, 154, 93,
+ 154, 154, 97, 154, 154, 154, 154, 154, 107, 154,
+ 154, 154, 154, 154, 116, 154, 154, 120, 154, 154,
+ 154, 154, 14, 154, 154, 154, 154, 154, 26, 154,
+ 29, 154, 154, 154, 154, 154, 36, 154, 154, 154,
+ 41, 154, 46, 154, 154, 154, 58, 63, 154, 154,
+ 76, 154, 154, 154, 154, 154, 96, 154, 101, 102,
+ 154, 154, 154, 154, 154, 114, 115, 117, 154, 121,
+ 154, 154, 13, 154, 154, 154, 154, 154, 154, 21,
+ 30, 154, 34, 35, 154, 154, 154, 154, 47, 154,
+
+ 53, 65, 154, 154, 89, 154, 91, 154, 154, 154,
+ 154, 154, 154, 154, 118, 154, 154, 154, 154, 154,
+ 154, 154, 154, 32, 154, 154, 40, 154, 154, 66,
+ 154, 154, 154, 154, 105, 154, 154, 154, 154, 154,
+ 12, 154, 154, 154, 154, 24, 154, 37, 154, 154,
+ 51, 87, 90, 154, 154, 106, 110, 154, 113, 124,
+ 16, 154, 154, 154, 27, 39, 154, 88, 95, 154,
+ 154, 154, 18, 19, 154, 154, 112, 154, 154, 154,
+ 154, 154, 99, 154, 45, 17, 0
} ;
-static yyconst YY_CHAR yy_ec[256] =
+static yyconst flex_int32_t yy_ec[256] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
@@ -487,7 +487,7 @@ static yyconst YY_CHAR yy_ec[256] =
1, 1, 1, 1, 1
} ;
-static yyconst YY_CHAR yy_meta[72] =
+static yyconst flex_int32_t yy_meta[72] =
{ 0,
1, 1, 2, 1, 1, 3, 1, 4, 1, 5,
5, 6, 6, 5, 1, 1, 1, 7, 7, 7,
@@ -499,145 +499,155 @@ static yyconst YY_CHAR yy_meta[72] =
8
} ;
-static yyconst flex_uint16_t yy_base[568] =
+static yyconst flex_int16_t yy_base[603] =
{ 0,
0, 1, 46, 0, 117, 163, 2, 3, 128, 132,
- 6, 10, 257, 1219, 1219, 0, 1219, 13, 1219, 233,
- 1219, 1219, 1219, 208, 6, 130, 4, 1219, 195, 124,
- 161, 170, 178, 207, 260, 92, 167, 161, 96, 107,
- 219, 214, 212, 224, 236, 92, 279, 272, 278, 281,
- 128, 168, 0, 125, 1219, 184, 4, 19, 0, 0,
- 0, 146, 0, 0, 343, 0, 0, 145, 0, 22,
- 1219, 0, 307, 337, 341, 18, 1219, 1219, 1219, 0,
- 170, 224, 177, 181, 215, 269, 224, 0, 263, 326,
- 336, 286, 290, 333, 382, 321, 322, 329, 1219, 328,
-
- 347, 351, 346, 350, 346, 353, 352, 374, 386, 385,
- 383, 382, 402, 0, 395, 382, 389, 403, 399, 397,
- 399, 401, 399, 408, 418, 0, 421, 406, 410, 425,
- 437, 438, 438, 455, 451, 436, 457, 462, 462, 463,
- 461, 454, 447, 454, 462, 469, 465, 466, 474, 460,
- 481, 148, 29, 0, 0, 1219, 0, 1219, 1219, 22,
- 24, 1219, 1219, 1219, 1219, 1219, 0, 0, 1219, 0,
- 509, 26, 28, 0, 0, 478, 0, 481, 478, 501,
- 493, 514, 513, 501, 517, 500, 503, 498, 523, 505,
- 521, 0, 518, 527, 526, 529, 513, 532, 520, 532,
-
- 0, 537, 521, 523, 523, 525, 558, 563, 559, 562,
- 554, 568, 568, 560, 574, 575, 576, 577, 569, 0,
- 564, 565, 581, 578, 582, 569, 571, 0, 581, 0,
- 589, 590, 576, 595, 586, 580, 595, 605, 621, 625,
- 624, 98, 618, 629, 0, 623, 617, 625, 624, 634,
- 635, 629, 625, 642, 630, 624, 644, 634, 641, 632,
- 30, 125, 0, 633, 639, 649, 642, 652, 647, 647,
- 0, 674, 673, 675, 670, 0, 671, 674, 673, 681,
- 674, 676, 684, 693, 690, 688, 0, 0, 685, 682,
- 702, 700, 686, 687, 699, 0, 0, 693, 0, 696,
-
- 0, 687, 694, 696, 726, 0, 0, 0, 0, 0,
- 696, 0, 698, 734, 727, 730, 731, 741, 746, 751,
- 0, 748, 0, 736, 731, 736, 753, 744, 756, 748,
- 741, 758, 0, 745, 0, 760, 745, 747, 761, 764,
- 762, 0, 767, 0, 761, 136, 1219, 0, 772, 786,
- 780, 801, 788, 800, 805, 0, 795, 792, 806, 807,
- 804, 813, 803, 811, 808, 804, 805, 816, 817, 804,
- 821, 0, 0, 0, 818, 0, 819, 0, 0, 807,
- 823, 808, 0, 827, 0, 0, 0, 0, 814, 835,
- 840, 0, 855, 846, 0, 859, 861, 846, 858, 850,
-
- 0, 849, 851, 866, 867, 0, 854, 873, 0, 860,
- 867, 863, 0, 857, 862, 880, 873, 863, 0, 883,
- 0, 880, 873, 876, 870, 0, 872, 903, 913, 0,
- 93, 0, 898, 906, 0, 0, 904, 922, 0, 915,
- 905, 901, 913, 0, 916, 0, 0, 915, 921, 930,
- 931, 0, 0, 0, 915, 920, 921, 0, 928, 923,
- 926, 928, 936, 933, 0, 938, 0, 0, 939, 937,
- 928, 931, 0, 0, 0, 953, 959, 0, 0, 973,
- 969, 960, 967, 969, 970, 0, 964, 978, 972, 971,
- 972, 969, 972, 977, 0, 974, 979, 0, 975, 0,
-
- 982, 992, 985, 0, 992, 984, 985, 994, 0, 997,
- 1001, 996, 1018, 0, 1012, 0, 1027, 1018, 1019, 1020,
- 1031, 0, 0, 1029, 0, 0, 1024, 1038, 1026, 0,
- 0, 1036, 0, 0, 1026, 1042, 1028, 0, 0, 1035,
- 1045, 0, 1042, 1046, 1036, 1050, 1037, 0, 1038, 0,
- 0, 1219, 1103, 1113, 1123, 1133, 1143, 1147, 1150, 1156,
- 1164, 1174, 1184, 1194, 1204, 1209, 1211
+ 6, 10, 211, 1307, 1307, 0, 1307, 13, 1307, 194,
+ 1307, 1307, 1307, 194, 6, 130, 4, 1307, 170, 124,
+ 161, 215, 170, 207, 265, 92, 167, 162, 96, 107,
+ 223, 165, 162, 221, 274, 92, 284, 277, 315, 206,
+ 128, 232, 0, 125, 1307, 152, 4, 19, 0, 0,
+ 0, 143, 0, 0, 379, 0, 0, 144, 0, 22,
+ 1307, 0, 292, 305, 335, 18, 1307, 1307, 1307, 0,
+ 174, 264, 180, 186, 209, 271, 229, 0, 277, 333,
+ 335, 312, 330, 317, 323, 338, 323, 333, 340, 1307,
+
+ 339, 355, 357, 381, 370, 373, 377, 382, 380, 384,
+ 383, 383, 383, 431, 0, 398, 383, 390, 406, 402,
+ 403, 404, 425, 420, 431, 442, 0, 445, 432, 448,
+ 436, 437, 451, 448, 444, 460, 452, 439, 489, 464,
+ 468, 469, 468, 462, 455, 477, 501, 493, 489, 494,
+ 502, 494, 510, 142, 29, 0, 0, 1307, 0, 1307,
+ 1307, 22, 24, 1307, 1307, 1307, 1307, 1307, 0, 0,
+ 1307, 0, 520, 26, 28, 0, 0, 508, 0, 512,
+ 495, 510, 497, 530, 518, 506, 525, 508, 512, 509,
+ 543, 530, 533, 550, 0, 547, 558, 556, 561, 546,
+
+ 565, 552, 564, 0, 569, 552, 554, 556, 557, 576,
+ 566, 576, 569, 571, 565, 579, 580, 573, 587, 597,
+ 598, 604, 594, 0, 593, 594, 612, 613, 616, 603,
+ 605, 0, 614, 0, 622, 623, 611, 610, 630, 631,
+ 622, 616, 632, 628, 636, 639, 637, 631, 632, 644,
+ 0, 649, 647, 655, 657, 667, 670, 665, 665, 664,
+ 681, 669, 663, 682, 673, 682, 680, 671, 30, 125,
+ 0, 674, 679, 689, 683, 693, 688, 689, 0, 702,
+ 694, 694, 688, 0, 699, 706, 720, 709, 717, 712,
+ 715, 725, 734, 731, 729, 0, 0, 726, 723, 743,
+
+ 740, 726, 727, 734, 741, 0, 0, 735, 0, 738,
+ 0, 731, 738, 739, 759, 0, 0, 0, 0, 0,
+ 740, 0, 741, 755, 746, 764, 765, 0, 778, 783,
+ 786, 792, 0, 791, 0, 779, 774, 779, 0, 796,
+ 787, 799, 791, 784, 800, 0, 788, 0, 803, 788,
+ 789, 793, 807, 810, 810, 0, 814, 806, 0, 810,
+ 136, 1307, 0, 820, 830, 820, 840, 830, 839, 848,
+ 0, 840, 837, 851, 852, 844, 850, 859, 849, 857,
+ 854, 851, 852, 862, 863, 852, 869, 0, 0, 0,
+ 850, 869, 0, 870, 0, 0, 859, 876, 860, 0,
+
+ 888, 0, 0, 0, 0, 878, 885, 899, 886, 0,
+ 902, 893, 0, 907, 909, 894, 906, 898, 0, 897,
+ 899, 905, 915, 916, 0, 904, 923, 0, 902, 911,
+ 920, 916, 0, 909, 916, 934, 928, 919, 0, 939,
+ 0, 946, 936, 944, 949, 942, 0, 945, 963, 967,
+ 0, 93, 0, 951, 963, 959, 0, 0, 956, 974,
+ 0, 967, 957, 969, 954, 967, 0, 970, 0, 0,
+ 969, 975, 986, 987, 985, 0, 0, 0, 974, 0,
+ 979, 981, 0, 988, 983, 996, 1002, 1010, 1010, 0,
+ 0, 1015, 0, 0, 1018, 1016, 1008, 1010, 0, 1016,
+
+ 0, 0, 1019, 1017, 0, 1019, 0, 1031, 1026, 1016,
+ 1023, 1026, 1027, 1036, 0, 1022, 1038, 1032, 1031, 1034,
+ 1031, 1035, 1041, 0, 1038, 1053, 0, 1052, 1066, 0,
+ 1063, 1071, 1076, 1070, 0, 1079, 1071, 1072, 1085, 1082,
+ 0, 1084, 1087, 1081, 1089, 0, 1075, 0, 1090, 1080,
+ 0, 1080, 0, 1081, 1094, 0, 0, 1092, 0, 0,
+ 0, 1087, 1103, 1091, 0, 0, 1102, 0, 0, 1093,
+ 1109, 1105, 0, 0, 1116, 1126, 0, 1126, 1129, 1121,
+ 1136, 1125, 0, 1126, 0, 0, 1307, 1191, 1201, 1211,
+ 1221, 1231, 1235, 1238, 1244, 1252, 1262, 1272, 1282, 1292,
+
+ 1297, 1299
} ;
-static yyconst flex_int16_t yy_def[568] =
+static yyconst flex_int16_t yy_def[603] =
{ 0,
- 553, 553, 552, 3, 554, 554, 555, 555, 556, 556,
- 557, 557, 552, 552, 552, 558, 552, 552, 552, 552,
- 552, 552, 552, 552, 552, 552, 552, 552, 552, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 552, 552, 552, 552, 560, 561,
- 561, 552, 562, 562, 563, 564, 564, 552, 558, 552,
- 552, 565, 552, 552, 552, 552, 552, 552, 552, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 552, 559,
-
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 552, 552, 560, 561, 552, 562, 552, 552, 552,
- 552, 552, 552, 552, 552, 552, 566, 564, 552, 565,
- 552, 552, 552, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
-
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 552, 552, 567, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
-
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 552, 552, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
-
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
-
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
- 559, 0, 552, 552, 552, 552, 552, 552, 552, 552,
- 552, 552, 552, 552, 552, 552, 552
+ 588, 588, 587, 3, 589, 589, 590, 590, 591, 591,
+ 592, 592, 587, 587, 587, 593, 587, 587, 587, 587,
+ 587, 587, 587, 587, 587, 587, 587, 587, 587, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 587, 587, 587, 587, 595, 596,
+ 596, 587, 597, 597, 598, 599, 599, 587, 593, 587,
+ 587, 600, 587, 587, 587, 587, 587, 587, 587, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 587,
+
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 587, 587, 595, 596, 587, 597, 587,
+ 587, 587, 587, 587, 587, 587, 587, 587, 601, 599,
+ 587, 600, 587, 587, 587, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 587, 587,
+ 602, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 587, 587, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 594, 594, 594, 594,
+ 594, 594, 594, 594, 594, 594, 0, 587, 587, 587,
+ 587, 587, 587, 587, 587, 587, 587, 587, 587, 587,
+
+ 587, 587
} ;
-static yyconst flex_uint16_t yy_nxt[1291] =
+static yyconst flex_int16_t yy_nxt[1379] =
{ 0,
- 552, 552, 15, 15, 61, 61, 153, 153, 67, 62,
- 62, 68, 67, 552, 70, 68, 70, 73, 73, 77,
- 78, 153, 153, 70, 552, 70, 172, 172, 552, 173,
- 173, 153, 153, 261, 262, 262, 262, 173, 173, 173,
- 173, 346, 262, 552, 16, 16, 17, 18, 19, 18,
+ 587, 587, 15, 15, 61, 61, 155, 155, 67, 62,
+ 62, 68, 67, 587, 70, 68, 70, 73, 73, 77,
+ 78, 155, 155, 70, 587, 70, 174, 174, 587, 175,
+ 175, 155, 155, 269, 270, 270, 270, 175, 175, 175,
+ 175, 361, 270, 587, 16, 16, 17, 18, 19, 18,
20, 21, 22, 23, 22, 24, 25, 26, 26, 17,
27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
@@ -646,143 +656,153 @@ static yyconst flex_uint16_t yy_nxt[1291] =
38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 17, 56, 57,
- 58, 17, 17, 17, 17, 17, 110, 115, 116, 132,
- 64, 17, 17, 17, 64, 62, 262, 262, 472, 62,
- 74, 75, 75, 327, 81, 148, 151, 262, 262, 152,
- 169, 76, 82, 156, 83, 110, 115, 116, 132, 84,
+ 58, 17, 17, 17, 17, 17, 111, 116, 117, 134,
+ 64, 17, 17, 17, 64, 62, 270, 270, 498, 62,
+ 74, 75, 75, 154, 81, 150, 153, 270, 270, 171,
+ 158, 76, 82, 154, 83, 111, 116, 117, 134, 84,
17, 17, 17, 17, 56, 57, 58, 17, 17, 17,
- 17, 17, 65, 81, 148, 151, 65, 17, 17, 17,
- 76, 82, 85, 83, 111, 152, 86, 89, 84, 87,
- 174, 113, 149, 150, 90, 94, 114, 177, 112, 95,
-
- 178, 91, 88, 96, 92, 93, 17, 17, 17, 97,
- 79, 85, 98, 111, 99, 86, 89, 72, 87, 174,
- 113, 149, 150, 90, 94, 114, 177, 112, 95, 178,
- 91, 88, 96, 92, 93, 100, 117, 101, 97, 121,
- 118, 98, 102, 123, 119, 122, 125, 103, 71, 124,
- 120, 179, 175, 129, 126, 182, 552, 130, 127, 552,
- 176, 128, 552, 552, 100, 117, 101, 552, 121, 118,
- 131, 102, 123, 119, 122, 125, 103, 104, 124, 120,
- 179, 175, 129, 126, 182, 105, 130, 127, 106, 176,
- 128, 107, 180, 137, 108, 140, 133, 109, 183, 131,
-
- 134, 138, 141, 142, 135, 181, 104, 189, 190, 139,
- 136, 145, 143, 146, 105, 144, 147, 106, 73, 73,
- 107, 180, 137, 108, 140, 133, 109, 183, 76, 134,
- 138, 141, 142, 135, 181, 552, 189, 190, 139, 136,
- 145, 143, 146, 184, 144, 147, 159, 185, 171, 171,
- 552, 74, 75, 75, 160, 161, 197, 76, 76, 198,
- 199, 162, 76, 200, 186, 163, 187, 201, 188, 191,
- 202, 203, 184, 164, 192, 552, 185, 165, 205, 166,
- 206, 552, 204, 167, 207, 197, 208, 76, 198, 199,
- 162, 76, 200, 186, 163, 187, 201, 188, 191, 202,
-
- 203, 193, 164, 192, 194, 209, 165, 205, 166, 206,
- 195, 204, 167, 207, 210, 208, 211, 196, 212, 214,
- 219, 213, 215, 220, 221, 222, 223, 225, 224, 226,
- 193, 227, 216, 194, 209, 228, 229, 217, 218, 195,
- 230, 231, 232, 210, 233, 211, 196, 212, 214, 219,
- 213, 215, 220, 221, 222, 223, 225, 224, 226, 234,
- 227, 216, 235, 236, 228, 229, 217, 218, 237, 230,
- 231, 232, 238, 233, 241, 242, 243, 239, 240, 246,
- 247, 248, 249, 250, 251, 244, 252, 253, 234, 254,
- 255, 235, 236, 245, 256, 258, 259, 237, 260, 264,
-
- 257, 238, 265, 241, 242, 243, 239, 240, 246, 247,
- 248, 249, 250, 251, 244, 252, 253, 266, 254, 255,
- 171, 171, 245, 256, 258, 259, 267, 260, 264, 257,
- 76, 265, 268, 269, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 270, 266, 282, 284, 285,
- 286, 283, 287, 288, 289, 267, 290, 291, 292, 76,
- 293, 268, 269, 271, 272, 273, 274, 275, 276, 277,
- 278, 279, 280, 281, 270, 294, 282, 284, 285, 286,
- 283, 287, 288, 289, 295, 290, 291, 292, 296, 293,
- 297, 298, 299, 300, 301, 302, 303, 304, 305, 307,
-
- 308, 309, 310, 311, 294, 312, 313, 314, 306, 315,
- 316, 317, 318, 295, 319, 320, 321, 296, 322, 297,
- 298, 299, 300, 301, 302, 303, 304, 305, 307, 308,
- 309, 310, 311, 323, 312, 313, 314, 306, 315, 316,
- 317, 318, 324, 319, 320, 321, 325, 322, 326, 328,
- 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
- 339, 340, 323, 341, 342, 344, 345, 348, 343, 349,
- 350, 324, 351, 352, 353, 325, 354, 326, 328, 329,
- 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 340, 355, 341, 342, 344, 345, 348, 343, 349, 350,
-
- 356, 351, 352, 353, 357, 354, 358, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 355, 372, 373, 374, 375, 376, 377, 378, 379, 356,
- 380, 552, 383, 357, 384, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 381,
- 372, 373, 374, 375, 376, 377, 378, 379, 385, 380,
- 382, 383, 386, 384, 387, 388, 389, 390, 391, 392,
- 393, 394, 395, 396, 397, 398, 399, 400, 381, 401,
- 402, 403, 404, 405, 406, 407, 408, 385, 409, 382,
- 410, 386, 411, 387, 388, 389, 390, 391, 392, 393,
-
- 394, 395, 396, 397, 398, 399, 400, 412, 401, 402,
- 403, 404, 405, 406, 407, 408, 413, 409, 414, 410,
- 415, 411, 417, 416, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 412, 430, 431, 432,
- 433, 434, 435, 436, 437, 413, 438, 414, 439, 415,
- 440, 417, 416, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 441, 430, 431, 432, 433,
- 434, 435, 436, 437, 442, 438, 443, 439, 444, 440,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, 441, 459, 460, 461, 462, 463,
-
- 464, 465, 466, 442, 467, 443, 468, 444, 469, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, 470, 459, 460, 461, 462, 463, 464,
- 465, 466, 471, 467, 473, 468, 474, 469, 475, 476,
- 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
- 487, 488, 470, 489, 490, 491, 492, 493, 494, 495,
- 496, 471, 497, 473, 498, 474, 499, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
- 488, 500, 489, 490, 491, 492, 493, 494, 495, 496,
- 501, 497, 502, 498, 503, 499, 504, 505, 506, 507,
-
- 508, 509, 510, 511, 512, 513, 514, 515, 516, 517,
- 500, 518, 519, 520, 521, 522, 523, 524, 525, 501,
- 526, 502, 527, 503, 528, 504, 505, 506, 507, 508,
- 509, 510, 511, 512, 513, 514, 515, 516, 517, 529,
- 518, 519, 520, 521, 522, 523, 524, 525, 530, 526,
- 531, 527, 532, 528, 533, 534, 535, 536, 537, 538,
- 539, 540, 541, 542, 543, 544, 545, 546, 529, 547,
- 548, 549, 550, 551, 552, 552, 552, 530, 552, 531,
- 552, 532, 552, 533, 534, 535, 536, 537, 538, 539,
- 540, 541, 542, 543, 544, 545, 546, 552, 547, 548,
-
- 549, 550, 551, 14, 14, 14, 14, 14, 14, 14,
- 14, 14, 14, 59, 59, 59, 59, 59, 59, 59,
- 59, 59, 59, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 63, 63, 63, 63, 63, 63, 63,
- 63, 63, 63, 66, 66, 66, 66, 66, 66, 66,
- 66, 66, 66, 69, 69, 80, 80, 80, 552, 80,
- 154, 154, 154, 154, 155, 155, 155, 552, 155, 155,
- 155, 155, 155, 155, 157, 157, 157, 552, 157, 157,
- 157, 157, 552, 157, 158, 158, 158, 158, 158, 158,
- 158, 158, 158, 158, 168, 168, 552, 168, 168, 168,
-
- 168, 168, 168, 168, 170, 552, 170, 170, 170, 170,
- 170, 170, 170, 170, 263, 263, 347, 347, 13, 552,
- 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
- 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
- 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
- 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
- 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
- 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
- 552, 552, 552, 552, 552, 552, 552, 552, 552, 552
+ 17, 17, 65, 81, 150, 153, 65, 17, 17, 17,
+ 76, 82, 85, 83, 112, 79, 86, 95, 84, 87,
+ 122, 96, 114, 124, 176, 97, 123, 115, 113, 125,
+
+ 179, 98, 88, 72, 99, 180, 17, 17, 17, 71,
+ 587, 85, 587, 112, 100, 86, 95, 587, 87, 122,
+ 96, 114, 124, 176, 97, 123, 115, 113, 125, 179,
+ 98, 88, 89, 99, 180, 101, 147, 102, 148, 90,
+ 118, 149, 103, 126, 119, 181, 91, 104, 120, 92,
+ 93, 127, 94, 587, 121, 128, 151, 152, 129, 130,
+ 184, 89, 587, 587, 101, 147, 102, 148, 90, 118,
+ 149, 103, 126, 119, 181, 91, 104, 120, 92, 93,
+ 127, 94, 105, 121, 128, 151, 152, 129, 130, 184,
+ 106, 131, 177, 107, 182, 132, 108, 587, 139, 109,
+
+ 178, 135, 110, 73, 73, 136, 140, 183, 133, 137,
+ 587, 105, 185, 76, 141, 138, 173, 173, 587, 106,
+ 131, 177, 107, 182, 132, 108, 76, 139, 109, 178,
+ 135, 110, 142, 191, 136, 140, 183, 133, 137, 143,
+ 144, 185, 76, 141, 138, 74, 75, 75, 192, 145,
+ 186, 193, 146, 587, 187, 76, 76, 196, 200, 194,
+ 197, 142, 191, 188, 195, 189, 198, 190, 143, 144,
+ 201, 202, 587, 199, 203, 204, 205, 192, 145, 186,
+ 193, 146, 161, 187, 587, 76, 196, 200, 194, 197,
+ 162, 163, 188, 195, 189, 198, 190, 164, 208, 201,
+
+ 202, 165, 199, 203, 204, 205, 206, 209, 210, 166,
+ 211, 213, 214, 167, 215, 168, 212, 207, 216, 169,
+ 218, 217, 587, 223, 224, 225, 164, 208, 226, 227,
+ 165, 228, 587, 229, 230, 206, 209, 210, 166, 211,
+ 213, 214, 167, 215, 168, 212, 207, 216, 169, 218,
+ 217, 219, 223, 224, 225, 231, 232, 226, 227, 233,
+ 228, 220, 229, 230, 234, 235, 221, 222, 236, 237,
+ 238, 239, 240, 242, 243, 247, 241, 244, 248, 587,
+ 219, 252, 245, 246, 231, 232, 253, 254, 233, 255,
+ 220, 256, 257, 234, 235, 221, 222, 236, 237, 238,
+
+ 239, 240, 242, 243, 247, 241, 244, 248, 249, 258,
+ 252, 245, 246, 261, 262, 253, 254, 250, 255, 259,
+ 256, 257, 263, 265, 266, 251, 260, 268, 264, 272,
+ 267, 173, 173, 273, 274, 275, 276, 249, 258, 279,
+ 280, 76, 261, 262, 281, 282, 250, 283, 259, 277,
+ 284, 263, 265, 266, 251, 260, 268, 264, 272, 267,
+ 285, 278, 273, 274, 275, 276, 286, 287, 279, 280,
+ 76, 288, 289, 281, 282, 290, 283, 291, 277, 284,
+ 293, 292, 294, 295, 296, 297, 298, 299, 300, 285,
+ 278, 301, 302, 303, 304, 286, 287, 305, 306, 307,
+
+ 288, 289, 308, 309, 290, 310, 291, 311, 312, 293,
+ 292, 294, 295, 296, 297, 298, 299, 300, 313, 314,
+ 301, 302, 303, 304, 317, 315, 305, 306, 307, 318,
+ 319, 308, 309, 320, 310, 316, 311, 312, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 313, 314, 330,
+ 331, 332, 333, 317, 315, 334, 335, 336, 318, 319,
+ 337, 338, 320, 341, 316, 342, 339, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 340, 343, 330, 331,
+ 332, 333, 344, 345, 334, 335, 336, 346, 347, 337,
+ 338, 348, 341, 349, 342, 339, 350, 351, 352, 353,
+
+ 354, 355, 358, 356, 359, 360, 343, 357, 363, 364,
+ 365, 344, 345, 366, 367, 368, 346, 347, 369, 370,
+ 348, 371, 349, 372, 373, 350, 351, 352, 353, 354,
+ 355, 358, 356, 359, 360, 374, 357, 363, 364, 365,
+ 375, 376, 366, 367, 368, 377, 378, 369, 370, 379,
+ 371, 380, 372, 373, 381, 382, 383, 384, 385, 386,
+ 387, 388, 389, 390, 374, 391, 392, 393, 394, 375,
+ 376, 395, 396, 397, 377, 378, 400, 401, 379, 402,
+ 380, 403, 398, 381, 382, 383, 384, 385, 386, 387,
+ 388, 389, 390, 399, 391, 392, 393, 394, 404, 405,
+
+ 395, 396, 397, 406, 407, 400, 401, 408, 402, 409,
+ 403, 398, 410, 411, 412, 413, 414, 415, 416, 417,
+ 418, 419, 399, 420, 421, 422, 423, 404, 405, 424,
+ 425, 426, 406, 407, 427, 428, 408, 429, 409, 430,
+ 431, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 432, 420, 421, 422, 423, 433, 434, 424, 425,
+ 426, 437, 435, 427, 428, 436, 429, 438, 430, 431,
+ 439, 440, 441, 442, 443, 444, 445, 446, 447, 448,
+ 432, 449, 450, 451, 452, 433, 434, 453, 454, 455,
+ 437, 435, 456, 457, 436, 458, 438, 459, 460, 439,
+
+ 440, 441, 442, 443, 444, 445, 446, 447, 448, 461,
+ 449, 450, 451, 452, 462, 463, 453, 454, 455, 464,
+ 465, 456, 457, 466, 458, 467, 459, 460, 468, 469,
+ 470, 471, 472, 473, 474, 475, 476, 477, 461, 478,
+ 479, 480, 481, 462, 463, 482, 483, 484, 464, 465,
+ 485, 486, 466, 487, 467, 488, 489, 468, 469, 470,
+ 471, 472, 473, 474, 475, 476, 477, 490, 478, 479,
+ 480, 481, 491, 492, 482, 483, 484, 493, 494, 485,
+ 486, 495, 487, 496, 488, 489, 497, 499, 500, 501,
+ 502, 503, 504, 505, 506, 507, 490, 508, 509, 510,
+
+ 511, 491, 492, 512, 513, 514, 493, 494, 515, 516,
+ 495, 517, 496, 518, 519, 497, 499, 500, 501, 502,
+ 503, 504, 505, 506, 507, 520, 508, 509, 510, 511,
+ 521, 522, 512, 513, 514, 523, 524, 515, 516, 525,
+ 517, 526, 518, 519, 527, 528, 529, 530, 531, 532,
+ 533, 534, 535, 536, 520, 537, 538, 539, 540, 521,
+ 522, 541, 542, 543, 523, 524, 544, 545, 525, 546,
+ 526, 547, 548, 527, 528, 529, 530, 531, 532, 533,
+ 534, 535, 536, 549, 537, 538, 539, 540, 550, 551,
+ 541, 542, 543, 552, 553, 544, 545, 554, 546, 555,
+
+ 547, 548, 556, 557, 558, 559, 560, 561, 562, 563,
+ 564, 565, 549, 566, 567, 568, 569, 550, 551, 570,
+ 571, 572, 552, 553, 573, 574, 554, 575, 555, 576,
+ 577, 556, 557, 558, 559, 560, 561, 562, 563, 564,
+ 565, 578, 566, 567, 568, 569, 579, 580, 570, 571,
+ 572, 581, 582, 573, 574, 583, 575, 584, 576, 577,
+ 585, 586, 587, 587, 587, 587, 587, 587, 587, 587,
+ 578, 587, 587, 587, 587, 579, 580, 587, 587, 587,
+ 581, 582, 587, 587, 583, 587, 584, 587, 587, 585,
+ 586, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+
+ 14, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+ 59, 60, 60, 60, 60, 60, 60, 60, 60, 60,
+ 60, 63, 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 69, 69, 80, 80, 80, 587, 80, 156, 156,
+ 156, 156, 157, 157, 157, 587, 157, 157, 157, 157,
+ 157, 157, 159, 159, 159, 587, 159, 159, 159, 159,
+ 587, 159, 160, 160, 160, 160, 160, 160, 160, 160,
+ 160, 160, 170, 170, 587, 170, 170, 170, 170, 170,
+ 170, 170, 172, 587, 172, 172, 172, 172, 172, 172,
+
+ 172, 172, 271, 271, 362, 362, 13, 587, 587, 587,
+ 587, 587, 587, 587, 587, 587, 587, 587, 587, 587,
+ 587, 587, 587, 587, 587, 587, 587, 587, 587, 587,
+ 587, 587, 587, 587, 587, 587, 587, 587, 587, 587,
+ 587, 587, 587, 587, 587, 587, 587, 587, 587, 587,
+ 587, 587, 587, 587, 587, 587, 587, 587, 587, 587,
+ 587, 587, 587, 587, 587, 587, 587, 587, 587, 587,
+ 587, 587, 587, 587, 587, 587, 587, 587
} ;
-static yyconst flex_int16_t yy_chk[1291] =
+static yyconst flex_int16_t yy_chk[1379] =
{ 0,
0, 0, 1, 2, 7, 8, 57, 57, 11, 7,
8, 11, 12, 0, 18, 12, 18, 25, 25, 27,
27, 58, 58, 70, 0, 70, 76, 76, 0, 76,
- 76, 153, 153, 160, 160, 161, 161, 172, 172, 173,
- 173, 261, 261, 0, 1, 2, 3, 3, 3, 3,
+ 76, 155, 155, 162, 162, 163, 163, 174, 174, 175,
+ 175, 269, 269, 0, 1, 2, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
@@ -792,137 +812,147 @@ static yyconst flex_int16_t yy_chk[1291] =
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 5, 5, 5,
5, 5, 5, 5, 5, 5, 36, 39, 40, 46,
- 9, 5, 5, 5, 10, 9, 262, 262, 431, 10,
- 26, 26, 26, 242, 30, 51, 54, 346, 346, 152,
- 68, 26, 30, 62, 30, 36, 39, 40, 46, 30,
+ 9, 5, 5, 5, 10, 9, 270, 270, 452, 10,
+ 26, 26, 26, 154, 30, 51, 54, 361, 361, 68,
+ 62, 26, 30, 56, 30, 36, 39, 40, 46, 30,
5, 5, 5, 6, 6, 6, 6, 6, 6, 6,
6, 6, 9, 30, 51, 54, 10, 6, 6, 6,
- 26, 30, 31, 30, 37, 56, 31, 32, 30, 31,
- 81, 38, 52, 52, 32, 33, 38, 83, 37, 33,
-
- 84, 32, 31, 33, 32, 32, 6, 6, 6, 33,
- 29, 31, 33, 37, 34, 31, 32, 24, 31, 81,
- 38, 52, 52, 32, 33, 38, 83, 37, 33, 84,
- 32, 31, 33, 32, 32, 34, 41, 34, 33, 42,
- 41, 33, 34, 43, 41, 42, 44, 34, 20, 43,
- 41, 85, 82, 45, 44, 87, 13, 45, 44, 0,
- 82, 44, 0, 0, 34, 41, 34, 0, 42, 41,
- 45, 34, 43, 41, 42, 44, 34, 35, 43, 41,
- 85, 82, 45, 44, 87, 35, 45, 44, 35, 82,
- 44, 35, 86, 48, 35, 49, 47, 35, 89, 45,
-
- 47, 48, 49, 49, 47, 86, 35, 92, 93, 48,
- 47, 50, 49, 50, 35, 49, 50, 35, 73, 73,
- 35, 86, 48, 35, 49, 47, 35, 89, 73, 47,
- 48, 49, 49, 47, 86, 0, 92, 93, 48, 47,
- 50, 49, 50, 90, 49, 50, 65, 90, 74, 74,
- 0, 75, 75, 75, 65, 65, 96, 73, 74, 97,
- 98, 65, 75, 100, 91, 65, 91, 101, 91, 94,
- 102, 103, 90, 65, 94, 0, 90, 65, 104, 65,
- 105, 0, 103, 65, 106, 96, 107, 74, 97, 98,
- 65, 75, 100, 91, 65, 91, 101, 91, 94, 102,
-
- 103, 95, 65, 94, 95, 108, 65, 104, 65, 105,
- 95, 103, 65, 106, 109, 107, 110, 95, 111, 112,
- 115, 111, 113, 116, 117, 118, 119, 120, 119, 121,
- 95, 122, 113, 95, 108, 123, 124, 113, 113, 95,
- 125, 127, 128, 109, 129, 110, 95, 111, 112, 115,
- 111, 113, 116, 117, 118, 119, 120, 119, 121, 130,
- 122, 113, 131, 132, 123, 124, 113, 113, 133, 125,
- 127, 128, 134, 129, 135, 136, 137, 134, 134, 138,
- 139, 140, 141, 142, 143, 137, 144, 145, 130, 146,
- 147, 131, 132, 137, 148, 149, 150, 133, 151, 176,
-
- 148, 134, 178, 135, 136, 137, 134, 134, 138, 139,
- 140, 141, 142, 143, 137, 144, 145, 179, 146, 147,
- 171, 171, 137, 148, 149, 150, 180, 151, 176, 148,
- 171, 178, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, 193, 194, 182, 179, 195, 196, 197,
- 198, 195, 199, 200, 202, 180, 203, 204, 205, 171,
- 206, 181, 182, 183, 184, 185, 186, 187, 188, 189,
- 190, 191, 193, 194, 182, 207, 195, 196, 197, 198,
- 195, 199, 200, 202, 208, 203, 204, 205, 209, 206,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
-
- 221, 222, 223, 224, 207, 225, 226, 227, 218, 229,
- 231, 232, 233, 208, 234, 235, 236, 209, 237, 210,
- 211, 212, 213, 214, 215, 216, 217, 218, 219, 221,
- 222, 223, 224, 238, 225, 226, 227, 218, 229, 231,
- 232, 233, 239, 234, 235, 236, 240, 237, 241, 243,
- 244, 246, 247, 248, 249, 250, 251, 252, 253, 254,
- 255, 256, 238, 257, 258, 259, 260, 264, 258, 265,
- 266, 239, 267, 268, 269, 240, 270, 241, 243, 244,
- 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
- 256, 272, 257, 258, 259, 260, 264, 258, 265, 266,
-
- 273, 267, 268, 269, 274, 270, 275, 277, 278, 279,
- 280, 281, 282, 283, 284, 285, 286, 289, 290, 291,
- 272, 292, 293, 294, 295, 298, 300, 302, 303, 273,
- 304, 0, 311, 274, 313, 275, 277, 278, 279, 280,
- 281, 282, 283, 284, 285, 286, 289, 290, 291, 305,
- 292, 293, 294, 295, 298, 300, 302, 303, 314, 304,
- 305, 311, 315, 313, 316, 317, 318, 319, 320, 322,
- 324, 325, 326, 327, 328, 329, 330, 331, 305, 332,
- 334, 336, 337, 338, 339, 340, 341, 314, 343, 305,
- 345, 315, 349, 316, 317, 318, 319, 320, 322, 324,
-
- 325, 326, 327, 328, 329, 330, 331, 350, 332, 334,
- 336, 337, 338, 339, 340, 341, 351, 343, 352, 345,
- 353, 349, 354, 353, 355, 357, 358, 359, 360, 361,
- 362, 363, 364, 365, 366, 367, 350, 368, 369, 370,
- 371, 375, 377, 380, 381, 351, 382, 352, 384, 353,
- 389, 354, 353, 355, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 390, 368, 369, 370, 371,
- 375, 377, 380, 381, 391, 382, 393, 384, 394, 389,
- 396, 397, 398, 399, 400, 402, 403, 404, 405, 407,
- 408, 410, 411, 412, 390, 414, 415, 416, 417, 418,
-
- 420, 422, 423, 391, 424, 393, 425, 394, 427, 396,
- 397, 398, 399, 400, 402, 403, 404, 405, 407, 408,
- 410, 411, 412, 428, 414, 415, 416, 417, 418, 420,
- 422, 423, 429, 424, 433, 425, 434, 427, 437, 438,
- 440, 441, 442, 443, 445, 448, 449, 450, 451, 455,
- 456, 457, 428, 459, 460, 461, 462, 463, 464, 466,
- 469, 429, 470, 433, 471, 434, 472, 437, 438, 440,
- 441, 442, 443, 445, 448, 449, 450, 451, 455, 456,
- 457, 476, 459, 460, 461, 462, 463, 464, 466, 469,
- 477, 470, 480, 471, 481, 472, 482, 483, 484, 485,
-
- 487, 488, 489, 490, 491, 492, 493, 494, 496, 497,
- 476, 499, 501, 502, 503, 505, 506, 507, 508, 477,
- 510, 480, 511, 481, 512, 482, 483, 484, 485, 487,
- 488, 489, 490, 491, 492, 493, 494, 496, 497, 513,
- 499, 501, 502, 503, 505, 506, 507, 508, 515, 510,
- 517, 511, 518, 512, 519, 520, 521, 524, 527, 528,
- 529, 532, 535, 536, 537, 540, 541, 543, 513, 544,
- 545, 546, 547, 549, 0, 0, 0, 515, 0, 517,
- 0, 518, 0, 519, 520, 521, 524, 527, 528, 529,
- 532, 535, 536, 537, 540, 541, 543, 0, 544, 545,
-
- 546, 547, 549, 553, 553, 553, 553, 553, 553, 553,
- 553, 553, 553, 554, 554, 554, 554, 554, 554, 554,
- 554, 554, 554, 555, 555, 555, 555, 555, 555, 555,
- 555, 555, 555, 556, 556, 556, 556, 556, 556, 556,
- 556, 556, 556, 557, 557, 557, 557, 557, 557, 557,
- 557, 557, 557, 558, 558, 559, 559, 559, 0, 559,
- 560, 560, 560, 560, 561, 561, 561, 0, 561, 561,
- 561, 561, 561, 561, 562, 562, 562, 0, 562, 562,
- 562, 562, 0, 562, 563, 563, 563, 563, 563, 563,
- 563, 563, 563, 563, 564, 564, 0, 564, 564, 564,
-
- 564, 564, 564, 564, 565, 0, 565, 565, 565, 565,
- 565, 565, 565, 565, 566, 566, 567, 567, 552, 552,
- 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
- 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
- 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
- 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
- 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
- 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
- 552, 552, 552, 552, 552, 552, 552, 552, 552, 552
+ 26, 30, 31, 30, 37, 29, 31, 33, 30, 31,
+ 42, 33, 38, 43, 81, 33, 42, 38, 37, 43,
+
+ 83, 33, 31, 24, 33, 84, 6, 6, 6, 20,
+ 13, 31, 0, 37, 34, 31, 33, 0, 31, 42,
+ 33, 38, 43, 81, 33, 42, 38, 37, 43, 83,
+ 33, 31, 32, 33, 84, 34, 50, 34, 50, 32,
+ 41, 50, 34, 44, 41, 85, 32, 34, 41, 32,
+ 32, 44, 32, 0, 41, 44, 52, 52, 44, 44,
+ 87, 32, 0, 0, 34, 50, 34, 50, 32, 41,
+ 50, 34, 44, 41, 85, 32, 34, 41, 32, 32,
+ 44, 32, 35, 41, 44, 52, 52, 44, 44, 87,
+ 35, 45, 82, 35, 86, 45, 35, 0, 48, 35,
+
+ 82, 47, 35, 73, 73, 47, 48, 86, 45, 47,
+ 0, 35, 89, 73, 48, 47, 74, 74, 0, 35,
+ 45, 82, 35, 86, 45, 35, 74, 48, 35, 82,
+ 47, 35, 49, 92, 47, 48, 86, 45, 47, 49,
+ 49, 89, 73, 48, 47, 75, 75, 75, 93, 49,
+ 90, 94, 49, 0, 90, 74, 75, 96, 97, 95,
+ 96, 49, 92, 91, 95, 91, 96, 91, 49, 49,
+ 98, 99, 0, 96, 101, 102, 103, 93, 49, 90,
+ 94, 49, 65, 90, 0, 75, 96, 97, 95, 96,
+ 65, 65, 91, 95, 91, 96, 91, 65, 105, 98,
+
+ 99, 65, 96, 101, 102, 103, 104, 106, 107, 65,
+ 108, 109, 110, 65, 111, 65, 108, 104, 112, 65,
+ 113, 112, 0, 116, 117, 118, 65, 105, 119, 120,
+ 65, 120, 0, 121, 122, 104, 106, 107, 65, 108,
+ 109, 110, 65, 111, 65, 108, 104, 112, 65, 113,
+ 112, 114, 116, 117, 118, 123, 124, 119, 120, 125,
+ 120, 114, 121, 122, 126, 128, 114, 114, 129, 130,
+ 131, 132, 133, 134, 135, 137, 133, 136, 138, 0,
+ 114, 140, 136, 136, 123, 124, 141, 142, 125, 143,
+ 114, 144, 145, 126, 128, 114, 114, 129, 130, 131,
+
+ 132, 133, 134, 135, 137, 133, 136, 138, 139, 146,
+ 140, 136, 136, 148, 149, 141, 142, 139, 143, 147,
+ 144, 145, 150, 151, 152, 139, 147, 153, 150, 178,
+ 152, 173, 173, 180, 181, 182, 183, 139, 146, 185,
+ 186, 173, 148, 149, 187, 188, 139, 189, 147, 184,
+ 190, 150, 151, 152, 139, 147, 153, 150, 178, 152,
+ 191, 184, 180, 181, 182, 183, 192, 193, 185, 186,
+ 173, 194, 196, 187, 188, 197, 189, 198, 184, 190,
+ 199, 198, 200, 201, 202, 203, 205, 206, 207, 191,
+ 184, 208, 209, 210, 211, 192, 193, 212, 213, 214,
+
+ 194, 196, 215, 216, 197, 217, 198, 218, 219, 199,
+ 198, 200, 201, 202, 203, 205, 206, 207, 220, 221,
+ 208, 209, 210, 211, 223, 222, 212, 213, 214, 225,
+ 226, 215, 216, 227, 217, 222, 218, 219, 228, 229,
+ 230, 231, 233, 235, 236, 237, 238, 220, 221, 239,
+ 240, 241, 242, 223, 222, 243, 244, 245, 225, 226,
+ 246, 247, 227, 249, 222, 250, 248, 228, 229, 230,
+ 231, 233, 235, 236, 237, 238, 248, 252, 239, 240,
+ 241, 242, 253, 254, 243, 244, 245, 255, 256, 246,
+ 247, 257, 249, 258, 250, 248, 259, 260, 261, 262,
+
+ 263, 264, 266, 265, 267, 268, 252, 265, 272, 273,
+ 274, 253, 254, 275, 276, 277, 255, 256, 278, 280,
+ 257, 281, 258, 282, 283, 259, 260, 261, 262, 263,
+ 264, 266, 265, 267, 268, 285, 265, 272, 273, 274,
+ 286, 287, 275, 276, 277, 288, 289, 278, 280, 290,
+ 281, 291, 282, 283, 292, 293, 294, 295, 298, 299,
+ 300, 301, 302, 303, 285, 304, 305, 308, 310, 286,
+ 287, 312, 313, 314, 288, 289, 321, 323, 290, 324,
+ 291, 325, 315, 292, 293, 294, 295, 298, 299, 300,
+ 301, 302, 303, 315, 304, 305, 308, 310, 326, 327,
+
+ 312, 313, 314, 329, 330, 321, 323, 331, 324, 332,
+ 325, 315, 334, 336, 337, 338, 340, 341, 342, 343,
+ 344, 345, 315, 347, 349, 350, 351, 326, 327, 352,
+ 353, 354, 329, 330, 355, 357, 331, 358, 332, 360,
+ 364, 334, 336, 337, 338, 340, 341, 342, 343, 344,
+ 345, 365, 347, 349, 350, 351, 366, 367, 352, 353,
+ 354, 369, 368, 355, 357, 368, 358, 370, 360, 364,
+ 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
+ 365, 382, 383, 384, 385, 366, 367, 386, 387, 391,
+ 369, 368, 392, 394, 368, 397, 370, 398, 399, 372,
+
+ 373, 374, 375, 376, 377, 378, 379, 380, 381, 401,
+ 382, 383, 384, 385, 406, 407, 386, 387, 391, 408,
+ 409, 392, 394, 411, 397, 412, 398, 399, 414, 415,
+ 416, 417, 418, 420, 421, 422, 423, 424, 401, 426,
+ 427, 429, 430, 406, 407, 431, 432, 434, 408, 409,
+ 435, 436, 411, 437, 412, 438, 440, 414, 415, 416,
+ 417, 418, 420, 421, 422, 423, 424, 442, 426, 427,
+ 429, 430, 443, 444, 431, 432, 434, 445, 446, 435,
+ 436, 448, 437, 449, 438, 440, 450, 454, 455, 456,
+ 459, 460, 462, 463, 464, 465, 442, 466, 468, 471,
+
+ 472, 443, 444, 473, 474, 475, 445, 446, 479, 481,
+ 448, 482, 449, 484, 485, 450, 454, 455, 456, 459,
+ 460, 462, 463, 464, 465, 486, 466, 468, 471, 472,
+ 487, 488, 473, 474, 475, 489, 492, 479, 481, 495,
+ 482, 496, 484, 485, 497, 498, 500, 503, 504, 506,
+ 508, 509, 510, 511, 486, 512, 513, 514, 516, 487,
+ 488, 517, 518, 519, 489, 492, 520, 521, 495, 522,
+ 496, 523, 525, 497, 498, 500, 503, 504, 506, 508,
+ 509, 510, 511, 526, 512, 513, 514, 516, 528, 529,
+ 517, 518, 519, 531, 532, 520, 521, 533, 522, 534,
+
+ 523, 525, 536, 537, 538, 539, 540, 542, 543, 544,
+ 545, 547, 526, 549, 550, 552, 554, 528, 529, 555,
+ 558, 562, 531, 532, 563, 564, 533, 567, 534, 570,
+ 571, 536, 537, 538, 539, 540, 542, 543, 544, 545,
+ 547, 572, 549, 550, 552, 554, 575, 576, 555, 558,
+ 562, 578, 579, 563, 564, 580, 567, 581, 570, 571,
+ 582, 584, 0, 0, 0, 0, 0, 0, 0, 0,
+ 572, 0, 0, 0, 0, 575, 576, 0, 0, 0,
+ 578, 579, 0, 0, 580, 0, 581, 0, 0, 582,
+ 584, 588, 588, 588, 588, 588, 588, 588, 588, 588,
+
+ 588, 589, 589, 589, 589, 589, 589, 589, 589, 589,
+ 589, 590, 590, 590, 590, 590, 590, 590, 590, 590,
+ 590, 591, 591, 591, 591, 591, 591, 591, 591, 591,
+ 591, 592, 592, 592, 592, 592, 592, 592, 592, 592,
+ 592, 593, 593, 594, 594, 594, 0, 594, 595, 595,
+ 595, 595, 596, 596, 596, 0, 596, 596, 596, 596,
+ 596, 596, 597, 597, 597, 0, 597, 597, 597, 597,
+ 0, 597, 598, 598, 598, 598, 598, 598, 598, 598,
+ 598, 598, 599, 599, 0, 599, 599, 599, 599, 599,
+ 599, 599, 600, 0, 600, 600, 600, 600, 600, 600,
+
+ 600, 600, 601, 601, 602, 602, 587, 587, 587, 587,
+ 587, 587, 587, 587, 587, 587, 587, 587, 587, 587,
+ 587, 587, 587, 587, 587, 587, 587, 587, 587, 587,
+ 587, 587, 587, 587, 587, 587, 587, 587, 587, 587,
+ 587, 587, 587, 587, 587, 587, 587, 587, 587, 587,
+ 587, 587, 587, 587, 587, 587, 587, 587, 587, 587,
+ 587, 587, 587, 587, 587, 587, 587, 587, 587, 587,
+ 587, 587, 587, 587, 587, 587, 587, 587
} ;
/* Table of booleans, true if rule could match eol. */
-static yyconst flex_int32_t yy_rule_can_match_eol[153] =
+static yyconst flex_int32_t yy_rule_can_match_eol[161] =
{ 0,
0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -930,8 +960,9 @@ static yyconst flex_int32_t yy_rule_can_match_eol[153] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, };
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0,
+ 0, };
/* The intent behind this definition is that it'll catch
* any uses of REJECT which flex missed.
@@ -984,6 +1015,7 @@ class ParseCommand;
struct ParseCopyFromParams;
class ParseDataType;
class ParseExpression;
+struct ParseFrameInfo;
class ParseFunctionCall;
class ParseGroupBy;
class ParseHaving;
@@ -1022,6 +1054,7 @@ class ParseSubqueryExpression;
class ParseSubqueryTableReference;
class ParseTableReference;
class ParseTableReferenceSignature;
+class ParseWindow;
class Type;
class UnaryOperation;
@@ -1048,7 +1081,7 @@ class UnaryOperation;
-#line 1052 "SqlLexer_gen.cpp"
+#line 1085 "SqlLexer_gen.cpp"
#define INITIAL 0
#define CONDITION_SQL 1
@@ -1134,11 +1167,11 @@ void quickstep_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
FILE *quickstep_yyget_in (yyscan_t yyscanner );
-void quickstep_yyset_in (FILE * _in_str ,yyscan_t yyscanner );
+void quickstep_yyset_in (FILE * in_str ,yyscan_t yyscanner );
FILE *quickstep_yyget_out (yyscan_t yyscanner );
-void quickstep_yyset_out (FILE * _out_str ,yyscan_t yyscanner );
+void quickstep_yyset_out (FILE * out_str ,yyscan_t yyscanner );
yy_size_t quickstep_yyget_leng (yyscan_t yyscanner );
@@ -1146,11 +1179,11 @@ char *quickstep_yyget_text (yyscan_t yyscanner );
int quickstep_yyget_lineno (yyscan_t yyscanner );
-void quickstep_yyset_lineno (int _line_number ,yyscan_t yyscanner );
+void quickstep_yyset_lineno (int line_number ,yyscan_t yyscanner );
int quickstep_yyget_column (yyscan_t yyscanner );
-void quickstep_yyset_column (int _column_no ,yyscan_t yyscanner );
+void quickstep_yyset_column (int column_no ,yyscan_t yyscanner );
YYSTYPE * quickstep_yyget_lval (yyscan_t yyscanner );
@@ -1172,10 +1205,6 @@ extern int quickstep_yywrap (yyscan_t yyscanner );
#endif
#endif
-#ifndef YY_NO_UNPUT
-
-#endif
-
#ifndef yytext_ptr
static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
#endif
@@ -1290,7 +1319,7 @@ extern int quickstep_yylex \
/* Code executed at the end of each rule. */
#ifndef YY_BREAK
-#define YY_BREAK /*LINTED*/break;
+#define YY_BREAK break;
#endif
#define YY_RULE_SETUP \
@@ -1300,9 +1329,9 @@ extern int quickstep_yylex \
*/
YY_DECL
{
- yy_state_type yy_current_state;
- char *yy_cp, *yy_bp;
- int yy_act;
+ register yy_state_type yy_current_state;
+ register char *yy_cp, *yy_bp;
+ register int yy_act;
struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
yylval = yylval_param;
@@ -1336,12 +1365,12 @@ YY_DECL
}
{
-#line 128 "../SqlLexer.lpp"
+#line 130 "../SqlLexer.lpp"
-#line 1343 "SqlLexer_gen.cpp"
+#line 1372 "SqlLexer_gen.cpp"
- while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
+ while ( 1 ) /* loops until end-of-file is reached */
{
yy_cp = yyg->yy_c_buf_p;
@@ -1357,7 +1386,7 @@ YY_DECL
yy_match:
do
{
- YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
+ register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
if ( yy_accept[yy_current_state] )
{
yyg->yy_last_accepting_state = yy_current_state;
@@ -1366,13 +1395,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 553 )
+ if ( yy_current_state >= 588 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
++yy_cp;
}
- while ( yy_current_state != 552 );
+ while ( yy_current_state != 587 );
yy_cp = yyg->yy_last_accepting_cpos;
yy_current_state = yyg->yy_last_accepting_state;
@@ -1406,7 +1435,7 @@ do_action: /* This label is used only to access EOF actions. */
case 1:
YY_RULE_SETUP
-#line 131 "../SqlLexer.lpp"
+#line 133 "../SqlLexer.lpp"
{
/* A forward slash character represents a system command. */
BEGIN(CONDITION_COMMAND);
@@ -1418,7 +1447,7 @@ YY_RULE_SETUP
case 2:
/* rule 2 can match eol */
YY_RULE_SETUP
-#line 139 "../SqlLexer.lpp"
+#line 141 "../SqlLexer.lpp"
{
/* This is a SQL command. Place the char back and process normally. */
yyless(0);
@@ -1430,7 +1459,7 @@ YY_RULE_SETUP
case 3:
YY_RULE_SETUP
-#line 148 "../SqlLexer.lpp"
+#line 150 "../SqlLexer.lpp"
{
/* This is a command argument. */
yylval->string_value_ = new quickstep::ParseString(
@@ -1440,7 +1469,7 @@ YY_RULE_SETUP
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 155 "../SqlLexer.lpp"
+#line 157 "../SqlLexer.lpp"
{
/* Ignore whitespace. */
}
@@ -1448,7 +1477,7 @@ YY_RULE_SETUP
case 5:
/* rule 5 can match eol */
YY_RULE_SETUP
-#line 159 "../SqlLexer.lpp"
+#line 161 "../SqlLexer.lpp"
{
/* Newline reverts the lexer to the initial state. */
yycolumn = 0;
@@ -1460,627 +1489,667 @@ YY_RULE_SETUP
case 6:
YY_RULE_SETUP
-#line 168 "../SqlLexer.lpp"
+#line 170 "../SqlLexer.lpp"
return TOKEN_ADD;
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 169 "../SqlLexer.lpp"
+#line 171 "../SqlLexer.lpp"
return TOKEN_ALL;
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 170 "../SqlLexer.lpp"
+#line 172 "../SqlLexer.lpp"
return TOKEN_ALTER;
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 171 "../SqlLexer.lpp"
+#line 173 "../SqlLexer.lpp"
return TOKEN_AND;
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 172 "../SqlLexer.lpp"
+#line 174 "../SqlLexer.lpp"
return TOKEN_AS;
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 173 "../SqlLexer.lpp"
+#line 175 "../SqlLexer.lpp"
return TOKEN_ASC;
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 174 "../SqlLexer.lpp"
+#line 176 "../SqlLexer.lpp"
return TOKEN_ASC;
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 175 "../SqlLexer.lpp"
+#line 177 "../SqlLexer.lpp"
return TOKEN_BETWEEN;
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 176 "../SqlLexer.lpp"
+#line 178 "../SqlLexer.lpp"
return TOKEN_BIGINT;
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 177 "../SqlLexer.lpp"
+#line 179 "../SqlLexer.lpp"
return TOKEN_BIT;
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 178 "../SqlLexer.lpp"
+#line 180 "../SqlLexer.lpp"
return TOKEN_BITWEAVING;
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 179 "../SqlLexer.lpp"
+#line 181 "../SqlLexer.lpp"
return TOKEN_BLOCKPROPERTIES;
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 180 "../SqlLexer.lpp"
+#line 182 "../SqlLexer.lpp"
return TOKEN_BLOCKSAMPLE;
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 181 "../SqlLexer.lpp"
+#line 183 "../SqlLexer.lpp"
return TOKEN_BLOOM_FILTER;
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 182 "../SqlLexer.lpp"
+#line 184 "../SqlLexer.lpp"
return TOKEN_CASE;
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 183 "../SqlLexer.lpp"
+#line 185 "../SqlLexer.lpp"
return TOKEN_CSB_TREE;
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 184 "../SqlLexer.lpp"
+#line 186 "../SqlLexer.lpp"
return TOKEN_BY;
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 185 "../SqlLexer.lpp"
+#line 187 "../SqlLexer.lpp"
return TOKEN_CHARACTER;
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 186 "../SqlLexer.lpp"
+#line 188 "../SqlLexer.lpp"
return TOKEN_CHARACTER;
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 187 "../SqlLexer.lpp"
+#line 189 "../SqlLexer.lpp"
return TOKEN_CHECK;
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 188 "../SqlLexer.lpp"
+#line 190 "../SqlLexer.lpp"
return TOKEN_COLUMN;
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 189 "../SqlLexer.lpp"
+#line 191 "../SqlLexer.lpp"
return TOKEN_CONSTRAINT;
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 190 "../SqlLexer.lpp"
+#line 192 "../SqlLexer.lpp"
return TOKEN_COPY;
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 191 "../SqlLexer.lpp"
+#line 193 "../SqlLexer.lpp"
return TOKEN_CREATE;
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 192 "../SqlLexer.lpp"
-return TOKEN_DATE;
+#line 194 "../SqlLexer.lpp"
+return TOKEN_CURRENT;
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 193 "../SqlLexer.lpp"
-return TOKEN_DATETIME;
+#line 195 "../SqlLexer.lpp"
+return TOKEN_DATE;
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 194 "../SqlLexer.lpp"
-return TOKEN_DAY;
+#line 196 "../SqlLexer.lpp"
+return TOKEN_DATETIME;
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 195 "../SqlLexer.lpp"
-return TOKEN_DECIMAL;
+#line 197 "../SqlLexer.lpp"
+return TOKEN_DAY;
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 196 "../SqlLexer.lpp"
-return TOKEN_DEFAULT;
+#line 198 "../SqlLexer.lpp"
+return TOKEN_DECIMAL;
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 197 "../SqlLexer.lpp"
-return TOKEN_DELETE;
+#line 199 "../SqlLexer.lpp"
+return TOKEN_DEFAULT;
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 198 "../SqlLexer.lpp"
-return TOKEN_DELIMITER;
+#line 200 "../SqlLexer.lpp"
+return TOKEN_DELETE;
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 199 "../SqlLexer.lpp"
-return TOKEN_DESC;
+#line 201 "../SqlLexer.lpp"
+return TOKEN_DELIMITER;
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 200 "../SqlLexer.lpp"
+#line 202 "../SqlLexer.lpp"
return TOKEN_DESC;
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 201 "../SqlLexer.lpp"
-return TOKEN_DISTINCT;
+#line 203 "../SqlLexer.lpp"
+return TOKEN_DESC;
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 202 "../SqlLexer.lpp"
-return TOKEN_DOUBLE;
+#line 204 "../SqlLexer.lpp"
+return TOKEN_DISTINCT;
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 203 "../SqlLexer.lpp"
-return TOKEN_DROP;
+#line 205 "../SqlLexer.lpp"
+return TOKEN_DOUBLE;
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 204 "../SqlLexer.lpp"
-return TOKEN_ELSE;
+#line 206 "../SqlLexer.lpp"
+return TOKEN_DROP;
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 205 "../SqlLexer.lpp"
-return TOKEN_END;
+#line 207 "../SqlLexer.lpp"
+return TOKEN_ELSE;
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 206 "../SqlLexer.lpp"
-return TOKEN_ESCAPE_STRINGS;
+#line 208 "../SqlLexer.lpp"
+return TOKEN_END;
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 207 "../SqlLexer.lpp"
-return TOKEN_EXISTS;
+#line 209 "../SqlLexer.lpp"
+return TOKEN_ESCAPE_STRINGS;
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 208 "../SqlLexer.lpp"
-return TOKEN_EXTRACT;
+#line 210 "../SqlLexer.lpp"
+return TOKEN_EXISTS;
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 209 "../SqlLexer.lpp"
-return TOKEN_FALSE;
+#line 211 "../SqlLexer.lpp"
+return TOKEN_EXTRACT;
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 210 "../SqlLexer.lpp"
-return TOKEN_FIRST;
+#line 212 "../SqlLexer.lpp"
+return TOKEN_FALSE;
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 211 "../SqlLexer.lpp"
-return TOKEN_FLOAT;
+#line 213 "../SqlLexer.lpp"
+return TOKEN_FIRST;
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 212 "../SqlLexer.lpp"
-return TOKEN_FOR;
+#line 214 "../SqlLexer.lpp"
+return TOKEN_FLOAT;
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 213 "../SqlLexer.lpp"
-return TOKEN_FOREIGN;
+#line 215 "../SqlLexer.lpp"
+return TOKEN_FOLLOWING;
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 214 "../SqlLexer.lpp"
-return TOKEN_FROM;
+#line 216 "../SqlLexer.lpp"
+return TOKEN_FOR;
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 215 "../SqlLexer.lpp"
-return TOKEN_FULL;
+#line 217 "../SqlLexer.lpp"
+return TOKEN_FOREIGN;
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 216 "../SqlLexer.lpp"
-return TOKEN_GROUP;
+#line 218 "../SqlLexer.lpp"
+return TOKEN_FROM;
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 217 "../SqlLexer.lpp"
-return TOKEN_HASH;
+#line 219 "../SqlLexer.lpp"
+return TOKEN_FULL;
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 218 "../SqlLexer.lpp"
-return TOKEN_HAVING;
+#line 220 "../SqlLexer.lpp"
+return TOKEN_GROUP;
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 219 "../SqlLexer.lpp"
-return TOKEN_HOUR;
+#line 221 "../SqlLexer.lpp"
+return TOKEN_HASH;
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 220 "../SqlLexer.lpp"
-return TOKEN_IN;
+#line 222 "../SqlLexer.lpp"
+return TOKEN_HAVING;
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 221 "../SqlLexer.lpp"
-return TOKEN_INDEX;
+#line 223 "../SqlLexer.lpp"
+return TOKEN_HOUR;
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 222 "../SqlLexer.lpp"
-return TOKEN_INNER;
+#line 224 "../SqlLexer.lpp"
+return TOKEN_IN;
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 223 "../SqlLexer.lpp"
-return TOKEN_INSERT;
+#line 225 "../SqlLexer.lpp"
+return TOKEN_INDEX;
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 224 "../SqlLexer.lpp"
-return TOKEN_INTEGER;
+#line 226 "../SqlLexer.lpp"
+return TOKEN_INNER;
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 225 "../SqlLexer.lpp"
-return TOKEN_INTEGER;
+#line 227 "../SqlLexer.lpp"
+return TOKEN_INSERT;
YY_BREAK
case 64:
YY_RULE_SETUP
-#line 226 "../SqlLexer.lpp"
-return TOKEN_INTERVAL;
+#line 228 "../SqlLexer.lpp"
+return TOKEN_INTEGER;
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 227 "../SqlLexer.lpp"
-return TOKEN_INTO;
+#line 229 "../SqlLexer.lpp"
+return TOKEN_INTEGER;
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 228 "../SqlLexer.lpp"
-return TOKEN_IS;
+#line 230 "../SqlLexer.lpp"
+return TOKEN_INTERVAL;
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 229 "../SqlLexer.lpp"
-return TOKEN_JOIN;
+#line 231 "../SqlLexer.lpp"
+return TOKEN_INTO;
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 230 "../SqlLexer.lpp"
-return TOKEN_KEY;
+#line 232 "../SqlLexer.lpp"
+return TOKEN_IS;
YY_BREAK
case 69:
YY_RULE_SETUP
-#line 231 "../SqlLexer.lpp"
-return TOKEN_LAST;
+#line 233 "../SqlLexer.lpp"
+return TOKEN_JOIN;
YY_BREAK
case 70:
YY_RULE_SETUP
-#line 232 "../SqlLexer.lpp"
-return TOKEN_LEFT;
+#line 234 "../SqlLexer.lpp"
+return TOKEN_KEY;
YY_BREAK
case 71:
YY_RULE_SETUP
-#line 233 "../SqlLexer.lpp"
-return TOKEN_LIKE;
+#line 235 "../SqlLexer.lpp"
+return TOKEN_LAST;
YY_BREAK
case 72:
YY_RULE_SETUP
-#line 234 "../SqlLexer.lpp"
-return TOKEN_LIMIT;
+#line 236 "../SqlLexer.lpp"
+return TOKEN_LEFT;
YY_BREAK
case 73:
YY_RULE_SETUP
-#line 235 "../SqlLexer.lpp"
-return TOKEN_LONG;
+#line 237 "../SqlLexer.lpp"
+return TOKEN_LIKE;
YY_BREAK
case 74:
YY_RULE_SETUP
-#line 236 "../SqlLexer.lpp"
-return TOKEN_MINUTE;
+#line 238 "../SqlLexer.lpp"
+return TOKEN_LIMIT;
YY_BREAK
case 75:
YY_RULE_SETUP
-#line 237 "../SqlLexer.lpp"
-return TOKEN_MONTH;
+#line 239 "../SqlLexer.lpp"
+return TOKEN_LONG;
YY_BREAK
case 76:
YY_RULE_SETUP
-#line 238 "../SqlLexer.lpp"
-return TOKEN_NOT;
+#line 240 "../SqlLexer.lpp"
+return TOKEN_MINUTE;
YY_BREAK
case 77:
YY_RULE_SETUP
-#line 239 "../SqlLexer.lpp"
-return TOKEN_NULL;
+#line 241 "../SqlLexer.lpp"
+return TOKEN_MONTH;
YY_BREAK
case 78:
YY_RULE_SETUP
-#line 240 "../SqlLexer.lpp"
-return TOKEN_NULLS;
+#line 242 "../SqlLexer.lpp"
+return TOKEN_NOT;
YY_BREAK
case 79:
YY_RULE_SETUP
-#line 241 "../SqlLexer.lpp"
-return TOKEN_OFF;
+#line 243 "../SqlLexer.lpp"
+return TOKEN_NULL;
YY_BREAK
case 80:
YY_RULE_SETUP
-#line 242 "../SqlLexer.lpp"
-return TOKEN_ON;
+#line 244 "../SqlLexer.lpp"
+return TOKEN_NULLS;
YY_BREAK
case 81:
YY_RULE_SETUP
-#line 243 "../SqlLexer.lpp"
-return TOKEN_OR;
+#line 245 "../SqlLexer.lpp"
+return TOKEN_OFF;
YY_BREAK
case 82:
YY_RULE_SETUP
-#line 244 "../SqlLexer.lpp"
+#line 246 "../SqlLexer.lpp"
+return TOKEN_ON;
+ YY_BREAK
+case 83:
+YY_RULE_SETUP
+#line 247 "../SqlLexer.lpp"
+return TOKEN_OR;
+ YY_BREAK
+case 84:
+YY_RULE_SETUP
+#line 248 "../SqlLexer.lpp"
return TOKEN_ORDER;
YY_BREAK
-case 83:
+case 85:
YY_RULE_SETUP
-#line 245 "../SqlLexer.lpp"
+#line 249 "../SqlLexer.lpp"
return TOKEN_OUTER;
YY_BREAK
-case 84:
+case 86:
YY_RULE_SETUP
-#line 246 "../SqlLexer.lpp"
+#line 250 "../SqlLexer.lpp"
+return TOKEN_OVER;
+ YY_BREAK
+case 87:
+YY_RULE_SETUP
+#line 251 "../SqlLexer.lpp"
return TOKEN_PARTITION;
YY_BREAK
-case 85:
+case 88:
YY_RULE_SETUP
-#line 247 "../SqlLexer.lpp"
+#line 252 "../SqlLexer.lpp"
return TOKEN_PARTITIONS;
YY_BREAK
-case 86:
+case 89:
YY_RULE_SETUP
-#line 248 "../SqlLexer.lpp"
+#line 253 "../SqlLexer.lpp"
return TOKEN_PERCENT;
YY_BREAK
-case 87:
+case 90:
YY_RULE_SETUP
-#line 249 "../SqlLexer.lpp"
+#line 254 "../SqlLexer.lpp"
+return TOKEN_PRECEDING;
+ YY_BREAK
+case 91:
+YY_RULE_SETUP
+#line 255 "../SqlLexer.lpp"
return TOKEN_PRIMARY;
YY_BREAK
-case 88:
+case 92:
YY_RULE_SETUP
-#line 250 "../SqlLexer.lpp"
+#line 256 "../SqlLexer.lpp"
return TOKEN_QUIT;
YY_BREAK
-case 89:
+case 93:
YY_RULE_SETUP
-#line 251 "../SqlLexer.lpp"
+#line 257 "../SqlLexer.lpp"
return TOKEN_RANGE;
YY_BREAK
-case 90:
+case 94:
YY_RULE_SETUP
-#line 252 "../SqlLexer.lpp"
+#line 258 "../SqlLexer.lpp"
return TOKEN_REAL;
YY_BREAK
-case 91:
+case 95:
YY_RULE_SETUP
-#line 253 "../SqlLexer.lpp"
+#line 259 "../SqlLexer.lpp"
return TOKEN_REFERENCES;
YY_BREAK
-case 92:
+case 96:
YY_RULE_SETUP
-#line 254 "../SqlLexer.lpp"
+#line 260 "../SqlLexer.lpp"
return TOKEN_REGEXP;
YY_BREAK
-case 93:
+case 97:
YY_RULE_SETUP
-#line 255 "../SqlLexer.lpp"
+#line 261 "../SqlLexer.lpp"
return TOKEN_RIGHT;
YY_BREAK
-case 94:
+case 98:
YY_RULE_SETUP
-#line 256 "../SqlLexer.lpp"
+#line 262 "../SqlLexer.lpp"
+return TOKEN_ROW;
+ YY_BREAK
+case 99:
+YY_RULE_SETUP
+#line 263 "../SqlLexer.lpp"
return TOKEN_ROW_DELIMITER;
YY_BREAK
-case 95:
+case 100:
YY_RULE_SETUP
-#line 257 "../SqlLexer.lpp"
+#line 264 "../SqlLexer.lpp"
+return TOKEN_ROWS;
+ YY_BREAK
+case 101:
+YY_RULE_SETUP
+#line 265 "../SqlLexer.lpp"
return TOKEN_SECOND;
YY_BREAK
-case 96:
+case 102:
YY_RULE_SETUP
-#line 258 "../SqlLexer.lpp"
+#line 266 "../SqlLexer.lpp"
return TOKEN_SELECT;
YY_BREAK
-case 97:
+case 103:
YY_RULE_SETUP
-#line 259 "../SqlLexer.lpp"
+#line 267 "../SqlLexer.lpp"
return TOKEN_SET;
YY_BREAK
-case 98:
+case 104:
YY_RULE_SETUP
-#line 260 "../SqlLexer.lpp"
+#line 268 "../SqlLexer.lpp"
return TOKEN_SMA;
YY_BREAK
-case 99:
+case 105:
YY_RULE_SETUP
-#line 261 "../SqlLexer.lpp"
+#line 269 "../SqlLexer.lpp"
return TOKEN_SMALLINT;
YY_BREAK
-case 100:
+case 106:
YY_RULE_SETUP
-#line 262 "../SqlLexer.lpp"
+#line 270 "../SqlLexer.lpp"
return TOKEN_SUBSTRING;
YY_BREAK
-case 101:
+case 107:
YY_RULE_SETUP
-#line 263 "../SqlLexer.lpp"
+#line 271 "../SqlLexer.lpp"
return TOKEN_TABLE;
YY_BREAK
-case 102:
+case 108:
YY_RULE_SETUP
-#line 264 "../SqlLexer.lpp"
+#line 272 "../SqlLexer.lpp"
return TOKEN_THEN;
YY_BREAK
-case 103:
+case 109:
YY_RULE_SETUP
-#line 265 "../SqlLexer.lpp"
+#line 273 "../SqlLexer.lpp"
return TOKEN_TIME;
YY_BREAK
-case 104:
+case 110:
YY_RULE_SETUP
-#line 266 "../SqlLexer.lpp"
+#line 274 "../SqlLexer.lpp"
return TOKEN_TIMESTAMP;
YY_BREAK
-case 105:
+case 111:
YY_RULE_SETUP
-#line 267 "../SqlLexer.lpp"
+#line 275 "../SqlLexer.lpp"
return TOKEN_TRUE;
YY_BREAK
-case 106:
+case 112:
YY_RULE_SETUP
-#line 268 "../SqlLexer.lpp"
+#line 276 "../SqlLexer.lpp"
return TOKEN_TUPLESAMPLE;
YY_BREAK
-case 107:
+case 113:
YY_RULE_SETUP
-#line 269 "../SqlLexer.lpp"
+#line 277 "../SqlLexer.lpp"
+return TOKEN_UNBOUNDED;
+ YY_BREAK
+case 114:
+YY_RULE_SETUP
+#line 278 "../SqlLexer.lpp"
return TOKEN_UNIQUE;
YY_BREAK
-case 108:
+case 115:
YY_RULE_SETUP
-#line 270 "../SqlLexer.lpp"
+#line 279 "../SqlLexer.lpp"
return TOKEN_UPDATE;
YY_BREAK
-case 109:
+case 116:
YY_RULE_SETUP
-#line 271 "../SqlLexer.lpp"
+#line 280 "../SqlLexer.lpp"
return TOKEN_USING;
YY_BREAK
-case 110:
+case 117:
YY_RULE_SETUP
-#line 272 "../SqlLexer.lpp"
+#line 281 "../SqlLexer.lpp"
return TOKEN_VALUES;
YY_BREAK
-case 111:
+case 118:
YY_RULE_SETUP
-#line 273 "../SqlLexer.lpp"
+#line 282 "../SqlLexer.lpp"
return TOKEN_VARCHAR;
YY_BREAK
-case 112:
+case 119:
YY_RULE_SETUP
-#line 274 "../SqlLexer.lpp"
+#line 283 "../SqlLexer.lpp"
return TOKEN_WHEN;
YY_BREAK
-case 113:
+case 120:
YY_RULE_SETUP
-#line 275 "../SqlLexer.lpp"
+#line 284 "../SqlLexer.lpp"
return TOKEN_WHERE;
YY_BREAK
-case 114:
+case 121:
YY_RULE_SETUP
-#line 276 "../SqlLexer.lpp"
+#line 285 "../SqlLexer.lpp"
+return TOKEN_WINDOW;
+ YY_BREAK
+case 122:
+YY_RULE_SETUP
+#line 286 "../SqlLexer.lpp"
return TOKEN_WITH;
YY_BREAK
-case 115:
+case 123:
YY_RULE_SETUP
-#line 277 "../SqlLexer.lpp"
+#line 287 "../SqlLexer.lpp"
return TOKEN_YEAR;
YY_BREAK
-case 116:
+case 124:
YY_RULE_SETUP
-#line 278 "../SqlLexer.lpp"
+#line 288 "../SqlLexer.lpp"
return TOKEN_YEARMONTH;
YY_BREAK
-case 117:
+case 125:
YY_RULE_SETUP
-#line 280 "../SqlLexer.lpp"
+#line 290 "../SqlLexer.lpp"
return TOKEN_EQ;
YY_BREAK
-case 118:
+case 126:
YY_RULE_SETUP
-#line 281 "../SqlLexer.lpp"
+#line 291 "../SqlLexer.lpp"
return TOKEN_NEQ;
YY_BREAK
-case 119:
+case 127:
YY_RULE_SETUP
-#line 282 "../SqlLexer.lpp"
+#line 292 "../SqlLexer.lpp"
return TOKEN_NEQ;
YY_BREAK
-case 120:
+case 128:
YY_RULE_SETUP
-#line 283 "../SqlLexer.lpp"
+#line 293 "../SqlLexer.lpp"
return TOKEN_LT;
YY_BREAK
-case 121:
+case 129:
YY_RULE_SETUP
-#line 284 "../SqlLexer.lpp"
+#line 294 "../SqlLexer.lpp"
return TOKEN_GT;
YY_BREAK
-case 122:
+case 130:
YY_RULE_SETUP
-#line 285 "../SqlLexer.lpp"
+#line 295 "../SqlLexer.lpp"
return TOKEN_LEQ;
YY_BREAK
-case 123:
+case 131:
YY_RULE_SETUP
-#line 286 "../SqlLexer.lpp"
+#line 296 "../SqlLexer.lpp"
return TOKEN_GEQ;
YY_BREAK
-case 124:
+case 132:
YY_RULE_SETUP
-#line 288 "../SqlLexer.lpp"
+#line 298 "../SqlLexer.lpp"
return yytext[0];
YY_BREAK
-case 125:
+case 133:
YY_RULE_SETUP
-#line 289 "../SqlLexer.lpp"
+#line 299 "../SqlLexer.lpp"
return yytext[0];
YY_BREAK
/**
* Quoted strings. Prefacing a string with an 'e' or 'E' causes escape
* sequences to be processed (as in PostgreSQL).
**/
-case 126:
+case 134:
YY_RULE_SETUP
-#line 295 "../SqlLexer.lpp"
+#line 305 "../SqlLexer.lpp"
{
yylval->string_value_ = new quickstep::ParseString(yylloc->first_line, yylloc->first_column);
BEGIN(CONDITION_STRING_SINGLE_QUOTED_ESCAPED);
}
YY_BREAK
-case 127:
+case 135:
YY_RULE_SETUP
-#line 300 "../SqlLexer.lpp"
+#line 310 "../SqlLexer.lpp"
{
yylval->string_value_ = new quickstep::ParseString(yylloc->first_line, yylloc->first_column);
BEGIN(CONDITION_STRING_SINGLE_QUOTED);
}
YY_BREAK
-case 128:
+case 136:
YY_RULE_SETUP
-#line 305 "../SqlLexer.lpp"
+#line 315 "../SqlLexer.lpp"
{
yylval->string_value_ = new quickstep::ParseString(yylloc->first_line, yylloc->first_column);
BEGIN(CONDITION_STRING_DOUBLE_QUOTED);
@@ -2092,7 +2161,7 @@ YY_RULE_SETUP
case YY_STATE_EOF(CONDITION_STRING_SINGLE_QUOTED):
case YY_STATE_EOF(CONDITION_STRING_SINGLE_QUOTED_ESCAPED):
case YY_STATE_EOF(CONDITION_STRING_DOUBLE_QUOTED):
-#line 314 "../SqlLexer.lpp"
+#line 324 "../SqlLexer.lpp"
{
delete yylval->string_value_;
BEGIN(INITIAL);
@@ -2103,9 +2172,9 @@ case YY_STATE_EOF(CONDITION_STRING_DOUBLE_QUOTED):
/* Process escape sequences. */
-case 129:
+case 137:
YY_RULE_SETUP
-#line 324 "../SqlLexer.lpp"
+#line 334 "../SqlLexer.lpp"
{
/* Octal code */
unsigned int code;
@@ -2119,9 +2188,9 @@ YY_RULE_SETUP
yylval->string_value_->push_back(code);
}
YY_BREAK
-case 130:
+case 138:
YY_RULE_SETUP
-#line 336 "../SqlLexer.lpp"
+#line 346 "../SqlLexer.lpp"
{
/* Hexadecimal code */
unsigned int code;
@@ -2129,9 +2198,9 @@ YY_RULE_SETUP
yylval->string_value_->push_back(code);
}
YY_BREAK
-case 131:
+case 139:
YY_RULE_SETUP
-#line 342 "../SqlLexer.lpp"
+#line 352 "../SqlLexer.lpp"
{
/* A numeric escape sequence that isn't correctly specified. */
delete yylval->string_value_;
@@ -2140,58 +2209,58 @@ YY_RULE_SETUP
return TOKEN_LEX_ERROR;
}
YY_BREAK
-case 132:
+case 140:
YY_RULE_SETUP
-#line 349 "../SqlLexer.lpp"
+#line 359 "../SqlLexer.lpp"
{
/* Backspace */
yylval->string_value_->push_back('\b');
}
YY_BREAK
-case 133:
+case 141:
YY_RULE_SETUP
-#line 353 "../SqlLexer.lpp"
+#line 363 "../SqlLexer.lpp"
{
/* Form-feed */
yylval->string_value_->push_back('\f');
}
YY_BREAK
-case 134:
+case 142:
YY_RULE_SETUP
-#line 357 "../SqlLexer.lpp"
+#line 367 "../SqlLexer.lpp"
{
/* Newline */
yylval->string_value_->push_back('\n');
}
YY_BREAK
-case 135:
+case 143:
YY_RULE_SETUP
-#line 361 "../SqlLexer.lpp"
+#line 371 "../SqlLexer.lpp"
{
/* Carriage-return */
yylval->string_value_->push_back('\r');
}
YY_BREAK
-case 136:
+case 144:
YY_RULE_SETUP
-#line 365 "../SqlLexer.lpp"
+#line 375 "../SqlLexer.lpp"
{
/* Horizontal Tab */
yylval->string_value_->push_back('\t');
}
YY_BREAK
-case 137:
-/* rule 137 can match eol */
+case 145:
+/* rule 145 can match eol */
YY_RULE_SETUP
-#line 369 "../SqlLexer.lpp"
+#line 379 "../SqlLexer.lpp"
{
/* Any other character (including actual newline or carriage return) */
yylval->string_value_->push_back(yytext[1]);
}
YY_BREAK
-case 138:
+case 146:
YY_RULE_SETUP
-#line 373 "../SqlLexer.lpp"
+#line 383 "../SqlLexer.lpp"
{
/* This should only be encountered right before an EOF. */
delete yylval->string_value_;
@@ -2202,17 +2271,17 @@ YY_RULE_SETUP
YY_BREAK
-case 139:
+case 147:
YY_RULE_SETUP
-#line 383 "../SqlLexer.lpp"
+#line 393 "../SqlLexer.lpp"
{
/* Two quotes in a row become a single quote (this is specified by the SQL standard). */
yylval->string_value_->push_back('\'');
}
YY_BREAK
-case 140:
+case 148:
YY_RULE_SETUP
-#line 387 "../SqlLexer.lpp"
+#line 397 "../SqlLexer.lpp"
{
/* End string */
BEGIN(CONDITION_SQL);
@@ -2221,17 +2290,17 @@ YY_RULE_SETUP
YY_BREAK
-case 141:
+case 149:
YY_RULE_SETUP
-#line 395 "../SqlLexer.lpp"
+#line 405 "../SqlLexer.lpp"
{
/* Two quotes in a row become a single quote (this is specified by the SQL standard). */
yylval->string_value_->push_back('"');
}
YY_BREAK
-case 142:
+case 150:
YY_RULE_SETUP
-#line 399 "../SqlLexer.lpp"
+#line 409 "../SqlLexer.lpp"
{
/* End string */
BEGIN(CONDITION_SQL);
@@ -2239,94 +2308,94 @@ YY_RULE_SETUP
}
YY_BREAK
-case 143:
-/* rule 143 can match eol */
+case 151:
+/* rule 151 can match eol */
YY_RULE_SETUP
-#line 406 "../SqlLexer.lpp"
+#line 416 "../SqlLexer.lpp"
{
/* Scan up to a quote. */
yylval->string_value_->append(yytext, yyleng);
}
YY_BREAK
-case 144:
-/* rule 144 can match eol */
+case 152:
+/* rule 152 can match eol */
YY_RULE_SETUP
-#line 411 "../SqlLexer.lpp"
+#line 421 "../SqlLexer.lpp"
{
/* Scan up to a quote or escape sequence. */
yylval->string_value_->append(yytext, yyleng);
}
YY_BREAK
-case 145:
-/* rule 145 can match eol */
+case 153:
+/* rule 153 can match eol */
YY_RULE_SETUP
-#line 416 "../SqlLexer.lpp"
+#line 426 "../SqlLexer.lpp"
{
/* Scan up to a quote. */
yylval->string_value_->append(yytext, yyleng);
}
YY_BREAK
-case 146:
+case 154:
YY_RULE_SETUP
-#line 422 "../SqlLexer.lpp"
+#line 432 "../SqlLexer.lpp"
{
yylval->string_value_ = new quickstep::ParseString(
yylloc->first_line, yylloc->first_column, std::string(yytext, yyleng));
return TOKEN_NAME;
}
YY_BREAK
-case 147:
+case 155:
YY_RULE_SETUP
-#line 428 "../SqlLexer.lpp"
+#line 438 "../SqlLexer.lpp"
{
yylval->numeric_literal_value_ = new quickstep::NumericParseLiteralValue(
yylloc->first_line, yylloc->first_column, yytext);
return TOKEN_UNSIGNED_NUMVAL;
}
YY_BREAK
-case 148:
+case 156:
YY_RULE_SETUP
-#line 434 "../SqlLexer.lpp"
+#line 444 "../SqlLexer.lpp"
/* comment */
YY_BREAK
-case 149:
-/* rule 149 can match eol */
+case 157:
+/* rule 157 can match eol */
YY_RULE_SETUP
-#line 436 "../SqlLexer.lpp"
+#line 446 "../SqlLexer.lpp"
{ yycolumn = 0; }
YY_BREAK
-case 150:
+case 158:
YY_RULE_SETUP
-#line 438 "../SqlLexer.lpp"
+#line 448 "../SqlLexer.lpp"
; /* ignore white space */
YY_BREAK
/* CONDITION_SQL */
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(CONDITION_COMMAND):
case YY_STATE_EOF(CONDITION_SQL):
-#line 442 "../SqlLexer.lpp"
+#line 452 "../SqlLexer.lpp"
{
/* All conditions except for mutli-state string extracting conditions. */
BEGIN(INITIAL);
return TOKEN_EOF;
}
YY_BREAK
-case 151:
+case 159:
YY_RULE_SETUP
-#line 448 "../SqlLexer.lpp"
+#line 458 "../SqlLexer.lpp"
{
BEGIN(INITIAL);
quickstep_yyerror(NULL, yyscanner, NULL, "illegal character");
return TOKEN_LEX_ERROR;
}
YY_BREAK
-case 152:
+case 160:
YY_RULE_SETUP
-#line 454 "../SqlLexer.lpp"
+#line 464 "../SqlLexer.lpp"
YY_FATAL_ERROR( "flex scanner jammed" );
YY_BREAK
-#line 2330 "SqlLexer_gen.cpp"
+#line 2399 "SqlLexer_gen.cpp"
case YY_END_OF_BUFFER:
{
@@ -2469,9 +2538,9 @@ YY_FATAL_ERROR( "flex scanner jammed" );
static int yy_get_next_buffer (yyscan_t yyscanner)
{
struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
- char *source = yyg->yytext_ptr;
- yy_size_t number_to_move, i;
+ register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+ register char *source = yyg->yytext_ptr;
+ register int number_to_move, i;
int ret_val;
if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
@@ -2500,7 +2569,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
/* Try to read more data. */
/* First move last chars to start of buffer. */
- number_to_move = (yy_size_t) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
+ number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
for ( i = 0; i < number_to_move; ++i )
*(dest++) = *(source++);
@@ -2603,15 +2672,15 @@ static int yy_get_next_buffer (yyscan_t
<TRUNCATED>
[7/7] incubator-quickstep git commit: QUICKSTEP-20: Added parser
support for SQL window aggregation function
Posted by sh...@apache.org.
QUICKSTEP-20: Added parser support for SQL window aggregation function
Project: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/commit/00ca1e4b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/00ca1e4b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/00ca1e4b
Branch: refs/heads/SQL-window-aggregation
Commit: 00ca1e4b3a9c9838dcb9509058b8a40b0f573617
Parents: 8e825f1
Author: shixuan <sh...@wisc.edu>
Authored: Tue Jun 14 23:07:32 2016 +0000
Committer: shixuan <sh...@wisc.edu>
Committed: Fri Jun 17 20:34:24 2016 +0000
----------------------------------------------------------------------
parser/CMakeLists.txt | 11 +
parser/ParseBasicExpressions.cpp | 10 +
parser/ParseBasicExpressions.hpp | 45 +
parser/ParseSelect.hpp | 27 +-
parser/ParseWindow.hpp | 201 ++
parser/SqlLexer.lpp | 10 +
parser/SqlParser.ypp | 128 +-
parser/preprocessed/SqlLexer_gen.cpp | 1671 ++++++-------
parser/preprocessed/SqlLexer_gen.hpp | 16 +-
parser/preprocessed/SqlParser_gen.cpp | 3367 ++++++++++++++------------
parser/preprocessed/SqlParser_gen.hpp | 182 +-
parser/tests/Select.test | 120 +
query_optimizer/resolver/CMakeLists.txt | 1 +
query_optimizer/resolver/Resolver.cpp | 7 +
14 files changed, 3368 insertions(+), 2428 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/00ca1e4b/parser/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/parser/CMakeLists.txt b/parser/CMakeLists.txt
index 2488d30..55c4a67 100644
--- a/parser/CMakeLists.txt
+++ b/parser/CMakeLists.txt
@@ -113,6 +113,7 @@ add_library(quickstep_parser_ParseSubqueryExpression ParseSubqueryExpression.cpp
add_library(quickstep_parser_ParseSubqueryTableReference ParseSubqueryTableReference.cpp ParseSubqueryTableReference.hpp)
add_library(quickstep_parser_ParseTableReference ParseTableReference.cpp ParseTableReference.hpp)
add_library(quickstep_parser_ParseTreeNode ../empty_src.cpp ParseTreeNode.hpp)
+add_library(quickstep_parser_ParseWindow ../empty_src.cpp ParseWindow.hpp)
add_library(quickstep_parser_ParserUtil ParserUtil.cpp ParserUtil.hpp)
add_library(quickstep_parser_SqlParserWrapper SqlParserWrapper.cpp SqlParserWrapper.hpp)
add_library(quickstep_parser_SqlParser ${BISON_SqlParser_OUTPUTS})
@@ -135,6 +136,7 @@ target_link_libraries(quickstep_parser_ParseBasicExpressions
quickstep_parser_ParseLiteralValue
quickstep_parser_ParseString
quickstep_parser_ParseTreeNode
+ quickstep_parser_ParseWindow
quickstep_types_operations_binaryoperations_BinaryOperation
quickstep_types_operations_unaryoperations_UnaryOperation
quickstep_utility_Macros
@@ -241,6 +243,7 @@ target_link_libraries(quickstep_parser_ParseSelect
quickstep_parser_ParseSelectionClause
quickstep_parser_ParseTableReference
quickstep_parser_ParseTreeNode
+ quickstep_parser_ParseWindow
quickstep_utility_Macros
quickstep_utility_PtrList)
target_link_libraries(quickstep_parser_ParseSelectionClause
@@ -300,6 +303,12 @@ target_link_libraries(quickstep_parser_ParseTreeNode
quickstep_utility_TreeStringSerializable)
target_link_libraries(quickstep_parser_ParserUtil
quickstep_utility_SqlError)
+target_link_libraries(quickstep_parser_ParseWindow
+ quickstep_parser_ParseExpression
+ quickstep_parser_ParseOrderBy
+ quickstep_parser_ParseString
+ quickstep_parser_ParseTreeNode
+ quickstep_utility_PtrList)
target_link_libraries(quickstep_parser_SqlLexer
quickstep_parser_ParseJoinedTableReference
quickstep_parser_ParseLiteralValue
@@ -337,6 +346,7 @@ target_link_libraries(quickstep_parser_SqlParser
quickstep_parser_ParseSubqueryExpression
quickstep_parser_ParseSubqueryTableReference
quickstep_parser_ParseTableReference
+ quickstep_parser_ParseWindow
quickstep_parser_ParserUtil
quickstep_storage_StorageBlockInfo
quickstep_types_Type
@@ -419,6 +429,7 @@ target_link_libraries(quickstep_parser
quickstep_parser_ParseSubqueryTableReference
quickstep_parser_ParseTableReference
quickstep_parser_ParseTreeNode
+ quickstep_parser_ParseWindow
quickstep_parser_SqlLexer
quickstep_parser_SqlParser
quickstep_parser_SqlParserWrapper)
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/00ca1e4b/parser/ParseBasicExpressions.cpp
----------------------------------------------------------------------
diff --git a/parser/ParseBasicExpressions.cpp b/parser/ParseBasicExpressions.cpp
index a9d84ea..bbb6801 100644
--- a/parser/ParseBasicExpressions.cpp
+++ b/parser/ParseBasicExpressions.cpp
@@ -162,6 +162,16 @@ void ParseFunctionCall::getFieldStringItems(
non_container_child_field_names->push_back("");
non_container_child_fields->push_back(&argument);
}
+
+ if (window_name_ != nullptr) {
+ inline_field_names->push_back("window_name");
+ inline_field_values->push_back(window_name_->value());
+ }
+
+ if (window_ != nullptr) {
+ non_container_child_field_names->push_back("window");
+ non_container_child_fields->push_back(window_.get());
+ }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/00ca1e4b/parser/ParseBasicExpressions.hpp
----------------------------------------------------------------------
diff --git a/parser/ParseBasicExpressions.hpp b/parser/ParseBasicExpressions.hpp
index dea25d7..64ac119 100644
--- a/parser/ParseBasicExpressions.hpp
+++ b/parser/ParseBasicExpressions.hpp
@@ -30,6 +30,7 @@
#include "parser/ParseLiteralValue.hpp"
#include "parser/ParseString.hpp"
#include "parser/ParseTreeNode.hpp"
+#include "parser/ParseWindow.hpp"
#include "utility/Macros.hpp"
#include "utility/PtrList.hpp"
@@ -429,6 +430,46 @@ class ParseFunctionCall : public ParseExpression {
return star_.get();
}
+ /**
+ * @return The window name.
+ **/
+ const ParseString* window_name() const {
+ return window_name_.get();
+ }
+
+ /**
+ * @return The window.
+ **/
+ const ParseWindow* window() const {
+ return window_.get();
+ }
+
+ /**
+ * @brief Check if this function is a window aggregation function
+ *
+ * @return True if this function is a window aggregation function; false
+ * otherwise.
+ **/
+ bool isWindow() const {
+ return window_name_ != nullptr || window_ != nullptr;
+ }
+
+ /**
+ * @brief Set the window name.
+ * @param window_name The window name.
+ **/
+ void setWindowName(ParseString *window_name) {
+ window_name_.reset(window_name);
+ }
+
+ /**
+ * @brief Set the window.
+ * @param window The window.
+ **/
+ void setWindow(ParseWindow *window) {
+ window_.reset(window);
+ }
+
std::string generateName() const override;
protected:
@@ -446,6 +487,10 @@ class ParseFunctionCall : public ParseExpression {
// Either <arguments_> or <star_> is NULL.
std::unique_ptr<PtrList<ParseExpression>> arguments_;
std::unique_ptr<ParseStar> star_;
+ // A window aggregation function should have either <window_name_> or <window_> but not both.
+ // <window_name_> and <window_> will both be NULL if it is not a window function.
+ std::unique_ptr<ParseString> window_name_;
+ std::unique_ptr<ParseWindow> window_;
DISALLOW_COPY_AND_ASSIGN(ParseFunctionCall);
};
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/00ca1e4b/parser/ParseSelect.hpp
----------------------------------------------------------------------
diff --git a/parser/ParseSelect.hpp b/parser/ParseSelect.hpp
index 81e9ab8..930a215 100644
--- a/parser/ParseSelect.hpp
+++ b/parser/ParseSelect.hpp
@@ -1,6 +1,8 @@
/**
* Copyright 2011-2015 Quickstep Technologies LLC.
* Copyright 2015 Pivotal Software, Inc.
+ * Copyright 2016, Quickstep Research Group, Computer Sciences Department,
+ * University of Wisconsin\u2014Madison.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -30,6 +32,7 @@
#include "parser/ParseSelectionClause.hpp"
#include "parser/ParseTableReference.hpp"
#include "parser/ParseTreeNode.hpp"
+#include "parser/ParseWindow.hpp"
#include "utility/Macros.hpp"
#include "utility/PtrList.hpp"
@@ -68,7 +71,8 @@ class ParseSelect : public ParseTreeNode {
ParseGroupBy *group_by,
ParseHaving *having,
ParseOrderBy *order_by,
- ParseLimit *limit)
+ ParseLimit *limit,
+ PtrList<ParseWindow> *window_list)
: ParseTreeNode(line_number, column_number),
selection_(selection),
from_list_(from_list),
@@ -76,7 +80,8 @@ class ParseSelect : public ParseTreeNode {
group_by_(group_by),
having_(having),
order_by_(order_by),
- limit_(limit) {
+ limit_(limit),
+ window_list_(window_list) {
}
~ParseSelect() override {
@@ -152,6 +157,13 @@ class ParseSelect : public ParseTreeNode {
*/
const ParseLimit* limit() const { return limit_.get(); }
+ /**
+ * @brief Gets the parsed WINDOW.
+ *
+ * @return The parsed WINDOW.
+ */
+ const PtrList<ParseWindow>* window_list() const { return window_list_.get(); }
+
protected:
void getFieldStringItems(
std::vector<std::string> *inline_field_names,
@@ -171,7 +183,7 @@ class ParseSelect : public ParseTreeNode {
if (from_list_ != nullptr) {
container_child_field_names->push_back("from_clause");
container_child_fields->emplace_back();
- for (const ParseTableReference& from_item : *from_list_) {
+ for (const ParseTableReference &from_item : *from_list_) {
container_child_fields->back().push_back(&from_item);
}
}
@@ -195,6 +207,14 @@ class ParseSelect : public ParseTreeNode {
non_container_child_field_names->push_back("limit");
non_container_child_fields->push_back(limit_.get());
}
+
+ if (window_list_ != nullptr) {
+ container_child_field_names->push_back("window_list");
+ container_child_fields->emplace_back();
+ for (const ParseWindow &window : *window_list_) {
+ container_child_fields->back().push_back(&window);
+ }
+ }
}
private:
@@ -205,6 +225,7 @@ class ParseSelect : public ParseTreeNode {
std::unique_ptr<ParseHaving> having_;
std::unique_ptr<ParseOrderBy> order_by_;
std::unique_ptr<ParseLimit> limit_;
+ std::unique_ptr<PtrList<ParseWindow>> window_list_;
DISALLOW_COPY_AND_ASSIGN(ParseSelect);
};
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/00ca1e4b/parser/ParseWindow.hpp
----------------------------------------------------------------------
diff --git a/parser/ParseWindow.hpp b/parser/ParseWindow.hpp
new file mode 100644
index 0000000..7b41683
--- /dev/null
+++ b/parser/ParseWindow.hpp
@@ -0,0 +1,201 @@
+/**
+ * Copyright 2016, Quickstep Research Group, Computer Sciences Department,
+ * University of Wisconsin\u2014Madison.
+ *
+ * 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.
+ **/
+
+#ifndef QUICKSTEP_PARSER_PARSE_WINDOW_HPP_
+#define QUICKSTEP_PARSER_PARSE_WINDOW_HPP_
+
+#include <cstdint>
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "parser/ParseExpression.hpp"
+#include "parser/ParseOrderBy.hpp"
+#include "parser/ParseString.hpp"
+#include "parser/ParseTreeNode.hpp"
+#include "utility/PtrList.hpp"
+
+namespace quickstep {
+
+/**
+ * @brief The information of the how the framing in the window is defined
+ **/
+struct ParseFrameInfo : ParseTreeNode {
+ /**
+ * @brief Constructor.
+ * @param row True if the frame mode is ROW, false if it is RANGE.
+ * @param num_pre The number of rows/value of range that is preceding
+ * the current row in the frame.
+ * @param num_follow The number of rows/value of range that is following
+ * the current row in the frame.
+ **/
+ ParseFrameInfo(const int line_number,
+ const int column_number,
+ const bool is_row_in,
+ const std::int64_t num_preceding_in,
+ const std::int64_t num_following_in)
+ : ParseTreeNode(line_number, column_number),
+ is_row(is_row_in),
+ num_preceding(num_preceding_in),
+ num_following(num_following_in) {
+ }
+
+ std::string getName() const override { return "FrameInfo"; }
+
+ const bool is_row;
+ const std::int64_t num_preceding;
+ const std::int64_t num_following;
+
+ protected:
+ void getFieldStringItems(
+ std::vector<std::string> *inline_field_names,
+ std::vector<std::string> *inline_field_values,
+ std::vector<std::string> *non_container_child_field_names,
+ std::vector<const ParseTreeNode *> *non_container_child_fields,
+ std::vector<std::string> *container_child_field_names,
+ std::vector<std::vector<const ParseTreeNode *>> *container_child_fields)
+ const override {
+ inline_field_names->push_back("frame_mode");
+ inline_field_values->push_back(is_row ? "row" : "range");
+
+ inline_field_names->push_back("num_preceding");
+ inline_field_values->push_back(std::to_string(num_preceding));
+
+ inline_field_names->push_back("num_following");
+ inline_field_values->push_back(std::to_string(num_following));
+ }
+};
+
+/**
+ * @brief The parsed representation of a WINDOW definition.
+ **/
+class ParseWindow : public ParseTreeNode {
+ public:
+ /**
+ * @brief Constructor.
+ * @param line_number The line number of the first token of this WINDOW clause
+ * in the SQL statement.
+ * @param column_number The column number of the first token of this WINDOW
+ * clause in the SQL statement.
+ * @param partition_by_expressions Optional grouping expressions that might be
+ * specified in the SQL statement. Similar to
+ * GROUP BY with regular aggregates.
+ * @param order_by_expressions Optional ordering expressions that might be
+ * specified in the SQL statement.
+ * @param frame_info The information about framing.
+ **/
+ ParseWindow(const int line_number,
+ const int column_number,
+ PtrList<ParseExpression> *partition_by_expressions,
+ PtrList<ParseOrderByItem> *order_by_expressions,
+ ParseFrameInfo *frame_info)
+ : ParseTreeNode(line_number, column_number),
+ partition_by_expressions_(partition_by_expressions),
+ order_by_expressions_(order_by_expressions),
+ frame_info_(frame_info) {
+ }
+
+ /**
+ * @brief Destructor.
+ **/
+ ~ParseWindow() override {}
+
+ std::string getName() const override {
+ return "window";
+ }
+
+ /**
+ * @brief Grouping expressions.
+ **/
+ const PtrList<ParseExpression>* partition_by_expressions() const {
+ return partition_by_expressions_.get();
+ }
+
+ /**
+ * @brief Ordering expressions.
+ **/
+ const PtrList<ParseOrderByItem>* order_by_expressions() const {
+ return order_by_expressions_.get();
+ }
+
+ /**
+ * @brief Frame information.
+ **/
+ const ParseFrameInfo* frame_info() const {
+ return frame_info_.get();
+ }
+
+ /**
+ * @return The window name.
+ */
+ const ParseString* name() const {
+ return name_.get();
+ }
+
+ /**
+ * @brief Set the name of the window.
+ * @param name The name of the window.
+ **/
+ void setName(ParseString *name) {
+ name_.reset(name);
+ }
+
+ protected:
+ void getFieldStringItems(
+ std::vector<std::string> *inline_field_names,
+ std::vector<std::string> *inline_field_values,
+ std::vector<std::string> *non_container_child_field_names,
+ std::vector<const ParseTreeNode *> *non_container_child_fields,
+ std::vector<std::string> *container_child_field_names,
+ std::vector<std::vector<const ParseTreeNode *>> *container_child_fields) const override {
+ if (name_ != nullptr) {
+ inline_field_names->push_back("window_name");
+ inline_field_values->push_back(name_->value());
+ }
+
+ container_child_field_names->push_back("partition_by");
+ container_child_fields->emplace_back();
+ if (partition_by_expressions_ != nullptr) {
+ for (const auto &e : *partition_by_expressions_) {
+ container_child_fields->back().emplace_back(&e);
+ }
+ }
+
+ container_child_field_names->push_back("order_by");
+ container_child_fields->emplace_back();
+ if (order_by_expressions_ != nullptr) {
+ for (const auto &e : *order_by_expressions_) {
+ container_child_fields->back().emplace_back(&e);
+ }
+ }
+
+ if (frame_info_ != nullptr) {
+ non_container_child_field_names->push_back("frame_info");
+ non_container_child_fields->push_back(frame_info_.get());
+ }
+ }
+
+ private:
+ std::unique_ptr<PtrList<ParseExpression>> partition_by_expressions_;
+ std::unique_ptr<PtrList<ParseOrderByItem>> order_by_expressions_;
+ std::unique_ptr<ParseFrameInfo> frame_info_;
+ std::unique_ptr<ParseString> name_;
+};
+
+} // namespace quickstep
+
+#endif // QUICKSTEP_PARSER_PARSE_WINDOW_HPP_
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/00ca1e4b/parser/SqlLexer.lpp
----------------------------------------------------------------------
diff --git a/parser/SqlLexer.lpp b/parser/SqlLexer.lpp
index ac1c708..ee34400 100644
--- a/parser/SqlLexer.lpp
+++ b/parser/SqlLexer.lpp
@@ -48,6 +48,7 @@ class ParseCommand;
struct ParseCopyFromParams;
class ParseDataType;
class ParseExpression;
+struct ParseFrameInfo;
class ParseFunctionCall;
class ParseGroupBy;
class ParseHaving;
@@ -86,6 +87,7 @@ class ParseSubqueryExpression;
class ParseSubqueryTableReference;
class ParseTableReference;
class ParseTableReferenceSignature;
+class ParseWindow;
class Type;
class UnaryOperation;
@@ -189,6 +191,7 @@ unsigned_numeric_literal {exact_numeric_literal}|{approximate_numeric_literal}
"constraint" return TOKEN_CONSTRAINT;
"copy" return TOKEN_COPY;
"create" return TOKEN_CREATE;
+ "current" return TOKEN_CURRENT;
"date" return TOKEN_DATE;
"datetime" return TOKEN_DATETIME;
"day" return TOKEN_DAY;
@@ -209,6 +212,7 @@ unsigned_numeric_literal {exact_numeric_literal}|{approximate_numeric_literal}
"false" return TOKEN_FALSE;
"first" return TOKEN_FIRST;
"float" return TOKEN_FLOAT;
+ "following" return TOKEN_FOLLOWING;
"for" return TOKEN_FOR;
"foreign" return TOKEN_FOREIGN;
"from" return TOKEN_FROM;
@@ -243,9 +247,11 @@ unsigned_numeric_literal {exact_numeric_literal}|{approximate_numeric_literal}
"or" return TOKEN_OR;
"order" return TOKEN_ORDER;
"outer" return TOKEN_OUTER;
+ "over" return TOKEN_OVER;
"partition" return TOKEN_PARTITION;
"partitions" return TOKEN_PARTITIONS;
"percent" return TOKEN_PERCENT;
+ "preceding" return TOKEN_PRECEDING;
"primary" return TOKEN_PRIMARY;
"quit" return TOKEN_QUIT;
"range" return TOKEN_RANGE;
@@ -253,7 +259,9 @@ unsigned_numeric_literal {exact_numeric_literal}|{approximate_numeric_literal}
"references" return TOKEN_REFERENCES;
"regexp" return TOKEN_REGEXP;
"right" return TOKEN_RIGHT;
+ "row" return TOKEN_ROW;
"row_delimiter" return TOKEN_ROW_DELIMITER;
+ "rows" return TOKEN_ROWS;
"second" return TOKEN_SECOND;
"select" return TOKEN_SELECT;
"set" return TOKEN_SET;
@@ -266,6 +274,7 @@ unsigned_numeric_literal {exact_numeric_literal}|{approximate_numeric_literal}
"timestamp" return TOKEN_TIMESTAMP;
"true" return TOKEN_TRUE;
"tuplesample" return TOKEN_TUPLESAMPLE;
+ "unbounded" return TOKEN_UNBOUNDED;
"unique" return TOKEN_UNIQUE;
"update" return TOKEN_UPDATE;
"using" return TOKEN_USING;
@@ -273,6 +282,7 @@ unsigned_numeric_literal {exact_numeric_literal}|{approximate_numeric_literal}
"varchar" return TOKEN_VARCHAR;
"when" return TOKEN_WHEN;
"where" return TOKEN_WHERE;
+ "window" return TOKEN_WINDOW;
"with" return TOKEN_WITH;
"year" return TOKEN_YEAR;
"yearmonth" return TOKEN_YEARMONTH;
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/00ca1e4b/parser/SqlParser.ypp
----------------------------------------------------------------------
diff --git a/parser/SqlParser.ypp b/parser/SqlParser.ypp
index b07c48e..81fa3ae 100644
--- a/parser/SqlParser.ypp
+++ b/parser/SqlParser.ypp
@@ -95,6 +95,7 @@ typedef struct YYLTYPE {
#include "parser/ParseSubqueryExpression.hpp"
#include "parser/ParseSubqueryTableReference.hpp"
#include "parser/ParseTableReference.hpp"
+#include "parser/ParseWindow.hpp"
#include "storage/StorageBlockInfo.hpp"
#include "types/Type.hpp"
#include "types/TypeFactory.hpp"
@@ -200,6 +201,12 @@ typedef void* yyscan_t;
quickstep::ParseSample *opt_sample_clause_;
+ quickstep::PtrList<quickstep::ParseWindow> *opt_window_clause_;
+ quickstep::ParseWindow *window_definition_;
+ quickstep::PtrList<quickstep::ParseExpression> *window_partition_by_list_;
+ quickstep::PtrList<quickstep::ParseOrderByItem> *window_order_by_list_;
+ quickstep::ParseFrameInfo *window_frame_info_;
+
quickstep::PtrList<quickstep::ParseOrderByItem> *order_commalist_;
quickstep::ParseOrderByItem *order_item_;
@@ -254,6 +261,7 @@ void NotSupported(const YYLTYPE *location, yyscan_t yyscanner, const std::string
%token TOKEN_CONSTRAINT;
%token TOKEN_COPY;
%token TOKEN_CREATE;
+%token TOKEN_CURRENT;
%token TOKEN_DATE;
%token TOKEN_DATETIME;
%token TOKEN_DAY;
@@ -273,6 +281,7 @@ void NotSupported(const YYLTYPE *location, yyscan_t yyscanner, const std::string
%token TOKEN_FALSE;
%token TOKEN_FIRST;
%token TOKEN_FLOAT;
+%token TOKEN_FOLLOWING;
%token TOKEN_FOR;
%token TOKEN_FOREIGN;
%token TOKEN_FROM;
@@ -304,9 +313,11 @@ void NotSupported(const YYLTYPE *location, yyscan_t yyscanner, const std::string
%token TOKEN_OR;
%token TOKEN_ORDER;
%token TOKEN_OUTER;
+%token TOKEN_OVER;
%token TOKEN_PARTITION;
%token TOKEN_PARTITIONS;
%token TOKEN_PERCENT;
+%token TOKEN_PRECEDING;
%token TOKEN_PRIMARY;
%token TOKEN_QUIT;
%token TOKEN_RANGE;
@@ -314,7 +325,9 @@ void NotSupported(const YYLTYPE *location, yyscan_t yyscanner, const std::string
%token TOKEN_REFERENCES;
%token TOKEN_REGEXP;
%token TOKEN_RIGHT;
+%token TOKEN_ROW;
%token TOKEN_ROW_DELIMITER;
+%token TOKEN_ROWS;
%token TOKEN_SECOND;
%token TOKEN_SELECT;
%token TOKEN_SET;
@@ -327,6 +340,7 @@ void NotSupported(const YYLTYPE *location, yyscan_t yyscanner, const std::string
%token TOKEN_TIMESTAMP;
%token TOKEN_TRUE;
%token TOKEN_TUPLESAMPLE;
+%token TOKEN_UNBOUNDED;
%token TOKEN_UNIQUE;
%token TOKEN_UPDATE;
%token TOKEN_USING;
@@ -334,6 +348,7 @@ void NotSupported(const YYLTYPE *location, yyscan_t yyscanner, const std::string
%token TOKEN_VARCHAR;
%token TOKEN_WHEN;
%token TOKEN_WHERE;
+%token TOKEN_WINDOW;
%token TOKEN_WITH;
%token TOKEN_YEAR;
%token TOKEN_YEARMONTH;
@@ -348,10 +363,15 @@ void NotSupported(const YYLTYPE *location, yyscan_t yyscanner, const std::string
%type <boolean_value_>
boolean_value
+ frame_mode
%type <literal_value_>
literal_value
+%type <numeric_literal_value_>
+ frame_preceding
+ frame_following
+
%type <literal_value_list_>
literal_value_commalist
@@ -546,6 +566,23 @@ void NotSupported(const YYLTYPE *location, yyscan_t yyscanner, const std::string
%type <opt_sample_clause_>
opt_sample_clause
+%type <opt_window_clause_>
+ opt_window_clause
+ window_declaration_list
+
+%type <window_definition_>
+ window_declaration
+ window_definition
+
+%type <window_partition_by_list_>
+ opt_window_partition
+
+%type <window_order_by_list_>
+ opt_window_order
+
+%type <window_frame_info_>
+ opt_window_frame
+
%type <with_list_>
with_clause
with_list
@@ -1136,8 +1173,8 @@ with_list_element:
select_query:
TOKEN_SELECT opt_all_distinct selection from_clause opt_where_clause opt_group_by_clause opt_having_clause
- opt_order_by_clause opt_limit_clause {
- $$ = new quickstep::ParseSelect(@1.first_line, @1.first_column, $3, $4, $5, $6, $7, $8, $9);
+ opt_order_by_clause opt_limit_clause opt_window_clause {
+ $$ = new quickstep::ParseSelect(@1.first_line, @1.first_column, $3, $4, $5, $6, $7, $8, $9, $10);
};
opt_all_distinct:
@@ -1332,6 +1369,85 @@ opt_limit_clause:
}
}
+opt_window_clause:
+ {
+ $$ = nullptr;
+ }
+ | window_declaration_list {
+ $$ = $1;
+ }
+
+window_declaration_list:
+ window_declaration {
+ $$ = new quickstep::PtrList<quickstep::ParseWindow>();
+ $$->push_back($1);
+ }
+ | window_declaration_list window_declaration {
+ $$ = $1;
+ $$->push_back($2);
+ }
+
+window_declaration:
+ TOKEN_WINDOW any_name TOKEN_AS '(' window_definition ')' {
+ $$ = $5;
+ $$->setName($2);
+ }
+
+window_definition:
+ opt_window_partition opt_window_order opt_window_frame {
+ $$ = new quickstep::ParseWindow(@1.first_line, @1.first_column, $1, $2, $3);
+ };
+
+opt_window_partition:
+ {
+ $$ = nullptr;
+ }
+ | TOKEN_PARTITION TOKEN_BY expression_list {
+ $$ = $3;
+ };
+
+opt_window_order:
+ {
+ $$ = nullptr;
+ }
+ | TOKEN_ORDER TOKEN_BY order_commalist {
+ $$ = $3;
+ };
+
+opt_window_frame:
+ {
+ $$ = nullptr;
+ }
+ | frame_mode TOKEN_BETWEEN frame_preceding TOKEN_AND frame_following {
+ $$ = new quickstep::ParseFrameInfo(@1.first_line, @1.first_column, $1, $3->long_value(), $5->long_value());
+ };
+
+frame_mode:
+ TOKEN_ROWS {
+ $$ = true;
+ }
+ | TOKEN_RANGE {
+ $$ = false;
+ };
+
+frame_preceding:
+ TOKEN_UNSIGNED_NUMVAL TOKEN_PRECEDING
+ | TOKEN_UNBOUNDED TOKEN_PRECEDING {
+ $$ = new quickstep::NumericParseLiteralValue(@1.first_line, @1.first_column, "-1");
+ }
+ | TOKEN_CURRENT TOKEN_ROW {
+ $$ = new quickstep::NumericParseLiteralValue(@1.first_line, @1.first_column, "0");
+ };
+
+frame_following:
+ TOKEN_UNSIGNED_NUMVAL TOKEN_FOLLOWING
+ | TOKEN_UNBOUNDED TOKEN_FOLLOWING {
+ $$ = new quickstep::NumericParseLiteralValue(@1.first_line, @1.first_column, "-1");
+ }
+ | TOKEN_CURRENT TOKEN_ROW {
+ $$ = new quickstep::NumericParseLiteralValue(@1.first_line, @1.first_column, "0");
+ };
+
order_commalist:
order_item {
$$ = new quickstep::PtrList<quickstep::ParseOrderByItem>();
@@ -1505,6 +1621,14 @@ expression_base:
| function_call {
$$ = $1;
}
+ | function_call TOKEN_OVER any_name {
+ $1->setWindowName($3);
+ $$ = $1;
+ }
+ | function_call TOKEN_OVER '(' window_definition ')' {
+ $1->setWindow($4);
+ $$ = $1;
+ }
| extract_function {
$$ = $1;
}
[4/7] incubator-quickstep git commit: QUICKSTEP-20: Added parser
support for SQL window aggregation function
Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/00ca1e4b/parser/preprocessed/SqlParser_gen.cpp
----------------------------------------------------------------------
diff --git a/parser/preprocessed/SqlParser_gen.cpp b/parser/preprocessed/SqlParser_gen.cpp
index 038db14..c02baf4 100644
--- a/parser/preprocessed/SqlParser_gen.cpp
+++ b/parser/preprocessed/SqlParser_gen.cpp
@@ -131,6 +131,7 @@ typedef struct YYLTYPE {
#include "parser/ParseSubqueryExpression.hpp"
#include "parser/ParseSubqueryTableReference.hpp"
#include "parser/ParseTableReference.hpp"
+#include "parser/ParseWindow.hpp"
#include "storage/StorageBlockInfo.hpp"
#include "types/Type.hpp"
#include "types/TypeFactory.hpp"
@@ -150,7 +151,7 @@ typedef struct YYLTYPE {
// Needed for Bison 2.6 and higher, which do not automatically provide this typedef.
typedef void* yyscan_t;
-#line 154 "SqlParser_gen.cpp" /* yacc.c:339 */
+#line 155 "SqlParser_gen.cpp" /* yacc.c:339 */
# ifndef YY_NULLPTR
# if defined __cplusplus && 201103L <= __cplusplus
@@ -225,88 +226,96 @@ extern int quickstep_yydebug;
TOKEN_CONSTRAINT = 295,
TOKEN_COPY = 296,
TOKEN_CREATE = 297,
- TOKEN_DATE = 298,
- TOKEN_DATETIME = 299,
- TOKEN_DAY = 300,
- TOKEN_DECIMAL = 301,
- TOKEN_DEFAULT = 302,
- TOKEN_DELETE = 303,
- TOKEN_DELIMITER = 304,
- TOKEN_DESC = 305,
- TOKEN_DISTINCT = 306,
- TOKEN_DOUBLE = 307,
- TOKEN_DROP = 308,
- TOKEN_ELSE = 309,
- TOKEN_END = 310,
- TOKEN_ESCAPE_STRINGS = 311,
- TOKEN_EXISTS = 312,
- TOKEN_EXTRACT = 313,
- TOKEN_FALSE = 314,
- TOKEN_FIRST = 315,
- TOKEN_FLOAT = 316,
- TOKEN_FOR = 317,
- TOKEN_FOREIGN = 318,
- TOKEN_FROM = 319,
- TOKEN_FULL = 320,
- TOKEN_GROUP = 321,
- TOKEN_HASH = 322,
- TOKEN_HAVING = 323,
- TOKEN_HOUR = 324,
- TOKEN_IN = 325,
- TOKEN_INDEX = 326,
- TOKEN_INNER = 327,
- TOKEN_INSERT = 328,
- TOKEN_INTEGER = 329,
- TOKEN_INTERVAL = 330,
- TOKEN_INTO = 331,
- TOKEN_JOIN = 332,
- TOKEN_KEY = 333,
- TOKEN_LAST = 334,
- TOKEN_LEFT = 335,
- TOKEN_LIMIT = 336,
- TOKEN_LONG = 337,
- TOKEN_MINUTE = 338,
- TOKEN_MONTH = 339,
- TOKEN_NULL = 340,
- TOKEN_NULLS = 341,
- TOKEN_OFF = 342,
- TOKEN_ON = 343,
- TOKEN_ORDER = 344,
- TOKEN_OUTER = 345,
- TOKEN_PARTITION = 346,
- TOKEN_PARTITIONS = 347,
- TOKEN_PERCENT = 348,
- TOKEN_PRIMARY = 349,
- TOKEN_QUIT = 350,
- TOKEN_RANGE = 351,
- TOKEN_REAL = 352,
- TOKEN_REFERENCES = 353,
- TOKEN_RIGHT = 354,
- TOKEN_ROW_DELIMITER = 355,
- TOKEN_SECOND = 356,
- TOKEN_SELECT = 357,
- TOKEN_SET = 358,
- TOKEN_SMA = 359,
- TOKEN_SMALLINT = 360,
- TOKEN_SUBSTRING = 361,
- TOKEN_TABLE = 362,
- TOKEN_THEN = 363,
- TOKEN_TIME = 364,
- TOKEN_TIMESTAMP = 365,
- TOKEN_TRUE = 366,
- TOKEN_TUPLESAMPLE = 367,
- TOKEN_UNIQUE = 368,
- TOKEN_UPDATE = 369,
- TOKEN_USING = 370,
- TOKEN_VALUES = 371,
- TOKEN_VARCHAR = 372,
- TOKEN_WHEN = 373,
- TOKEN_WHERE = 374,
- TOKEN_WITH = 375,
- TOKEN_YEAR = 376,
- TOKEN_YEARMONTH = 377,
- TOKEN_EOF = 378,
- TOKEN_LEX_ERROR = 379
+ TOKEN_CURRENT = 298,
+ TOKEN_DATE = 299,
+ TOKEN_DATETIME = 300,
+ TOKEN_DAY = 301,
+ TOKEN_DECIMAL = 302,
+ TOKEN_DEFAULT = 303,
+ TOKEN_DELETE = 304,
+ TOKEN_DELIMITER = 305,
+ TOKEN_DESC = 306,
+ TOKEN_DISTINCT = 307,
+ TOKEN_DOUBLE = 308,
+ TOKEN_DROP = 309,
+ TOKEN_ELSE = 310,
+ TOKEN_END = 311,
+ TOKEN_ESCAPE_STRINGS = 312,
+ TOKEN_EXISTS = 313,
+ TOKEN_EXTRACT = 314,
+ TOKEN_FALSE = 315,
+ TOKEN_FIRST = 316,
+ TOKEN_FLOAT = 317,
+ TOKEN_FOLLOWING = 318,
+ TOKEN_FOR = 319,
+ TOKEN_FOREIGN = 320,
+ TOKEN_FROM = 321,
+ TOKEN_FULL = 322,
+ TOKEN_GROUP = 323,
+ TOKEN_HASH = 324,
+ TOKEN_HAVING = 325,
+ TOKEN_HOUR = 326,
+ TOKEN_IN = 327,
+ TOKEN_INDEX = 328,
+ TOKEN_INNER = 329,
+ TOKEN_INSERT = 330,
+ TOKEN_INTEGER = 331,
+ TOKEN_INTERVAL = 332,
+ TOKEN_INTO = 333,
+ TOKEN_JOIN = 334,
+ TOKEN_KEY = 335,
+ TOKEN_LAST = 336,
+ TOKEN_LEFT = 337,
+ TOKEN_LIMIT = 338,
+ TOKEN_LONG = 339,
+ TOKEN_MINUTE = 340,
+ TOKEN_MONTH = 341,
+ TOKEN_NULL = 342,
+ TOKEN_NULLS = 343,
+ TOKEN_OFF = 344,
+ TOKEN_ON = 345,
+ TOKEN_ORDER = 346,
+ TOKEN_OUTER = 347,
+ TOKEN_OVER = 348,
+ TOKEN_PARTITION = 349,
+ TOKEN_PARTITIONS = 350,
+ TOKEN_PERCENT = 351,
+ TOKEN_PRECEDING = 352,
+ TOKEN_PRIMARY = 353,
+ TOKEN_QUIT = 354,
+ TOKEN_RANGE = 355,
+ TOKEN_REAL = 356,
+ TOKEN_REFERENCES = 357,
+ TOKEN_RIGHT = 358,
+ TOKEN_ROW = 359,
+ TOKEN_ROW_DELIMITER = 360,
+ TOKEN_ROWS = 361,
+ TOKEN_SECOND = 362,
+ TOKEN_SELECT = 363,
+ TOKEN_SET = 364,
+ TOKEN_SMA = 365,
+ TOKEN_SMALLINT = 366,
+ TOKEN_SUBSTRING = 367,
+ TOKEN_TABLE = 368,
+ TOKEN_THEN = 369,
+ TOKEN_TIME = 370,
+ TOKEN_TIMESTAMP = 371,
+ TOKEN_TRUE = 372,
+ TOKEN_TUPLESAMPLE = 373,
+ TOKEN_UNBOUNDED = 374,
+ TOKEN_UNIQUE = 375,
+ TOKEN_UPDATE = 376,
+ TOKEN_USING = 377,
+ TOKEN_VALUES = 378,
+ TOKEN_VARCHAR = 379,
+ TOKEN_WHEN = 380,
+ TOKEN_WHERE = 381,
+ TOKEN_WINDOW = 382,
+ TOKEN_WITH = 383,
+ TOKEN_YEAR = 384,
+ TOKEN_YEARMONTH = 385,
+ TOKEN_EOF = 386,
+ TOKEN_LEX_ERROR = 387
};
#endif
@@ -315,7 +324,7 @@ extern int quickstep_yydebug;
union YYSTYPE
{
-#line 118 "../SqlParser.ypp" /* yacc.c:355 */
+#line 119 "../SqlParser.ypp" /* yacc.c:355 */
quickstep::ParseString *string_value_;
@@ -401,13 +410,19 @@ union YYSTYPE
quickstep::ParseSample *opt_sample_clause_;
+ quickstep::PtrList<quickstep::ParseWindow> *opt_window_clause_;
+ quickstep::ParseWindow *window_definition_;
+ quickstep::PtrList<quickstep::ParseExpression> *window_partition_by_list_;
+ quickstep::PtrList<quickstep::ParseOrderByItem> *window_order_by_list_;
+ quickstep::ParseFrameInfo *window_frame_info_;
+
quickstep::PtrList<quickstep::ParseOrderByItem> *order_commalist_;
quickstep::ParseOrderByItem *order_item_;
quickstep::PtrVector<quickstep::ParseSubqueryTableReference> *with_list_;
quickstep::ParseSubqueryTableReference *with_list_element_;
-#line 411 "SqlParser_gen.cpp" /* yacc.c:355 */
+#line 426 "SqlParser_gen.cpp" /* yacc.c:355 */
};
typedef union YYSTYPE YYSTYPE;
@@ -436,13 +451,13 @@ int quickstep_yyparse (yyscan_t yyscanner, quickstep::ParseStatement **parsedSta
#endif /* !YY_QUICKSTEP_YY_SQLPARSER_GEN_HPP_INCLUDED */
/* Copy the second part of user declarations. */
-#line 210 "../SqlParser.ypp" /* yacc.c:358 */
+#line 217 "../SqlParser.ypp" /* yacc.c:358 */
/* This header needs YYSTYPE, which is defined by the %union directive above */
#include "SqlLexer_gen.hpp"
void NotSupported(const YYLTYPE *location, yyscan_t yyscanner, const std::string &feature);
-#line 446 "SqlParser_gen.cpp" /* yacc.c:358 */
+#line 461 "SqlParser_gen.cpp" /* yacc.c:358 */
#ifdef short
# undef short
@@ -686,21 +701,21 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 47
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 1215
+#define YYLAST 1347
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 136
+#define YYNTOKENS 144
/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 96
+#define YYNNTS 106
/* YYNRULES -- Number of rules. */
-#define YYNRULES 265
+#define YYNRULES 287
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 488
+#define YYNSTATES 531
/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
by yylex, with out-of-bounds checking. */
#define YYUNDEFTOK 2
-#define YYMAXUTOK 379
+#define YYMAXUTOK 387
#define YYTRANSLATE(YYX) \
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -710,11 +725,11 @@ union yyalloc
static const yytype_uint8 yytranslate[] =
{
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 131, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 139, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 135, 2, 2,
- 132, 133, 23, 21, 134, 22, 27, 24, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 130,
+ 2, 2, 2, 2, 2, 2, 2, 143, 2, 2,
+ 140, 141, 23, 21, 142, 22, 27, 24, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 138,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -746,40 +761,43 @@ static const yytype_uint8 yytranslate[] =
90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 125, 126, 127, 128, 129
+ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137
};
#if YYDEBUG
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 585, 585, 589, 593, 597, 601, 604, 611, 614,
- 617, 620, 623, 626, 629, 632, 635, 638, 644, 650,
- 657, 663, 670, 679, 684, 693, 698, 703, 707, 713,
- 718, 721, 724, 729, 732, 735, 738, 741, 744, 747,
- 750, 753, 756, 768, 771, 774, 792, 812, 815, 818,
- 823, 828, 834, 840, 849, 853, 859, 862, 867, 872,
- 877, 884, 891, 895, 901, 904, 909, 912, 917, 920,
- 925, 928, 947, 951, 957, 961, 967, 970, 973, 978,
- 981, 988, 993, 1004, 1009, 1013, 1017, 1023, 1026, 1032,
- 1040, 1043, 1046, 1052, 1057, 1060, 1065, 1069, 1073, 1077,
- 1083, 1088, 1093, 1097, 1103, 1109, 1112, 1117, 1122, 1126,
- 1132, 1138, 1144, 1147, 1151, 1157, 1160, 1165, 1169, 1175,
- 1178, 1181, 1186, 1191, 1196, 1199, 1202, 1207, 1210, 1213,
- 1216, 1219, 1222, 1225, 1228, 1233, 1236, 1241, 1245, 1249,
- 1252, 1256, 1259, 1264, 1267, 1272, 1275, 1280, 1284, 1290,
- 1293, 1298, 1301, 1306, 1309, 1314, 1317, 1336, 1340, 1346,
- 1353, 1356, 1359, 1364, 1367, 1370, 1376, 1379, 1384, 1389,
- 1398, 1403, 1412, 1417, 1420, 1425, 1428, 1433, 1439, 1445,
- 1448, 1451, 1454, 1457, 1460, 1466, 1475, 1478, 1483, 1486,
- 1491, 1494, 1499, 1502, 1505, 1508, 1511, 1514, 1517, 1520,
- 1525, 1529, 1533, 1536, 1541, 1546, 1550, 1556, 1559, 1564,
- 1568, 1574, 1579, 1583, 1589, 1594, 1597, 1602, 1606, 1612,
- 1615, 1618, 1621, 1633, 1637, 1656, 1669, 1684, 1687, 1690,
- 1693, 1696, 1699, 1704, 1708, 1714, 1717, 1722, 1726, 1733,
- 1736, 1739, 1742, 1745, 1748, 1751, 1754, 1757, 1760, 1765,
- 1776, 1779, 1784, 1787, 1790, 1796, 1800, 1806, 1809, 1817,
- 1820, 1823, 1826, 1832, 1837, 1842
+ 0, 622, 622, 626, 630, 634, 638, 641, 648, 651,
+ 654, 657, 660, 663, 666, 669, 672, 675, 681, 687,
+ 694, 700, 707, 716, 721, 730, 735, 740, 744, 750,
+ 755, 758, 761, 766, 769, 772, 775, 778, 781, 784,
+ 787, 790, 793, 805, 808, 811, 829, 849, 852, 855,
+ 860, 865, 871, 877, 886, 890, 896, 899, 904, 909,
+ 914, 921, 928, 932, 938, 941, 946, 949, 954, 957,
+ 962, 965, 984, 988, 994, 998, 1004, 1007, 1010, 1015,
+ 1018, 1025, 1030, 1041, 1046, 1050, 1054, 1060, 1063, 1069,
+ 1077, 1080, 1083, 1089, 1094, 1097, 1102, 1106, 1110, 1114,
+ 1120, 1125, 1130, 1134, 1140, 1146, 1149, 1154, 1159, 1163,
+ 1169, 1175, 1181, 1184, 1188, 1194, 1197, 1202, 1206, 1212,
+ 1215, 1218, 1223, 1228, 1233, 1236, 1239, 1244, 1247, 1250,
+ 1253, 1256, 1259, 1262, 1265, 1270, 1273, 1278, 1282, 1286,
+ 1289, 1293, 1296, 1301, 1304, 1309, 1312, 1317, 1321, 1327,
+ 1330, 1335, 1338, 1343, 1346, 1351, 1354, 1373, 1376, 1379,
+ 1383, 1389, 1395, 1400, 1403, 1408, 1411, 1416, 1419, 1424,
+ 1427, 1432, 1433, 1436, 1441, 1442, 1445, 1450, 1454, 1460,
+ 1467, 1470, 1473, 1478, 1481, 1484, 1490, 1493, 1498, 1503,
+ 1512, 1517, 1526, 1531, 1534, 1539, 1542, 1547, 1553, 1559,
+ 1562, 1565, 1568, 1571, 1574, 1580, 1589, 1592, 1597, 1600,
+ 1605, 1608, 1613, 1616, 1619, 1622, 1626, 1630, 1633, 1636,
+ 1639, 1642, 1647, 1651, 1655, 1658, 1663, 1668, 1672, 1678,
+ 1681, 1686, 1690, 1696, 1701, 1705, 1711, 1716, 1719, 1724,
+ 1728, 1734, 1737, 1740, 1743, 1755, 1759, 1778, 1791, 1806,
+ 1809, 1812, 1815, 1818, 1821, 1826, 1830, 1836, 1839, 1844,
+ 1848, 1855, 1858, 1861, 1864, 1867, 1870, 1873, 1876, 1879,
+ 1882, 1887, 1898, 1901, 1906, 1909, 1912, 1918, 1922, 1928,
+ 1931, 1939, 1942, 1945, 1948, 1954, 1959, 1964
};
#endif
@@ -798,47 +816,51 @@ static const char *const yytname[] =
"TOKEN_BIGINT", "TOKEN_BIT", "TOKEN_BITWEAVING", "TOKEN_BLOCKPROPERTIES",
"TOKEN_BLOCKSAMPLE", "TOKEN_BLOOM_FILTER", "TOKEN_CSB_TREE", "TOKEN_BY",
"TOKEN_CASE", "TOKEN_CHARACTER", "TOKEN_CHECK", "TOKEN_COLUMN",
- "TOKEN_CONSTRAINT", "TOKEN_COPY", "TOKEN_CREATE", "TOKEN_DATE",
- "TOKEN_DATETIME", "TOKEN_DAY", "TOKEN_DECIMAL", "TOKEN_DEFAULT",
- "TOKEN_DELETE", "TOKEN_DELIMITER", "TOKEN_DESC", "TOKEN_DISTINCT",
- "TOKEN_DOUBLE", "TOKEN_DROP", "TOKEN_ELSE", "TOKEN_END",
- "TOKEN_ESCAPE_STRINGS", "TOKEN_EXISTS", "TOKEN_EXTRACT", "TOKEN_FALSE",
- "TOKEN_FIRST", "TOKEN_FLOAT", "TOKEN_FOR", "TOKEN_FOREIGN", "TOKEN_FROM",
- "TOKEN_FULL", "TOKEN_GROUP", "TOKEN_HASH", "TOKEN_HAVING", "TOKEN_HOUR",
- "TOKEN_IN", "TOKEN_INDEX", "TOKEN_INNER", "TOKEN_INSERT",
- "TOKEN_INTEGER", "TOKEN_INTERVAL", "TOKEN_INTO", "TOKEN_JOIN",
- "TOKEN_KEY", "TOKEN_LAST", "TOKEN_LEFT", "TOKEN_LIMIT", "TOKEN_LONG",
- "TOKEN_MINUTE", "TOKEN_MONTH", "TOKEN_NULL", "TOKEN_NULLS", "TOKEN_OFF",
- "TOKEN_ON", "TOKEN_ORDER", "TOKEN_OUTER", "TOKEN_PARTITION",
- "TOKEN_PARTITIONS", "TOKEN_PERCENT", "TOKEN_PRIMARY", "TOKEN_QUIT",
- "TOKEN_RANGE", "TOKEN_REAL", "TOKEN_REFERENCES", "TOKEN_RIGHT",
- "TOKEN_ROW_DELIMITER", "TOKEN_SECOND", "TOKEN_SELECT", "TOKEN_SET",
- "TOKEN_SMA", "TOKEN_SMALLINT", "TOKEN_SUBSTRING", "TOKEN_TABLE",
- "TOKEN_THEN", "TOKEN_TIME", "TOKEN_TIMESTAMP", "TOKEN_TRUE",
- "TOKEN_TUPLESAMPLE", "TOKEN_UNIQUE", "TOKEN_UPDATE", "TOKEN_USING",
- "TOKEN_VALUES", "TOKEN_VARCHAR", "TOKEN_WHEN", "TOKEN_WHERE",
- "TOKEN_WITH", "TOKEN_YEAR", "TOKEN_YEARMONTH", "TOKEN_EOF",
- "TOKEN_LEX_ERROR", "';'", "'\\n'", "'('", "')'", "','", "'%'", "$accept",
- "start", "sql_statement", "quit_statement", "alter_table_statement",
- "create_table_statement", "create_index_statement",
- "drop_table_statement", "column_def", "column_def_commalist",
- "data_type", "column_constraint_def", "column_constraint_def_list",
- "opt_column_constraint_def_list", "table_constraint_def",
- "table_constraint_def_commalist", "opt_table_constraint_def_commalist",
- "opt_column_list", "opt_block_properties", "opt_partition_clause",
- "partition_type", "key_value_list", "key_value", "key_string_value",
- "key_string_list", "key_integer_value", "index_type",
- "opt_index_properties", "insert_statement", "copy_from_statement",
- "opt_copy_from_params", "copy_from_params", "update_statement",
- "delete_statement", "assignment_list", "assignment_item",
- "select_statement", "with_clause", "with_list", "with_list_element",
- "select_query", "opt_all_distinct", "selection",
- "selection_item_commalist", "selection_item", "from_clause",
+ "TOKEN_CONSTRAINT", "TOKEN_COPY", "TOKEN_CREATE", "TOKEN_CURRENT",
+ "TOKEN_DATE", "TOKEN_DATETIME", "TOKEN_DAY", "TOKEN_DECIMAL",
+ "TOKEN_DEFAULT", "TOKEN_DELETE", "TOKEN_DELIMITER", "TOKEN_DESC",
+ "TOKEN_DISTINCT", "TOKEN_DOUBLE", "TOKEN_DROP", "TOKEN_ELSE",
+ "TOKEN_END", "TOKEN_ESCAPE_STRINGS", "TOKEN_EXISTS", "TOKEN_EXTRACT",
+ "TOKEN_FALSE", "TOKEN_FIRST", "TOKEN_FLOAT", "TOKEN_FOLLOWING",
+ "TOKEN_FOR", "TOKEN_FOREIGN", "TOKEN_FROM", "TOKEN_FULL", "TOKEN_GROUP",
+ "TOKEN_HASH", "TOKEN_HAVING", "TOKEN_HOUR", "TOKEN_IN", "TOKEN_INDEX",
+ "TOKEN_INNER", "TOKEN_INSERT", "TOKEN_INTEGER", "TOKEN_INTERVAL",
+ "TOKEN_INTO", "TOKEN_JOIN", "TOKEN_KEY", "TOKEN_LAST", "TOKEN_LEFT",
+ "TOKEN_LIMIT", "TOKEN_LONG", "TOKEN_MINUTE", "TOKEN_MONTH", "TOKEN_NULL",
+ "TOKEN_NULLS", "TOKEN_OFF", "TOKEN_ON", "TOKEN_ORDER", "TOKEN_OUTER",
+ "TOKEN_OVER", "TOKEN_PARTITION", "TOKEN_PARTITIONS", "TOKEN_PERCENT",
+ "TOKEN_PRECEDING", "TOKEN_PRIMARY", "TOKEN_QUIT", "TOKEN_RANGE",
+ "TOKEN_REAL", "TOKEN_REFERENCES", "TOKEN_RIGHT", "TOKEN_ROW",
+ "TOKEN_ROW_DELIMITER", "TOKEN_ROWS", "TOKEN_SECOND", "TOKEN_SELECT",
+ "TOKEN_SET", "TOKEN_SMA", "TOKEN_SMALLINT", "TOKEN_SUBSTRING",
+ "TOKEN_TABLE", "TOKEN_THEN", "TOKEN_TIME", "TOKEN_TIMESTAMP",
+ "TOKEN_TRUE", "TOKEN_TUPLESAMPLE", "TOKEN_UNBOUNDED", "TOKEN_UNIQUE",
+ "TOKEN_UPDATE", "TOKEN_USING", "TOKEN_VALUES", "TOKEN_VARCHAR",
+ "TOKEN_WHEN", "TOKEN_WHERE", "TOKEN_WINDOW", "TOKEN_WITH", "TOKEN_YEAR",
+ "TOKEN_YEARMONTH", "TOKEN_EOF", "TOKEN_LEX_ERROR", "';'", "'\\n'", "'('",
+ "')'", "','", "'%'", "$accept", "start", "sql_statement",
+ "quit_statement", "alter_table_statement", "create_table_statement",
+ "create_index_statement", "drop_table_statement", "column_def",
+ "column_def_commalist", "data_type", "column_constraint_def",
+ "column_constraint_def_list", "opt_column_constraint_def_list",
+ "table_constraint_def", "table_constraint_def_commalist",
+ "opt_table_constraint_def_commalist", "opt_column_list",
+ "opt_block_properties", "opt_partition_clause", "partition_type",
+ "key_value_list", "key_value", "key_string_value", "key_string_list",
+ "key_integer_value", "index_type", "opt_index_properties",
+ "insert_statement", "copy_from_statement", "opt_copy_from_params",
+ "copy_from_params", "update_statement", "delete_statement",
+ "assignment_list", "assignment_item", "select_statement", "with_clause",
+ "with_list", "with_list_element", "select_query", "opt_all_distinct",
+ "selection", "selection_item_commalist", "selection_item", "from_clause",
"subquery_expression", "opt_sample_clause", "join_type",
"joined_table_reference", "table_reference", "table_reference_signature",
"table_reference_signature_primary", "joined_table_reference_commalist",
"opt_group_by_clause", "opt_having_clause", "opt_order_by_clause",
- "opt_limit_clause", "order_commalist", "order_item",
+ "opt_limit_clause", "opt_window_clause", "window_declaration_list",
+ "window_declaration", "window_definition", "opt_window_partition",
+ "opt_window_order", "opt_window_frame", "frame_mode", "frame_preceding",
+ "frame_following", "order_commalist", "order_item",
"opt_order_direction", "opt_nulls_first", "opt_where_clause",
"where_clause", "or_expression", "and_expression", "not_expression",
"predicate_expression_base", "add_expression", "multiply_expression",
@@ -872,14 +894,15 @@ static const yytype_uint16 yytoknum[] =
350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
- 59, 10, 40, 41, 44, 37
+ 380, 381, 382, 383, 384, 385, 386, 387, 59, 10,
+ 40, 41, 44, 37
};
# endif
-#define YYPACT_NINF -230
+#define YYPACT_NINF -239
#define yypact_value_is_default(Yystate) \
- (!!((Yystate) == (-230)))
+ (!!((Yystate) == (-239)))
#define YYTABLE_NINF -128
@@ -890,55 +913,60 @@ static const yytype_uint16 yytoknum[] =
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- 162, -230, -230, -75, 181, 7, 17, 23, 19, -230,
- 41, 181, 181, -230, 151, 129, -230, -230, -230, -230,
- -230, -230, -230, -230, -230, -230, -38, -230, -36, 166,
- 181, -230, -230, 138, 181, 181, 181, 181, 181, -230,
- -230, 644, 111, 93, -230, 220, 128, -230, -230, -230,
- 202, -230, -230, -230, -230, 65, 273, 192, 163, 172,
- -230, 11, -230, -230, 295, 300, -230, -230, -230, 699,
- 207, -230, 233, -230, -230, 218, -230, -230, 310, -230,
- -230, -230, -230, 219, -230, -230, 229, 245, 786, 322,
- 261, 224, -230, -230, 182, 35, -230, -230, -230, -230,
- -230, -230, -230, -230, 928, -12, 181, 181, 235, 181,
- 181, 194, 226, 238, 181, 181, 542, -230, -230, 237,
- 181, -230, -230, -230, 542, 53, -34, -230, 359, -230,
- 105, 105, 983, 363, -230, 241, 40, -230, 18, 172,
- 983, -230, -230, 181, 983, -230, -230, -230, -230, 983,
- 300, -230, 181, 331, 82, -230, 360, -230, 268, -230,
- -7, -230, 268, 181, 146, 181, 181, 244, -230, 246,
- -230, 143, 1088, 841, 235, 455, 369, 372, -230, -230,
- 624, 364, 1069, 155, 15, 983, 8, -230, 983, -230,
- 323, 252, -230, -230, -230, -230, -230, -230, 317, -230,
- 60, 256, -230, -230, 10, 90, 197, -230, 257, 90,
- -10, 319, -230, -230, 35, -230, -230, 259, 983, -230,
- 270, 160, 181, -230, 983, -230, 181, -230, -230, 263,
- 313, 315, 267, -230, -230, -230, 174, 181, 281, 146,
- 181, -230, 81, -230, -230, 20, 34, 542, 542, 61,
- -230, -230, -230, -230, -230, -230, -230, -230, 983, 271,
- 983, 47, -230, 165, 283, 983, 55, -230, 342, 270,
- -230, -230, 983, 398, -230, 125, 181, -230, -230, 311,
- -230, 312, 318, 326, 18, -230, 405, 407, 90, 375,
- 344, -230, 171, -230, 983, -230, 270, -230, 542, 287,
- 288, 181, 417, 157, 175, -230, 177, 396, 49, -230,
- 290, 301, -230, 335, 296, 1069, -230, 346, 181, -230,
- -230, 81, -230, -230, 372, -230, -230, -230, 983, 298,
- 203, 786, -230, 270, 337, -230, -230, 1069, 299, 270,
- 983, -230, 42, -25, -230, -230, -230, -230, -230, 18,
- 197, 334, 336, -230, 983, 542, 341, -230, 270, 21,
- 181, 181, 183, -230, -230, -230, -230, -230, -230, -230,
- 193, -230, 181, -230, -230, -230, -230, 307, 146, 404,
- 347, -230, 542, -230, -230, 316, -230, 234, 786, -230,
- 983, 185, -230, -230, 1069, 270, -230, 437, -230, 354,
- -230, -230, 320, 369, 409, 365, -230, 188, 190, -230,
- 451, 157, -230, 181, -230, -230, 325, 426, -230, 31,
- 181, 983, 195, 270, -230, 198, 338, 542, 983, 460,
- -230, 366, -230, -230, -230, 200, -230, -230, -230, -230,
- 14, 181, 13, -230, 339, 270, -230, -230, -230, 369,
- 345, -230, 231, -230, 181, -230, 181, -230, -230, 181,
- -230, 208, -230, -230, 343, -230, 983, -230, -230, 377,
- 348, -230, 210, -230, 181, -230, 113, -230, 181, -230,
- 213, -230, -230, 215, 376, -230, 471, -230
+ 71, -239, -239, -52, 270, -19, 22, -43, 31, -239,
+ 16, 270, 270, -239, 97, 162, -239, -239, -239, -239,
+ -239, -239, -239, -239, -239, -239, -24, -239, 98, 117,
+ 270, -239, -239, 58, 270, 270, 270, 270, 270, -239,
+ -239, 619, 69, 29, -239, 155, 52, -239, -239, -239,
+ 126, -239, -239, -239, -239, 36, 233, 151, 60, 127,
+ -239, 68, -239, -239, 255, 260, -239, -239, -239, 700,
+ 131, -239, 217, -239, -239, 137, -239, -239, 288, -239,
+ -239, -239, -239, 172, -239, -239, 176, 241, 792, 320,
+ 297, 189, -239, -239, 286, -1, -239, -239, 271, -239,
+ -239, -239, -239, -239, 954, 0, 270, 270, 234, 270,
+ 270, 184, 210, 240, 270, 270, 538, -239, -239, 239,
+ 270, -239, -239, -239, 538, 47, -9, -239, 373, -239,
+ 154, 154, 1035, 374, -239, 242, 26, -239, 33, 127,
+ 1035, -239, -239, 270, 1035, -239, -239, -239, -239, 1035,
+ 38, 260, -239, 270, 354, 48, -239, 371, -239, 272,
+ -239, 140, -239, 272, 270, -18, 270, 270, 244, -239,
+ 246, -239, 163, 1144, 873, 234, 457, 382, 383, -239,
+ -239, 1270, 377, 1116, 169, 46, 1035, -2, -239, 1035,
+ -239, 332, 253, -239, -239, -239, -239, -239, -239, 327,
+ -239, 65, 259, -239, -239, 34, 220, 177, -239, 263,
+ 220, -8, 328, -239, -239, -1, -239, 303, -239, -239,
+ 266, 1035, -239, 293, 180, 270, -239, 1035, -239, 270,
+ -239, -239, 268, 325, 329, 273, -239, -239, -239, 125,
+ 270, 290, -18, 270, -239, 188, -239, -239, 2, 201,
+ 538, 538, 105, -239, -239, -239, -239, -239, -239, -239,
+ -239, 1035, 279, 1035, 43, -239, 185, 287, 1035, 57,
+ -239, 359, 293, -239, -239, 1035, 415, -239, 178, 270,
+ -239, -239, 326, -239, 330, 331, 340, 33, -239, 419,
+ 422, 220, 390, 356, 393, 296, 338, -239, 187, -239,
+ 1035, -239, 293, -239, 538, 298, 299, 270, 435, -3,
+ 192, -239, 195, 414, 42, -239, 300, 311, -239, 353,
+ 307, 1116, -239, 364, 270, -239, -239, 188, -239, -239,
+ 383, -239, -239, -239, 1035, 310, 275, 792, -239, 293,
+ 360, -239, -239, 1116, 313, 293, 1035, -239, 28, -33,
+ -239, -239, -239, -239, -239, 33, 177, 350, 357, -239,
+ 1035, 538, 358, 1035, -239, 425, -17, -239, 293, 4,
+ 270, 270, 197, -239, -239, -239, -239, -239, -239, -239,
+ 148, -239, 270, -239, -239, -239, -239, 315, -18, 423,
+ 367, -239, 538, -239, -239, 333, -239, 280, 792, -239,
+ 1035, 199, -239, -239, 1116, 293, -239, 462, -239, 381,
+ -239, -239, 335, 382, 432, 396, 335, 1035, -239, -239,
+ -239, 467, -239, 202, 204, -239, 476, -3, -239, 270,
+ -239, -239, 347, 448, -239, 11, 270, 1035, 206, 293,
+ -239, 208, 351, 538, 1035, 486, 365, 361, -239, 238,
+ 7, 389, -239, -239, -239, 211, -239, -239, -239, -239,
+ 14, 270, -7, -239, 363, 293, -239, -239, -239, 382,
+ 361, -239, 270, -239, 365, -239, 1035, -239, -239, 407,
+ 399, 401, 400, 499, 270, -239, 270, -239, -239, 270,
+ -239, 213, -239, -239, 372, -239, 480, -239, -239, 102,
+ -239, -239, -239, -239, 17, 376, -239, 215, -239, 270,
+ 378, -239, -239, 446, 408, 451, -239, 270, -239, 221,
+ 303, -239, -239, -239, 223, 426, 384, -239, 515, -239,
+ -239
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -946,85 +974,92 @@ static const yytype_int16 yypact[] =
means the default is an error. */
static const yytype_uint16 yydefact[] =
{
- 0, 6, 265, 0, 0, 0, 0, 0, 0, 18,
+ 0, 6, 287, 0, 0, 0, 0, 0, 0, 18,
112, 0, 0, 7, 0, 0, 15, 8, 10, 11,
- 13, 14, 9, 17, 12, 16, 0, 105, 0, 263,
- 0, 257, 258, 0, 0, 0, 0, 0, 0, 113,
+ 13, 14, 9, 17, 12, 16, 0, 105, 0, 285,
+ 0, 279, 280, 0, 0, 0, 0, 0, 0, 113,
114, 0, 0, 107, 108, 0, 145, 1, 3, 2,
- 0, 106, 5, 4, 264, 0, 0, 0, 0, 166,
- 25, 0, 223, 220, 0, 249, 115, 40, 29, 0,
+ 0, 106, 5, 4, 286, 0, 0, 0, 0, 186,
+ 25, 0, 245, 242, 0, 271, 115, 40, 29, 0,
0, 30, 31, 34, 36, 0, 37, 39, 0, 41,
- 219, 35, 38, 0, 32, 33, 0, 0, 0, 0,
- 0, 116, 117, 199, 121, 187, 189, 191, 194, 195,
- 196, 197, 193, 192, 0, 235, 0, 0, 0, 0,
- 0, 0, 0, 94, 0, 0, 0, 101, 167, 0,
- 0, 91, 221, 222, 0, 0, 215, 212, 0, 43,
- 0, 224, 0, 0, 44, 0, 0, 226, 0, 166,
- 0, 250, 251, 0, 0, 120, 253, 254, 252, 0,
- 0, 190, 0, 0, 166, 103, 0, 109, 0, 110,
- 0, 255, 0, 0, 0, 0, 0, 0, 93, 66,
- 27, 0, 0, 0, 0, 0, 168, 170, 172, 174,
- 0, 192, 0, 0, 0, 0, 215, 209, 0, 213,
- 0, 0, 229, 230, 231, 228, 232, 227, 0, 225,
- 0, 0, 123, 198, 0, 0, 147, 136, 122, 141,
- 124, 149, 118, 119, 186, 188, 236, 0, 0, 200,
- 217, 0, 0, 100, 0, 146, 0, 92, 19, 0,
- 0, 0, 0, 20, 21, 22, 0, 0, 0, 64,
- 0, 42, 56, 173, 181, 0, 0, 0, 0, 0,
- 239, 241, 242, 243, 244, 240, 245, 247, 0, 0,
- 0, 0, 233, 0, 0, 0, 0, 210, 0, 216,
- 208, 45, 0, 0, 46, 127, 0, 137, 143, 133,
- 128, 129, 131, 0, 0, 140, 0, 0, 139, 0,
- 151, 201, 0, 202, 0, 102, 104, 256, 0, 0,
- 0, 0, 0, 0, 0, 237, 0, 235, 0, 63,
- 65, 68, 28, 0, 0, 0, 47, 0, 0, 49,
- 55, 57, 26, 180, 169, 171, 246, 248, 0, 0,
- 0, 0, 182, 179, 0, 178, 90, 0, 0, 214,
- 0, 207, 0, 0, 142, 144, 134, 130, 132, 0,
- 148, 0, 0, 138, 0, 0, 153, 203, 218, 0,
- 0, 0, 0, 96, 261, 262, 260, 259, 97, 95,
+ 241, 35, 38, 0, 32, 33, 0, 0, 0, 0,
+ 0, 116, 117, 221, 121, 207, 209, 211, 214, 217,
+ 218, 219, 213, 212, 0, 257, 0, 0, 0, 0,
+ 0, 0, 0, 94, 0, 0, 0, 101, 187, 0,
+ 0, 91, 243, 244, 0, 0, 237, 234, 0, 43,
+ 0, 246, 0, 0, 44, 0, 0, 248, 0, 186,
+ 0, 272, 273, 0, 0, 120, 275, 276, 274, 0,
+ 0, 0, 210, 0, 0, 186, 103, 0, 109, 0,
+ 110, 0, 277, 0, 0, 0, 0, 0, 0, 93,
+ 66, 27, 0, 0, 0, 0, 0, 188, 190, 192,
+ 194, 0, 212, 0, 0, 0, 0, 237, 231, 0,
+ 235, 0, 0, 251, 252, 253, 250, 254, 249, 0,
+ 247, 0, 0, 123, 220, 0, 0, 147, 136, 122,
+ 141, 124, 149, 118, 119, 206, 208, 163, 215, 258,
+ 0, 0, 222, 239, 0, 0, 100, 0, 146, 0,
+ 92, 19, 0, 0, 0, 0, 20, 21, 22, 0,
+ 0, 0, 64, 0, 42, 56, 193, 201, 0, 0,
+ 0, 0, 0, 261, 263, 264, 265, 266, 262, 267,
+ 269, 0, 0, 0, 0, 255, 0, 0, 0, 0,
+ 232, 0, 238, 230, 45, 0, 0, 46, 127, 0,
+ 137, 143, 133, 128, 129, 131, 0, 0, 140, 0,
+ 0, 139, 0, 151, 0, 0, 165, 223, 0, 224,
+ 0, 102, 104, 278, 0, 0, 0, 0, 0, 0,
+ 0, 259, 0, 257, 0, 63, 65, 68, 28, 0,
+ 0, 0, 47, 0, 0, 49, 55, 57, 26, 200,
+ 189, 191, 268, 270, 0, 0, 0, 0, 202, 199,
+ 0, 198, 90, 0, 0, 236, 0, 229, 0, 0,
+ 142, 144, 134, 130, 132, 0, 148, 0, 0, 138,
+ 0, 0, 153, 0, 216, 0, 167, 225, 240, 0,
+ 0, 0, 0, 96, 283, 284, 282, 281, 97, 95,
0, 67, 0, 83, 84, 85, 86, 87, 0, 0,
- 70, 48, 0, 51, 50, 0, 54, 0, 0, 184,
- 0, 0, 177, 234, 0, 211, 204, 0, 205, 0,
- 125, 126, 150, 152, 0, 155, 61, 0, 0, 58,
- 0, 0, 238, 0, 24, 62, 0, 0, 23, 0,
- 0, 0, 0, 175, 183, 0, 0, 0, 0, 0,
- 111, 0, 59, 98, 99, 0, 74, 76, 77, 78,
- 0, 0, 0, 52, 0, 176, 185, 89, 206, 135,
- 154, 157, 160, 156, 0, 88, 0, 82, 80, 0,
- 79, 0, 72, 73, 0, 53, 0, 161, 162, 163,
- 0, 75, 0, 69, 0, 158, 0, 159, 0, 81,
- 0, 164, 165, 0, 0, 60, 0, 71
+ 70, 48, 0, 51, 50, 0, 54, 0, 0, 204,
+ 0, 0, 197, 256, 0, 233, 226, 0, 227, 0,
+ 125, 126, 150, 152, 0, 155, 164, 0, 170, 169,
+ 162, 0, 61, 0, 0, 58, 0, 0, 260, 0,
+ 24, 62, 0, 0, 23, 0, 0, 0, 0, 195,
+ 203, 0, 0, 0, 0, 0, 157, 166, 177, 180,
+ 0, 0, 59, 98, 99, 0, 74, 76, 77, 78,
+ 0, 0, 0, 52, 0, 196, 205, 89, 228, 135,
+ 154, 156, 0, 111, 158, 159, 0, 181, 182, 183,
+ 0, 0, 0, 0, 0, 88, 0, 82, 80, 0,
+ 79, 0, 72, 73, 0, 53, 0, 160, 178, 0,
+ 179, 171, 173, 172, 0, 0, 75, 0, 69, 0,
+ 0, 184, 185, 0, 0, 0, 168, 0, 81, 0,
+ 163, 174, 176, 175, 0, 0, 0, 60, 0, 161,
+ 71
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -230, -230, -230, -230, -230, -230, -230, -230, -127, -230,
- 309, 161, -230, -230, -229, -230, -230, -230, -230, -230,
- -230, 43, 27, -230, -230, -230, -230, -230, -230, -230,
- -230, -230, -230, -230, -230, 264, -230, -230, -230, 378,
- 12, -230, -230, -230, 350, -230, -103, -230, -230, -139,
- 142, -190, -8, -230, -230, -230, -230, -230, -230, 26,
- -230, -230, 44, -230, -121, 240, 247, 321, -28, 349,
- 351, 394, -132, -230, -230, -230, -230, 324, -230, 373,
- 327, -216, -171, 370, 108, -107, -230, -230, -230, -230,
- -230, -119, -4, 94, -230, -230
+ -239, -239, -239, -239, -239, -239, -239, -239, -88, -239,
+ 355, 196, -239, -239, -238, -239, -239, -239, -239, -239,
+ -239, 66, 44, -239, -239, -239, -239, -239, -239, -239,
+ -239, -239, -239, -239, -239, 304, -239, -239, -239, 424,
+ 9, -239, -239, -239, 392, -239, -92, -239, -239, -134,
+ 179, -182, -11, -239, -239, -239, -239, -239, -239, -239,
+ 59, 15, -239, -239, -239, -239, -239, -239, 92, 61,
+ -239, -239, -55, -239, -119, 291, 289, 379, -28, 403,
+ 402, 450, -123, -239, -239, -239, -239, 368, -239, 430,
+ 370, -204, -177, 421, 146, -113, -239, -239, -239, -239,
+ -239, -118, -4, 134, -239, -239
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- -1, 14, 15, 16, 17, 18, 19, 20, 170, 171,
- 89, 320, 321, 322, 233, 310, 311, 238, 380, 418,
- 464, 435, 436, 437, 438, 439, 377, 414, 21, 22,
- 168, 304, 23, 24, 154, 155, 25, 26, 43, 44,
- 135, 41, 90, 91, 92, 139, 93, 288, 283, 206,
- 207, 277, 278, 208, 290, 356, 405, 430, 450, 451,
- 469, 477, 117, 118, 176, 177, 178, 179, 180, 95,
- 96, 97, 98, 99, 100, 101, 186, 187, 126, 127,
- 190, 221, 102, 198, 263, 103, 306, 260, 104, 144,
- 149, 160, 105, 368, 28, 29
+ -1, 14, 15, 16, 17, 18, 19, 20, 171, 172,
+ 89, 326, 327, 328, 236, 316, 317, 241, 390, 434,
+ 494, 455, 456, 457, 458, 459, 387, 430, 21, 22,
+ 169, 310, 23, 24, 155, 156, 25, 26, 43, 44,
+ 135, 41, 90, 91, 92, 139, 93, 291, 286, 207,
+ 208, 280, 281, 209, 293, 362, 415, 446, 473, 474,
+ 475, 295, 296, 366, 420, 421, 483, 516, 447, 448,
+ 479, 500, 117, 118, 177, 178, 179, 180, 181, 95,
+ 96, 97, 98, 99, 100, 101, 187, 188, 126, 127,
+ 191, 224, 102, 199, 266, 103, 312, 263, 104, 144,
+ 149, 161, 105, 378, 28, 29
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -1032,341 +1067,374 @@ static const yytype_int16 yydefgoto[] =
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
- 33, 183, 292, 184, 45, 159, 209, 42, 46, 181,
- 309, 262, 27, 94, 31, 152, 32, 181, 31, 285,
- 32, 457, 31, 247, 32, 188, 55, 286, 247, 247,
- 57, 58, 59, 60, 61, 205, 228, 30, 51, 247,
- 50, 125, 397, 458, 249, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 245, 141, 142, 334, 146, 147,
- 136, 141, 142, 141, 142, 275, 181, 188, 181, 10,
- 39, 244, 209, 121, 141, 142, 141, 142, 326, 327,
- 328, 141, 142, 34, 373, 462, 36, 374, 375, 124,
- 145, 313, 52, 111, 31, 53, 32, 40, 353, 45,
- 38, 205, 156, 46, 200, 161, 162, 287, 398, 259,
- 169, 172, 94, 312, 463, 391, 161, 10, 10, 35,
- 153, 276, 153, 112, 314, 220, 225, 226, 265, 273,
- 305, 185, 119, 315, 210, 37, 329, 335, 402, 213,
- 181, 181, 204, 120, 383, 350, 459, 246, 216, 415,
- 204, 47, 209, 323, 406, 192, 332, 266, 376, 172,
- 269, 234, 235, 1, 443, 2, 393, 203, 340, 54,
- 148, 316, 422, 203, 227, 396, 185, 359, 481, 193,
- 317, 205, 362, 211, 318, 31, 31, 32, 32, 229,
- 220, 181, 3, 194, 195, 279, 296, 482, 223, 319,
- 210, 46, 280, 141, 142, 46, 116, 56, 4, 5,
- 281, 196, 390, 143, 230, 6, 222, 209, 156, 106,
- 7, 364, 297, 262, 141, 142, 389, 107, 302, 282,
- 330, 197, 333, 307, 403, 303, 172, 339, 163, 164,
- 8, 407, 408, 421, 342, 231, 205, 410, 181, 365,
- 366, 108, 141, 142, 411, 141, 142, 48, 344, 49,
- 109, 419, 9, 467, 232, 412, 358, 279, 345, 10,
- 165, 166, 46, 367, 280, 181, 239, 240, 113, -127,
- 210, 11, 281, 110, 46, 114, 468, 12, 264, 226,
- 13, 141, 142, 293, 294, 115, 116, 161, 336, 337,
- 387, 282, 122, 220, 357, 294, 449, 123, 369, 370,
- 371, 372, 395, 129, 385, 131, 409, 226, 424, 294,
- 181, 431, 226, 432, 226, 134, 220, 137, 446, 294,
- 138, 447, 337, 455, 456, 31, 62, 32, 63, 128,
- 472, 473, 456, 479, 226, 210, 484, 226, 485, 226,
- 130, 132, 64, 65, 217, 480, 161, 161, 140, 483,
- 220, 133, 423, 167, 67, 68, 191, 158, 307, 182,
- 201, 224, 69, 70, 202, 10, 236, 247, 237, 71,
- 72, 248, 73, 270, 261, 271, 272, 218, 74, 274,
- 289, 284, 291, 445, 75, 298, 299, 76, 300, 301,
- 452, 308, 341, 331, 338, 343, 346, 347, 349, 440,
- 77, 78, 351, 348, 352, 354, 444, 355, 79, 360,
- 361, 80, 363, 152, 378, 381, 379, 392, 382, 384,
- 388, 394, 400, 81, 401, 404, 460, 440, 452, 413,
- 416, 82, 83, 417, 426, 84, 85, 427, 420, 428,
- 470, 429, 440, 86, 294, 161, 433, 441, 87, 31,
- 62, 32, 63, 88, 219, 173, 442, 453, 476, 454,
- 161, 448, 465, 486, 161, 474, 64, 65, 487, 466,
- 478, 242, 386, 471, 461, 157, 295, 324, 67, 68,
- 212, 399, 475, 214, 243, 325, 69, 70, 151, 189,
- 215, 199, 425, 71, 72, 434, 73, 0, 0, 0,
- 267, 0, 74, 268, 0, 0, 0, 174, 75, 0,
- 0, 76, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 77, 78, 0, 0, 0, 0,
- 0, 0, 79, 0, 0, 80, 31, 62, 32, 63,
- 0, 0, 173, 0, 0, 0, 0, 81, 0, 0,
- 0, 0, 10, 64, 65, 82, 83, 0, 0, 84,
- 85, 0, 0, 0, 0, 67, 68, 86, 0, 0,
- 0, 0, 87, 69, 70, 0, 0, 175, 0, 0,
- 71, 72, 0, 73, 0, 0, 0, 0, 0, 74,
- 0, 0, 0, 0, 174, 75, 0, 0, 76, 0,
+ 33, 45, 184, 182, 315, 185, 265, 42, 46, 27,
+ 250, 182, 250, 94, 480, 210, 160, 298, 31, 250,
+ 32, 487, 146, 147, 513, 232, 55, 153, 288, 289,
+ 57, 58, 59, 60, 61, 51, 407, 31, 31, 32,
+ 32, 125, 31, 488, 32, 39, 206, 141, 142, 141,
+ 142, 189, 233, 340, 250, 481, 50, 248, 189, 34,
+ 136, 182, 374, 182, 111, 514, 30, 492, 141, 142,
+ 121, 278, 1, 40, 2, 37, 231, 383, 141, 142,
+ 384, 385, 210, 247, 212, 234, 141, 142, 418, 10,
+ 145, 375, 376, 36, 419, 112, 45, 47, 493, 35,
+ 226, 3, 157, 46, 201, 162, 163, 235, 408, 359,
+ 170, 173, 94, 206, 38, 290, 162, 4, 5, 377,
+ 54, 124, 332, 333, 334, 6, 223, 311, 186, 56,
+ 7, 482, 154, 401, 211, 341, 276, 182, 182, 214,
+ 154, 515, 148, 329, 393, 422, 218, 10, 249, 219,
+ 431, 8, 463, 356, 489, 318, 412, 386, 269, 416,
+ 173, 272, 237, 238, 210, 268, 403, 204, 511, 406,
+ 338, 107, 230, 205, 205, 9, 346, 186, 217, 116,
+ 308, 10, 335, 106, 10, 369, 108, 309, 512, 372,
+ 225, 182, 109, 223, 438, 206, 119, 11, 319, 302,
+ 115, 211, 46, 426, 12, 193, 46, 13, 120, 110,
+ 427, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 157, 141, 142, 31, 303, 32, 265, 164, 165,
+ 194, 320, 210, 336, 52, 339, 313, 53, 113, 173,
+ 345, 321, 413, 399, 195, 196, 114, 348, 182, 282,
+ 282, 279, 423, 424, 166, 167, 283, 283, 116, 141,
+ 142, -127, 122, 206, 284, 284, 197, 123, 351, 428,
+ 477, 128, 368, 435, 31, 46, 32, 130, 262, 182,
+ 322, 228, 229, 211, 400, 285, 285, 46, 198, 437,
+ 31, 323, 32, 131, 478, 324, 141, 142, 48, 129,
+ 49, 141, 142, 162, 242, 243, 397, 141, 142, 223,
+ 267, 229, 132, 325, 141, 142, 133, 143, 405, 350,
+ 395, 299, 300, 134, 469, 137, 342, 343, 367, 300,
+ 182, 140, 223, 379, 380, 223, 381, 382, 425, 229,
+ 440, 300, 204, 451, 229, 452, 229, 466, 300, 467,
+ 343, 211, 485, 486, 508, 486, 518, 229, 31, 62,
+ 32, 63, 525, 229, 527, 229, 162, 162, 138, 150,
+ 223, 507, 439, 168, 159, 64, 65, 220, 313, 183,
+ 192, 202, 227, 203, 239, 10, 240, 67, 68, 449,
+ 250, 519, 251, 273, 274, 69, 70, 264, 275, 524,
+ 277, 292, 294, 71, 72, 287, 73, 297, 304, 465,
+ 305, 221, 74, 307, 306, 344, 449, 314, 75, 337,
+ 347, 76, 349, 352, 355, 460, 357, 353, 354, 358,
+ 360, 361, 464, 363, 365, 77, 78, 364, 370, 371,
+ 373, 153, 388, 79, 389, 391, 80, 392, 449, 394,
+ 398, 410, 402, 404, 414, 429, 490, 460, 411, 432,
+ 81, 31, 62, 32, 63, 417, 433, 174, 496, 442,
+ 82, 83, 444, 436, 84, 85, 443, 300, 64, 65,
+ 505, 453, 460, 86, 445, 162, 450, 461, 462, 87,
+ 67, 68, 468, 471, 88, 222, 484, 472, 69, 70,
+ 499, 501, 503, 476, 495, 162, 71, 72, 504, 73,
+ 502, 510, 509, 162, 521, 74, 517, 522, 520, 523,
+ 175, 75, 530, 396, 76, 529, 528, 491, 245, 301,
+ 506, 158, 213, 497, 409, 526, 470, 498, 77, 78,
+ 331, 330, 31, 62, 32, 63, 79, 215, 174, 80,
+ 441, 216, 200, 246, 152, 270, 190, 271, 0, 64,
+ 65, 454, 0, 81, 0, 0, 0, 0, 0, 0,
+ 10, 67, 68, 82, 83, 0, 0, 84, 85, 69,
+ 70, 0, 0, 0, 0, 0, 86, 71, 72, 0,
+ 73, 0, 87, 0, 0, 0, 74, 176, 0, 0,
+ 0, 175, 75, 0, 0, 76, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 77,
+ 78, 0, 0, 31, 62, 32, 63, 79, 0, 0,
+ 80, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 64, 65, 66, 0, 81, 0, 0, 0, 0, 0,
+ 0, 0, 67, 68, 82, 83, 0, 0, 84, 85,
+ 69, 70, 0, 0, 0, 0, 0, 86, 71, 72,
+ 0, 73, 0, 87, 0, 0, 0, 74, 176, 0,
+ 0, 0, 0, 75, 0, 0, 76, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 77, 78, 0, 0, 31, 62, 32, 63, 79, 0,
+ 0, 80, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 64, 65, 0, 0, 81, 0, 0, 0, 0,
+ 0, 0, 0, 67, 68, 82, 83, 0, 0, 84,
+ 85, 69, 70, 0, 0, 0, 0, 0, 86, 71,
+ 72, 0, 73, 0, 87, 0, 0, 0, 74, 88,
+ 0, 0, 0, 0, 75, 0, 0, 76, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 77, 78, 0, 0, 0, 0, 0, 0, 79,
- 0, 0, 80, 0, 249, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 81, 141, 142, 0, 31, 62,
- 32, 63, 82, 83, 0, 0, 84, 85, 0, 0,
- 0, 0, 0, 0, 86, 64, 65, 66, 0, 87,
- 0, 0, 0, 0, 175, 0, 0, 67, 68, 0,
- 0, 0, 0, 0, 0, 69, 70, 0, 0, 0,
- 0, 0, 71, 72, 0, 73, 0, 0, 0, 259,
- 0, 74, 0, 31, 62, 32, 63, 75, 0, 0,
+ 0, 0, 80, 0, 0, 0, 31, 62, 32, 63,
+ 0, 0, 0, 0, 0, 0, 81, 0, 0, 0,
+ 0, 0, 0, 64, 65, 0, 82, 83, 0, 0,
+ 84, 85, 0, 0, 0, 67, 68, 0, 0, 86,
+ 124, 0, 0, 69, 70, 87, 0, 0, 0, 0,
+ 88, 71, 72, 0, 73, 0, 0, 0, 0, 0,
+ 74, 0, 0, 0, 0, 0, 75, 0, 0, 76,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 77, 78, 0, 0, 31, 62, 32,
+ 63, 79, 0, 0, 80, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64, 65, 0, 0, 81, 0,
+ 0, 0, 0, 0, 0, 10, 67, 68, 82, 83,
+ 0, 0, 84, 85, 69, 70, 0, 0, 0, 0,
+ 0, 86, 71, 72, 0, 73, 0, 87, 0, 0,
+ 0, 74, 88, 0, 0, 0, 175, 75, 0, 0,
76, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 64, 65, 0, 77, 78, 0, 0, 0, 0, 0,
- 0, 79, 67, 68, 80, 0, 0, 0, 0, 0,
- 69, 70, 0, 0, 0, 0, 81, 71, 72, 0,
- 73, 0, 0, 0, 82, 83, 74, 0, 84, 85,
- 0, 0, 75, 0, 0, 76, 86, 0, 0, 0,
- 0, 87, 0, 0, 0, 0, 88, 0, 77, 78,
- 0, 0, 0, 0, 0, 0, 79, 0, 0, 80,
- 31, 62, 32, 63, 0, 0, 0, 0, 0, 0,
- 0, 81, 0, 0, 0, 0, 0, 64, 65, 82,
- 83, 0, 0, 84, 85, 0, 0, 0, 0, 67,
- 68, 86, 124, 0, 0, 0, 87, 69, 70, 0,
- 0, 88, 0, 0, 71, 72, 0, 73, 0, 0,
- 0, 0, 0, 74, 0, 31, 62, 32, 63, 75,
+ 0, 0, 0, 0, 77, 78, 0, 0, 31, 62,
+ 32, 63, 79, 0, 0, 80, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 64, 151, 0, 0, 81,
+ 0, 0, 0, 0, 0, 0, 0, 67, 68, 82,
+ 83, 0, 0, 84, 85, 69, 70, 0, 0, 0,
+ 0, 0, 86, 71, 72, 0, 73, 0, 87, 0,
+ 0, 0, 74, 176, 0, 0, 0, 0, 75, 0,
+ 0, 76, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 77, 78, 0, 0, 31,
+ 62, 32, 63, 79, 0, 0, 80, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 64, 65, 0, 0,
+ 81, 0, 0, 0, 0, 0, 0, 0, 67, 68,
+ 82, 83, 0, 0, 84, 85, 69, 70, 0, 0,
+ 0, 0, 0, 86, 71, 72, 0, 73, 0, 87,
+ 0, 0, 0, 74, 88, 0, 0, 0, 0, 75,
0, 0, 76, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 64, 65, 0, 77, 78, 0, 0, 0,
- 0, 0, 0, 79, 67, 68, 80, 0, 0, 0,
- 0, 0, 69, 70, 0, 0, 0, 0, 81, 71,
- 72, 0, 73, 10, 0, 0, 82, 83, 74, 0,
- 84, 85, 0, 174, 75, 0, 0, 76, 86, 0,
- 0, 0, 0, 87, 0, 0, 0, 0, 88, 0,
- 77, 78, 0, 0, 0, 0, 0, 0, 79, 0,
- 0, 80, 31, 62, 32, 63, 0, 0, 0, 0,
- 0, 0, 0, 81, 0, 0, 0, 0, 0, 64,
- 150, 82, 83, 0, 0, 84, 85, 0, 0, 0,
- 0, 67, 68, 86, 0, 0, 0, 0, 87, 69,
- 70, 0, 0, 175, 0, 0, 71, 72, 0, 73,
- 0, 0, 0, 0, 0, 74, 0, 31, 62, 32,
- 63, 75, 0, 0, 76, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 64, 65, 0, 77, 78, 0,
- 0, 0, 0, 0, 0, 79, 67, 68, 80, 0,
- 0, 0, 0, 0, 69, 70, 0, 0, 0, 0,
- 81, 71, 72, 0, 73, 0, 0, 0, 82, 83,
- 74, 0, 84, 85, 0, 0, 75, 0, 0, 76,
- 86, 0, 0, 0, 0, 87, 0, 0, 0, 0,
- 88, 0, 77, 78, 0, 0, 0, 0, 0, 0,
- 79, 0, 0, 80, 62, 0, 63, 0, 0, 0,
- 0, 0, 0, 0, 0, 81, 0, 0, 0, 0,
- 64, 150, 0, 82, 83, 0, 0, 84, 85, 0,
- 0, 0, 67, 68, 0, 86, 0, 0, 0, 0,
- 87, 70, 0, 0, 0, 88, 0, 71, 72, 0,
- 73, 67, 68, 0, 0, 0, 74, 0, 0, 0,
- 70, 0, 0, 0, 0, 76, 71, 72, 0, 73,
- 0, 0, 0, 0, 0, 74, 0, 0, 77, 78,
- 0, 0, 0, 0, 76, 0, 79, 0, 0, 80,
- 0, 0, 0, 0, 0, 0, 0, 77, 241, 0,
- 0, 81, 0, 0, 0, 79, 0, 0, 0, 82,
- 0, 0, 0, 84, 85, 0, 0, 0, 0, 0,
- 81, 86, 0, 0, 0, 0, 87, 0, 82, 0,
- 0, 0, 84, 85, 0, 0, 0, 0, 0, 0,
- 86, 0, 0, 0, 0, 87
+ 0, 0, 0, 0, 0, 0, 77, 78, 0, 0,
+ 0, 62, 0, 63, 79, 0, 0, 80, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 64, 151, 0,
+ 0, 81, 0, 0, 0, 0, 0, 0, 0, 67,
+ 68, 82, 83, 0, 0, 84, 85, 0, 70, 0,
+ 0, 0, 0, 0, 86, 71, 72, 0, 73, 0,
+ 87, 0, 0, 0, 74, 88, 0, 67, 68, 0,
+ 0, 0, 0, 76, 0, 0, 70, 0, 0, 0,
+ 0, 0, 0, 71, 72, 0, 73, 77, 78, 0,
+ 0, 0, 74, 0, 0, 79, 0, 0, 80, 0,
+ 0, 76, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 81, 0, 0, 77, 244, 0, 0, 0,
+ 0, 0, 82, 79, 0, 0, 84, 85, 0, 0,
+ 0, 0, 0, 0, 0, 86, 0, 0, 0, 0,
+ 81, 87, 0, 0, 0, 0, 0, 0, 0, 0,
+ 82, 0, 0, 0, 84, 85, 0, 0, 0, 0,
+ 0, 0, 0, 86, 0, 0, 0, 0, 0, 87,
+ 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
+ 0, 141, 142, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 262
};
static const yytype_int16 yycheck[] =
{
- 4, 120, 218, 124, 12, 108, 138, 11, 12, 116,
- 239, 182, 0, 41, 4, 27, 6, 124, 4, 209,
- 6, 7, 4, 8, 6, 59, 30, 37, 8, 8,
- 34, 35, 36, 37, 38, 138, 163, 112, 26, 8,
- 78, 69, 67, 29, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 175, 21, 22, 10, 23, 24,
- 88, 21, 22, 21, 22, 204, 173, 59, 175, 107,
- 29, 174, 204, 61, 21, 22, 21, 22, 17, 18,
- 19, 21, 22, 76, 35, 72, 69, 38, 39, 123,
- 94, 10, 128, 28, 4, 131, 6, 56, 288, 107,
- 81, 204, 106, 107, 132, 109, 110, 117, 133, 75,
- 114, 115, 140, 240, 101, 331, 120, 107, 107, 112,
- 132, 31, 132, 58, 43, 153, 133, 134, 113, 69,
- 237, 123, 121, 52, 138, 112, 75, 90, 354, 143,
- 247, 248, 132, 132, 315, 284, 132, 175, 152, 378,
- 132, 0, 284, 133, 133, 50, 259, 185, 109, 163,
- 188, 165, 166, 1, 133, 3, 337, 133, 113, 3,
- 135, 90, 388, 133, 162, 133, 123, 298, 65, 74,
- 99, 284, 301, 139, 103, 4, 4, 6, 6, 43,
- 218, 298, 30, 88, 89, 70, 224, 84, 154, 118,
- 204, 205, 77, 21, 22, 209, 124, 69, 46, 47,
- 85, 106, 9, 31, 68, 53, 134, 349, 222, 108,
- 58, 64, 226, 394, 21, 22, 329, 134, 54, 104,
- 258, 126, 260, 237, 355, 61, 240, 265, 44, 45,
- 78, 360, 361, 9, 272, 99, 349, 54, 355, 92,
- 93, 31, 21, 22, 61, 21, 22, 128, 133, 130,
- 132, 382, 100, 32, 118, 372, 294, 70, 276, 107,
- 44, 45, 276, 116, 77, 382, 133, 134, 5, 82,
- 284, 119, 85, 81, 288, 93, 55, 125, 133, 134,
- 128, 21, 22, 133, 134, 132, 124, 301, 133, 134,
- 328, 104, 7, 331, 133, 134, 427, 7, 133, 134,
- 133, 134, 340, 80, 318, 5, 133, 134, 133, 134,
- 427, 133, 134, 133, 134, 80, 354, 5, 133, 134,
- 69, 133, 134, 133, 134, 4, 5, 6, 7, 132,
- 459, 133, 134, 133, 134, 349, 133, 134, 133, 134,
- 132, 132, 21, 22, 23, 474, 360, 361, 134, 478,
- 388, 132, 390, 125, 33, 34, 7, 132, 372, 132,
- 7, 11, 41, 42, 133, 107, 132, 8, 132, 48,
- 49, 9, 51, 60, 20, 133, 69, 56, 57, 133,
- 71, 134, 133, 421, 63, 132, 83, 66, 83, 132,
- 428, 120, 60, 132, 121, 7, 95, 95, 82, 413,
- 79, 80, 7, 95, 7, 40, 420, 73, 87, 132,
- 132, 90, 5, 27, 134, 90, 125, 90, 132, 83,
- 132, 132, 98, 102, 98, 94, 440, 441, 466, 132,
- 36, 110, 111, 96, 7, 114, 115, 93, 132, 40,
- 454, 86, 456, 122, 134, 459, 5, 132, 127, 4,
- 5, 6, 7, 132, 133, 10, 40, 7, 91, 103,
- 474, 133, 133, 97, 478, 132, 21, 22, 7, 134,
- 132, 172, 321, 456, 441, 107, 222, 247, 33, 34,
- 140, 349, 466, 144, 173, 248, 41, 42, 104, 126,
- 149, 131, 394, 48, 49, 411, 51, -1, -1, -1,
- 186, -1, 57, 186, -1, -1, -1, 62, 63, -1,
- -1, 66, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 79, 80, -1, -1, -1, -1,
- -1, -1, 87, -1, -1, 90, 4, 5, 6, 7,
- -1, -1, 10, -1, -1, -1, -1, 102, -1, -1,
- -1, -1, 107, 21, 22, 110, 111, -1, -1, 114,
- 115, -1, -1, -1, -1, 33, 34, 122, -1, -1,
- -1, -1, 127, 41, 42, -1, -1, 132, -1, -1,
- 48, 49, -1, 51, -1, -1, -1, -1, -1, 57,
- -1, -1, -1, -1, 62, 63, -1, -1, 66, -1,
+ 4, 12, 120, 116, 242, 124, 183, 11, 12, 0,
+ 8, 124, 8, 41, 7, 138, 108, 221, 4, 8,
+ 6, 7, 23, 24, 7, 43, 30, 27, 210, 37,
+ 34, 35, 36, 37, 38, 26, 69, 4, 4, 6,
+ 6, 69, 4, 29, 6, 29, 138, 21, 22, 21,
+ 22, 60, 70, 10, 8, 48, 80, 176, 60, 78,
+ 88, 174, 65, 176, 28, 48, 118, 74, 21, 22,
+ 61, 205, 1, 57, 3, 118, 164, 35, 21, 22,
+ 38, 39, 205, 175, 139, 103, 21, 22, 105, 113,
+ 94, 94, 95, 71, 111, 59, 107, 0, 105, 118,
+ 155, 30, 106, 107, 132, 109, 110, 125, 141, 291,
+ 114, 115, 140, 205, 83, 123, 120, 46, 47, 122,
+ 3, 130, 17, 18, 19, 54, 154, 240, 130, 71,
+ 59, 124, 140, 337, 138, 92, 71, 250, 251, 143,
+ 140, 124, 143, 141, 321, 141, 150, 113, 176, 153,
+ 388, 80, 141, 287, 140, 243, 360, 115, 186, 363,
+ 164, 189, 166, 167, 287, 119, 343, 141, 66, 141,
+ 262, 142, 163, 140, 140, 104, 119, 130, 140, 131,
+ 55, 113, 77, 114, 113, 304, 31, 62, 86, 307,
+ 142, 304, 140, 221, 398, 287, 128, 126, 10, 227,
+ 140, 205, 206, 55, 133, 51, 210, 136, 140, 83,
+ 62, 10, 11, 12, 13, 14, 15, 16, 17, 18,
+ 19, 225, 21, 22, 4, 229, 6, 404, 44, 45,
+ 76, 43, 355, 261, 136, 263, 240, 139, 5, 243,
+ 268, 53, 361, 335, 90, 91, 95, 275, 361, 72,
+ 72, 31, 370, 371, 44, 45, 79, 79, 131, 21,
+ 22, 84, 7, 355, 87, 87, 112, 7, 279, 382,
+ 32, 140, 300, 392, 4, 279, 6, 140, 77, 392,
+ 92, 141, 142, 287, 9, 108, 108, 291, 134, 9,
+ 4, 103, 6, 5, 56, 107, 21, 22, 136, 82,
+ 138, 21, 22, 307, 141, 142, 334, 21, 22, 337,
+ 141, 142, 140, 125, 21, 22, 140, 31, 346, 141,
+ 324, 141, 142, 82, 443, 5, 141, 142, 141, 142,
+ 443, 142, 360, 141, 142, 363, 141, 142, 141, 142,
+ 141, 142, 141, 141, 142, 141, 142, 141, 142, 141,
+ 142, 355, 141, 142, 141, 142, 141, 142, 4, 5,
+ 6, 7, 141, 142, 141, 142, 370, 371, 71, 98,
+ 398, 489, 400, 133, 140, 21, 22, 23, 382, 140,
+ 7, 7, 11, 141, 140, 113, 140, 33, 34, 417,
+ 8, 509, 9, 61, 141, 41, 42, 20, 71, 517,
+ 141, 73, 99, 49, 50, 142, 52, 141, 140, 437,
+ 85, 57, 58, 140, 85, 128, 444, 127, 64, 140,
+ 61, 67, 7, 97, 84, 429, 7, 97, 97, 7,
+ 40, 75, 436, 40, 96, 81, 82, 141, 140, 140,
+ 5, 27, 142, 89, 133, 92, 92, 140, 476, 85,
+ 140, 101, 92, 140, 96, 140, 460, 461, 101, 36,
+ 106, 4, 5, 6, 7, 40, 99, 10, 472, 7,
+ 116, 117, 40, 140, 120, 121, 95, 142, 21, 22,
+ 484, 5, 486, 129, 88, 489, 19, 140, 40, 135,
+ 33, 34, 141, 7, 140, 141, 107, 132, 41, 42,
+ 93, 102, 102, 142, 141, 509, 49, 50, 9, 52,
+ 109, 31, 140, 517, 68, 58, 140, 109, 140, 68,
+ 63, 64, 7, 327, 67, 141, 100, 461, 173, 225,
+ 486, 107, 140, 474, 355, 520, 444, 476, 81, 82,
+ 251, 250, 4, 5, 6, 7, 89, 144, 10, 92,
+ 404, 149, 131, 174, 104, 187, 126, 187, -1, 21,
+ 22, 427, -1, 106, -1, -1, -1, -1, -1, -1,
+ 113, 33, 34, 116, 117, -1, -1, 120, 121, 41,
+ 42, -1, -1, -1, -1, -1, 129, 49, 50, -1,
+ 52, -1, 135, -1, -1, -1, 58, 140, -1, -1,
+ -1, 63, 64, -1, -1, 67, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 81,
+ 82, -1, -1, 4, 5, 6, 7, 89, -1, -1,
+ 92, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 21, 22, 23, -1, 106, -1, -1, -1, -1, -1,
+ -1, -1, 33, 34, 116, 117, -1, -1, 120, 121,
+ 41, 42, -1, -1, -1, -1, -1, 129, 49, 50,
+ -1, 52, -1, 135, -1, -1, -1, 58, 140, -1,
+ -1, -1, -1, 64, -1, -1, 67, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 81, 82, -1, -1, 4, 5, 6, 7, 89, -1,
+ -1, 92, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 21, 22, -1, -1, 106, -1, -1, -1, -1,
+ -1, -1, -1, 33, 34, 116, 117, -1, -1, 120,
+ 121, 41, 42, -1, -1, -1, -1, -1, 129, 49,
+ 50, -1, 52, -1, 135, -1, -1, -1, 58, 140,
+ -1, -1, -1, -1, 64, -1, -1, 67, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 81, 82, -1, -1, -1, -1, -1, -1, 89,
+ -1, -1, 92, -1, -1, -1, 4, 5, 6, 7,
+ -1, -1, -1, -1, -1, -1, 106, -1, -1, -1,
+ -1, -1, -1, 21, 22, -1, 116, 117, -1, -1,
+ 120, 121, -1, -1, -1, 33, 34, -1, -1, 129,
+ 130, -1, -1, 41, 42, 135, -1, -1, -1, -1,
+ 140, 49, 50, -1, 52, -1, -1, -1, -1, -1,
+ 58, -1, -1, -1, -1, -1, 64, -1, -1, 67,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 81, 82, -1, -1, 4, 5, 6,
+ 7, 89, -1, -1, 92, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 21, 22, -1, -1, 106, -1,
+ -1, -1, -1, -1, -1, 113, 33, 34, 116, 117,
+ -1, -1, 120, 121, 41, 42, -1, -1, -1, -1,
+ -1, 129, 49, 50, -1, 52, -1, 135, -1, -1,
+ -1, 58, 140, -1, -1, -1, 63, 64, -1, -1,
+ 67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 81, 82, -1, -1, 4, 5,
+ 6, 7, 89, -1, -1, 92, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 21, 22, -1, -1, 106,
+ -1, -1, -1, -1, -1, -1, -1, 33, 34, 116,
+ 117, -1, -1, 120, 121, 41, 42, -1, -1, -1,
+ -1, -1, 129, 49, 50, -1, 52, -1, 135, -1,
+ -1, -1, 58, 140, -1, -1, -1, -1, 64, -1,
+ -1, 67, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 81, 82, -1, -1, 4,
+ 5, 6, 7, 89, -1, -1, 92, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 21, 22, -1, -1,
+ 106, -1, -1, -1, -1, -1, -1, -1, 33, 34,
+ 116, 117, -1, -1, 120, 121, 41, 42, -1, -1,
+ -1, -1, -1, 129, 49, 50, -1, 52, -1, 135,
+ -1, -1, -1, 58, 140, -1, -1, -1, -1, 64,
+ -1, -1, 67, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 81, 82, -1, -1,
+ -1, 5, -1, 7, 89, -1, -1, 92, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 21, 22, -1,
+ -1, 106, -1, -1, -1, -1, -1, -1, -1, 33,
+ 34, 116, 117, -1, -1, 120, 121, -1, 42, -1,
+ -1, -1, -1, -1, 129, 49, 50, -1, 52, -1,
+ 135, -1, -1, -1, 58, 140, -1, 33, 34, -1,
+ -1, -1, -1, 67, -1, -1, 42, -1, -1, -1,
+ -1, -1, -1, 49, 50, -1, 52, 81, 82, -1,
+ -1, -1, 58, -1, -1, 89, -1, -1, 92, -1,
+ -1, 67, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 106, -1, -1, 81, 82, -1, -1, -1,
+ -1, -1, 116, 89, -1, -1, 120, 121, -1, -1,
+ -1, -1, -1, -1, -1, 129, -1, -1, -1, -1,
+ 106, 135, -1, -1, -1, -1, -1, -1, -1, -1,
+ 116, -1, -1, -1, 120, 121, -1, -1, -1, -1,
+ -1, -1, -1, 129, -1, -1, -1, -1, -1, 135,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ -1, 21, 22, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 79, 80, -1, -1, -1, -1, -1, -1, 87,
- -1, -1, 90, -1, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 102, 21, 22, -1, 4, 5,
- 6, 7, 110, 111, -1, -1, 114, 115, -1, -1,
- -1, -1, -1, -1, 122, 21, 22, 23, -1, 127,
- -1, -1, -1, -1, 132, -1, -1, 33, 34, -1,
- -1, -1, -1, -1, -1, 41, 42, -1, -1, -1,
- -1, -1, 48, 49, -1, 51, -1, -1, -1, 75,
- -1, 57, -1, 4, 5, 6, 7, 63, -1, -1,
- 66, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 21, 22, -1, 79, 80, -1, -1, -1, -1, -1,
- -1, 87, 33, 34, 90, -1, -1, -1, -1, -1,
- 41, 42, -1, -1, -1, -1, 102, 48, 49, -1,
- 51, -1, -1, -1, 110, 111, 57, -1, 114, 115,
- -1, -1, 63, -1, -1, 66, 122, -1, -1, -1,
- -1, 127, -1, -1, -1, -1, 132, -1, 79, 80,
- -1, -1, -1, -1, -1, -1, 87, -1, -1, 90,
- 4, 5, 6, 7, -1, -1, -1, -1, -1, -1,
- -1, 102, -1, -1, -1, -1, -1, 21, 22, 110,
- 111, -1, -1, 114, 115, -1, -1, -1, -1, 33,
- 34, 122, 123, -1, -1, -1, 127, 41, 42, -1,
- -1, 132, -1, -1, 48, 49, -1, 51, -1, -1,
- -1, -1, -1, 57, -1, 4, 5, 6, 7, 63,
- -1, -1, 66, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 21, 22, -1, 79, 80, -1, -1, -1,
- -1, -1, -1, 87, 33, 34, 90, -1, -1, -1,
- -1, -1, 41, 42, -1, -1, -1, -1, 102, 48,
- 49, -1, 51, 107, -1, -1, 110, 111, 57, -1,
- 114, 115, -1, 62, 63, -1, -1, 66, 122, -1,
- -1, -1, -1, 127, -1, -1, -1, -1, 132, -1,
- 79, 80, -1, -1, -1, -1, -1, -1, 87, -1,
- -1, 90, 4, 5, 6, 7, -1, -1, -1, -1,
- -1, -1, -1, 102, -1, -1, -1, -1, -1, 21,
- 22, 110, 111, -1, -1, 114, 115, -1, -1, -1,
- -1, 33, 34, 122, -1, -1, -1, -1, 127, 41,
- 42, -1, -1, 132, -1, -1, 48, 49, -1, 51,
- -1, -1, -1, -1, -1, 57, -1, 4, 5, 6,
- 7, 63, -1, -1, 66, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 21, 22, -1, 79, 80, -1,
- -1, -1, -1, -1, -1, 87, 33, 34, 90, -1,
- -1, -1, -1, -1, 41, 42, -1, -1, -1, -1,
- 102, 48, 49, -1, 51, -1, -1, -1, 110, 111,
- 57, -1, 114, 115, -1, -1, 63, -1, -1, 66,
- 122, -1, -1, -1, -1, 127, -1, -1, -1, -1,
- 132, -1, 79, 80, -1, -1, -1, -1, -1, -1,
- 87, -1, -1, 90, 5, -1, 7, -1, -1, -1,
- -1, -1, -1, -1, -1, 102, -1, -1, -1, -1,
- 21, 22, -1, 110, 111, -1, -1, 114, 115, -1,
- -1, -1, 33, 34, -1, 122, -1, -1, -1, -1,
- 127, 42, -1, -1, -1, 132, -1, 48, 49, -1,
- 51, 33, 34, -1, -1, -1, 57, -1, -1, -1,
- 42, -1, -1, -1, -1, 66, 48, 49, -1, 51,
- -1, -1, -1, -1, -1, 57, -1, -1, 79, 80,
- -1, -1, -1, -1, 66, -1, 87, -1, -1, 90,
- -1, -1, -1, -1, -1, -1, -1, 79, 80, -1,
- -1, 102, -1, -1, -1, 87, -1, -1, -1, 110,
- -1, -1, -1, 114, 115, -1, -1, -1, -1, -1,
- 102, 122, -1, -1, -1, -1, 127, -1, 110, -1,
- -1, -1, 114, 115, -1, -1, -1, -1, -1, -1,
- 122, -1, -1, -1, -1, 127
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 77
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
static const yytype_uint8 yystos[] =
{
- 0, 1, 3, 30, 46, 47, 53, 58, 78, 100,
- 107, 119, 125, 128, 137, 138, 139, 140, 141, 142,
- 143, 164, 165, 168, 169, 172, 173, 176, 230, 231,
- 112, 4, 6, 228, 76, 112, 69, 112, 81, 29,
- 56, 177, 228, 174, 175, 188, 228, 0, 128, 130,
- 78, 176, 128, 131, 3, 228, 69, 228, 228, 228,
- 228, 228, 5, 7, 21, 22, 23, 33, 34, 41,
- 42, 48, 49, 51, 57, 63, 66, 79, 80, 87,
- 90, 102, 110, 111, 114, 115, 122, 127, 132, 146,
- 178, 179, 180, 182, 204, 205, 206, 207, 208, 209,
- 210, 211, 218, 221, 224, 228, 108, 134, 31, 132,
- 81, 28, 58, 5, 93, 132, 124, 198, 199, 121,
- 132, 176, 7, 7, 123, 204, 214, 215, 132, 80,
- 132, 5, 132, 132, 80, 176, 204, 5, 69, 181,
- 134, 21, 22, 31, 225, 228, 23, 24, 135, 226,
- 22, 207, 27, 132, 170, 171, 228, 175, 132, 182,
- 227, 228, 228, 44, 45, 44, 45, 125, 166, 228,
- 144, 145, 228, 10, 62, 132, 200, 201, 202, 203,
- 204, 221, 132, 227, 200, 123, 212, 213, 59, 215,
- 216, 7, 50, 74, 88, 89, 106, 126, 219, 219,
- 204, 7, 133, 133, 132, 182, 185, 186, 189, 208,
- 228, 198, 180, 228, 205, 206, 228, 23, 56, 133,
- 204, 217, 134, 198, 11, 133, 134, 176, 144, 43,
- 68, 99, 118, 150, 228, 228, 132, 132, 153, 133,
- 134, 80, 146, 203, 182, 200, 204, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 75,
- 223, 20, 218, 220, 133, 113, 204, 213, 216, 204,
- 60, 133, 69, 69, 133, 185, 31, 187, 188, 70,
- 77, 85, 104, 184, 134, 187, 37, 117, 183, 71,
- 190, 133, 217, 133, 134, 171, 204, 228, 132, 83,
- 83, 132, 54, 61, 167, 221, 222, 228, 120, 150,
- 151, 152, 144, 10, 43, 52, 90, 99, 103, 118,
- 147, 148, 149, 133, 201, 202, 17, 18, 19, 75,
- 204, 132, 182, 204, 10, 90, 133, 134, 121, 204,
- 113, 60, 204, 7, 133, 188, 95, 95, 95, 82,
- 185, 7, 7, 187, 40, 73, 191, 133, 204, 200,
- 132, 132, 227, 5, 64, 92, 93, 116, 229, 133,
- 134, 133, 134, 35, 38, 39, 109, 162, 134, 125,
- 154, 90, 132, 218, 83, 228, 147, 204, 132, 182,
- 9, 217, 90, 218, 132, 204, 133, 67, 133, 186,
- 98, 98, 217, 200, 94, 192, 133, 227, 227, 133,
- 54, 61, 221, 132, 163, 150, 36, 96, 155, 200,
- 132, 9, 217, 204, 133, 220, 7, 93, 40, 86,
- 193, 133, 133, 5, 229, 157, 158, 159, 160, 161,
- 228, 132, 40, 133, 228, 204, 133, 133, 133, 200,
- 194, 195, 204, 7, 103, 133, 134, 7, 29, 132,
- 228, 157, 72, 101, 156, 133, 134, 32, 55, 196,
- 228, 158, 227, 133, 132, 195, 91, 197, 132, 133,
- 227, 65, 84, 227, 133, 133, 97, 7
+ 0, 1, 3, 30, 46, 47, 54, 59, 80, 104,
+ 113, 126, 133, 136, 145, 146, 147, 148, 149, 150,
+ 151, 172, 173, 176, 177, 180, 181, 184, 248, 249,
+ 118, 4, 6, 246, 78, 118, 71, 118, 83, 29,
+ 57, 185, 246, 182, 183, 196, 246, 0, 136, 138,
+ 80, 184, 136, 139, 3, 246, 71, 246, 246, 246,
+ 246, 246, 5, 7, 21, 22, 23, 33, 34, 41,
+ 42, 49, 50, 52, 58, 64, 67, 81, 82, 89,
+ 92, 106, 116, 117, 120, 121, 129, 135, 140, 154,
+ 186, 187, 188, 190, 222, 223, 224, 225, 226, 227,
+ 228, 229, 236, 239, 242, 246, 114, 142, 31, 140,
+ 83, 28, 59, 5, 95, 140, 131, 216, 217, 128,
+ 140, 184, 7, 7, 130, 222, 232, 233, 140, 82,
+ 140, 5, 140, 140, 82, 184, 222, 5, 71, 189,
+ 142, 21, 22, 31, 243, 246, 23, 24, 143, 244,
+ 98, 22, 225, 27, 140, 178, 179, 246, 183, 140,
+ 190, 245, 246, 246, 44, 45, 44, 45, 133, 174,
+ 246, 152, 153, 246, 10, 63, 140, 218, 219, 220,
+ 221, 222, 239, 140, 245, 218, 130, 230, 231, 60,
+ 233, 234, 7, 51, 76, 90, 91, 112, 134, 237,
+ 237, 222, 7, 141, 141, 140, 190, 193, 194, 197,
+ 226, 246, 216, 188, 246, 223, 224, 140, 246, 246,
+ 23, 57, 141, 222, 235, 142, 216, 11, 141, 142,
+ 184, 152, 43, 70, 103, 125, 158, 246, 246, 140,
+ 140, 161, 141, 142, 82, 154, 221, 190, 218, 222,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 77, 241, 20, 236, 238, 141, 119, 222,
+ 231, 234, 222, 61, 141, 71, 71, 141, 193, 31,
+ 195, 196, 72, 79, 87, 108, 192, 142, 195, 37,
+ 123, 191, 73, 198, 99, 205, 206, 141, 235, 141,
+ 142, 179, 222, 246, 140, 85, 85, 140, 55, 62,
+ 175, 239, 240, 246, 127, 158, 159, 160, 152, 10,
+ 43, 53, 92, 103, 107, 125, 155, 156, 157, 141,
+ 219, 220, 17, 18, 19, 77, 222, 140, 190, 222,
+ 10, 92, 141, 142, 128, 222, 119, 61, 222, 7,
+ 141, 196, 97, 97, 97, 84, 193, 7, 7, 195,
+ 40, 75, 199, 40, 141, 96, 207, 141, 222, 218,
+ 140, 140, 245, 5, 65, 94, 95, 122, 247, 141,
+ 142, 141, 142, 35, 38, 39, 115, 170, 142, 133,
+ 162, 92, 140, 236, 85, 246, 155, 222, 140, 190,
+ 9, 235, 92, 236, 140, 222, 141, 69, 141, 194,
+ 101, 101, 235, 218, 96, 200, 235, 40, 105, 111,
+ 208, 209, 141, 245, 245, 141, 55, 62, 239, 140,
+ 171, 158, 36, 99, 163, 218, 140, 9, 235, 222,
+ 141, 238, 7, 95, 40, 88, 201, 212, 213, 222,
+ 19, 141, 141, 5, 247, 165, 166, 167, 168, 169,
+ 246, 140, 40, 141, 246, 222, 141, 141, 141, 218,
+ 212, 7, 132, 202, 203, 204, 142, 32, 56, 214,
+ 7, 48, 124, 210, 107, 141, 142, 7, 29, 140,
+ 246, 165, 74, 105, 164, 141, 246, 204, 213, 93,
+ 215, 102, 109, 102, 9, 246, 166, 245, 141, 140,
+ 31, 66, 86, 7, 48, 124, 211, 140, 141, 245,
+ 140, 68, 109, 68, 245, 141, 205, 141, 100, 141,
+ 7
};
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_uint8 yyr1[] =
{
- 0, 136, 137, 137, 137, 137, 137, 137, 138, 138,
- 138, 138, 138, 138, 138, 138, 138, 138, 139, 140,
- 140, 140, 140, 141, 142, 143, 144, 145, 145, 146,
- 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
- 146, 146, 146, 146, 146, 146, 146, 147, 147, 147,
- 147, 147, 147, 147, 148, 148, 149, 149, 150, 150,
- 150, 150, 151, 151, 152, 152, 153, 153, 154, 154,
- 155, 155, 156, 156, 157, 157, 158, 158, 158, 159,
- 159, 160, 161, 162, 162, 162, 162, 163, 163, 164,
- 164, 164, 164, 165, 166, 166, 167, 167, 167, 167,
- 168, 169, 170, 170, 171, 172, 172, 173, 174, 174,
- 175, 176, 177, 177, 177, 178, 178, 179, 179, 180,
- 180, 180, 181, 182, 183, 183, 183, 184, 184, 184,
- 184, 184, 184, 184, 184, 185, 185, 186, 186, 186,
- 186, 186, 186, 187, 187, 188, 188, 189, 189, 190,
- 190, 191, 191, 192, 192, 193, 193, 194, 194, 195,
- 196, 196, 196, 197, 197, 197, 198, 198, 199, 200,
- 200, 201, 201, 202, 202, 203, 203, 203, 203, 203,
- 203, 203, 203, 203, 203, 203, 204, 204, 205, 205,
- 206, 206, 207, 207, 207, 207, 207, 207, 207, 207,
- 208, 208, 208, 208, 209, 210, 210, 211, 211, 212,
- 212, 213, 214, 214, 215, 216, 216, 217, 217, 218,
- 218, 218, 218, 218, 218, 218, 218, 219, 219, 219,
- 219, 219, 219, 220, 220, 221, 221, 222, 222, 223,
- 223, 223, 223, 223, 223, 223, 223, 223, 223, 224,
- 225, 225, 226, 226, 226, 227, 227, 228, 228, 229,
- 229, 229, 229, 230, 231, 231
+ 0, 144, 145, 145, 145, 145, 145, 145, 146, 146,
+ 146, 146, 146, 146, 146, 146, 146, 146, 147, 148,
+ 148, 148, 148, 149, 150, 151, 152, 153, 153, 154,
+ 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
+ 154, 154, 154, 154, 154, 154, 154, 155, 155, 155,
+ 155, 155, 155, 155, 156, 156, 157, 157, 158, 158,
+ 158, 158, 159, 159, 160, 160, 161, 161, 162, 162,
+ 163, 163, 164, 164, 165, 165, 166, 166, 166, 167,
+ 167, 168, 169, 170, 170, 170, 170, 171, 171, 172,
+ 172, 172, 172, 173, 174, 174, 175, 175, 175, 175,
+ 176, 177, 178, 178, 179, 180, 180, 181, 182, 182,
+ 183, 184, 185, 185, 185, 186, 186, 187, 187, 188,
+ 188, 188, 189, 190, 191, 191, 191, 192, 192, 192,
+ 192, 192, 192, 192, 192, 193, 193, 194, 194, 194,
+ 194, 194, 194, 195, 195, 196, 196, 197, 197, 198,
+ 198, 199, 199, 200, 200, 201, 201, 202, 202, 203,
+ 203, 204, 205, 206, 206, 207, 207, 208, 208, 209,
+ 209, 210, 210, 210, 211, 211, 211, 212, 212, 213,
+ 214, 214, 214, 215, 215, 215, 216, 216, 217, 218,
+ 218, 219, 219, 220, 220, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 222, 222, 223, 223,
+ 224, 224, 225, 225, 225, 225, 225, 225, 225, 225,
+ 225, 225, 226, 226, 226, 226, 227, 228, 228, 229,
+ 229, 230, 230, 231, 232, 232, 233, 234, 234, 235,
+ 235, 236, 236, 236, 236, 236, 236, 236, 236, 237,
+ 237, 237, 237, 237, 237, 238, 238, 239, 239, 240,
+ 240, 241, 241, 241, 241, 241, 241, 241, 241, 241,
+ 241, 242, 243, 243, 244, 244, 244, 245, 245, 246,
+ 246, 247, 247, 247, 247, 248, 249, 249
};
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
@@ -1383,22 +1451,24 @@ static const yytype_uint8 yyr2[] =
2, 4, 2, 1, 1, 1, 1, 0, 3, 10,
7, 4, 5, 5, 0, 4, 2, 2, 4, 4,
5, 4, 3, 1, 3, 1, 2, 2, 1, 3,
- 3, 9, 0, 1, 1, 1, 1, 1, 3, 3,
+ 3, 10, 0, 1, 1, 1, 1, 1, 3, 3,
2, 1, 2, 3, 0, 3, 3, 0, 1, 1,
2, 1, 2, 1, 2, 6, 1, 2, 3, 2,
2, 1, 3, 1, 2, 1, 4, 1, 3, 0,
- 3, 0, 2, 0, 3, 0, 2, 1, 3, 3,
+ 3, 0, 2, 0, 3, 0, 2, 0, 1, 1,
+ 2, 6, 3,
<TRUNCATED>
[5/7] incubator-quickstep git commit: QUICKSTEP-20: Added parser
support for SQL window aggregation function
Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/00ca1e4b/parser/preprocessed/SqlLexer_gen.hpp
----------------------------------------------------------------------
diff --git a/parser/preprocessed/SqlLexer_gen.hpp b/parser/preprocessed/SqlLexer_gen.hpp
index c14559b..f6cd8ad 100644
--- a/parser/preprocessed/SqlLexer_gen.hpp
+++ b/parser/preprocessed/SqlLexer_gen.hpp
@@ -12,8 +12,8 @@
#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 6
-#define YY_FLEX_SUBMINOR_VERSION 0
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 39
#if YY_FLEX_SUBMINOR_VERSION > 0
#define FLEX_BETA
#endif
@@ -222,7 +222,7 @@ void quickstep_yyfree (void * ,yyscan_t yyscanner );
/* Begin user sect3 */
-#define quickstep_yywrap(yyscanner) (/*CONSTCOND*/1)
+#define quickstep_yywrap(yyscanner) 1
#define YY_SKIP_YYWRAP
#define yytext_ptr yytext_r
@@ -268,11 +268,11 @@ void quickstep_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
FILE *quickstep_yyget_in (yyscan_t yyscanner );
-void quickstep_yyset_in (FILE * _in_str ,yyscan_t yyscanner );
+void quickstep_yyset_in (FILE * in_str ,yyscan_t yyscanner );
FILE *quickstep_yyget_out (yyscan_t yyscanner );
-void quickstep_yyset_out (FILE * _out_str ,yyscan_t yyscanner );
+void quickstep_yyset_out (FILE * out_str ,yyscan_t yyscanner );
yy_size_t quickstep_yyget_leng (yyscan_t yyscanner );
@@ -280,11 +280,11 @@ char *quickstep_yyget_text (yyscan_t yyscanner );
int quickstep_yyget_lineno (yyscan_t yyscanner );
-void quickstep_yyset_lineno (int _line_number ,yyscan_t yyscanner );
+void quickstep_yyset_lineno (int line_number ,yyscan_t yyscanner );
int quickstep_yyget_column (yyscan_t yyscanner );
-void quickstep_yyset_column (int _column_no ,yyscan_t yyscanner );
+void quickstep_yyset_column (int column_no ,yyscan_t yyscanner );
YYSTYPE * quickstep_yyget_lval (yyscan_t yyscanner );
@@ -360,7 +360,7 @@ extern int quickstep_yylex \
#undef YY_DECL
#endif
-#line 454 "../SqlLexer.lpp"
+#line 463 "../SqlLexer.lpp"
#line 367 "SqlLexer_gen.hpp"
[3/7] incubator-quickstep git commit: QUICKSTEP-20: Added parser
support for SQL window aggregation function
Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/00ca1e4b/parser/preprocessed/SqlParser_gen.hpp
----------------------------------------------------------------------
diff --git a/parser/preprocessed/SqlParser_gen.hpp b/parser/preprocessed/SqlParser_gen.hpp
index 71e4332..fea31d6 100644
--- a/parser/preprocessed/SqlParser_gen.hpp
+++ b/parser/preprocessed/SqlParser_gen.hpp
@@ -85,88 +85,96 @@ extern int quickstep_yydebug;
TOKEN_CONSTRAINT = 295,
TOKEN_COPY = 296,
TOKEN_CREATE = 297,
- TOKEN_DATE = 298,
- TOKEN_DATETIME = 299,
- TOKEN_DAY = 300,
- TOKEN_DECIMAL = 301,
- TOKEN_DEFAULT = 302,
- TOKEN_DELETE = 303,
- TOKEN_DELIMITER = 304,
- TOKEN_DESC = 305,
- TOKEN_DISTINCT = 306,
- TOKEN_DOUBLE = 307,
- TOKEN_DROP = 308,
- TOKEN_ELSE = 309,
- TOKEN_END = 310,
- TOKEN_ESCAPE_STRINGS = 311,
- TOKEN_EXISTS = 312,
- TOKEN_EXTRACT = 313,
- TOKEN_FALSE = 314,
- TOKEN_FIRST = 315,
- TOKEN_FLOAT = 316,
- TOKEN_FOR = 317,
- TOKEN_FOREIGN = 318,
- TOKEN_FROM = 319,
- TOKEN_FULL = 320,
- TOKEN_GROUP = 321,
- TOKEN_HASH = 322,
- TOKEN_HAVING = 323,
- TOKEN_HOUR = 324,
- TOKEN_IN = 325,
- TOKEN_INDEX = 326,
- TOKEN_INNER = 327,
- TOKEN_INSERT = 328,
- TOKEN_INTEGER = 329,
- TOKEN_INTERVAL = 330,
- TOKEN_INTO = 331,
- TOKEN_JOIN = 332,
- TOKEN_KEY = 333,
- TOKEN_LAST = 334,
- TOKEN_LEFT = 335,
- TOKEN_LIMIT = 336,
- TOKEN_LONG = 337,
- TOKEN_MINUTE = 338,
- TOKEN_MONTH = 339,
- TOKEN_NULL = 340,
- TOKEN_NULLS = 341,
- TOKEN_OFF = 342,
- TOKEN_ON = 343,
- TOKEN_ORDER = 344,
- TOKEN_OUTER = 345,
- TOKEN_PARTITION = 346,
- TOKEN_PARTITIONS = 347,
- TOKEN_PERCENT = 348,
- TOKEN_PRIMARY = 349,
- TOKEN_QUIT = 350,
- TOKEN_RANGE = 351,
- TOKEN_REAL = 352,
- TOKEN_REFERENCES = 353,
- TOKEN_RIGHT = 354,
- TOKEN_ROW_DELIMITER = 355,
- TOKEN_SECOND = 356,
- TOKEN_SELECT = 357,
- TOKEN_SET = 358,
- TOKEN_SMA = 359,
- TOKEN_SMALLINT = 360,
- TOKEN_SUBSTRING = 361,
- TOKEN_TABLE = 362,
- TOKEN_THEN = 363,
- TOKEN_TIME = 364,
- TOKEN_TIMESTAMP = 365,
- TOKEN_TRUE = 366,
- TOKEN_TUPLESAMPLE = 367,
- TOKEN_UNIQUE = 368,
- TOKEN_UPDATE = 369,
- TOKEN_USING = 370,
- TOKEN_VALUES = 371,
- TOKEN_VARCHAR = 372,
- TOKEN_WHEN = 373,
- TOKEN_WHERE = 374,
- TOKEN_WITH = 375,
- TOKEN_YEAR = 376,
- TOKEN_YEARMONTH = 377,
- TOKEN_EOF = 378,
- TOKEN_LEX_ERROR = 379
+ TOKEN_CURRENT = 298,
+ TOKEN_DATE = 299,
+ TOKEN_DATETIME = 300,
+ TOKEN_DAY = 301,
+ TOKEN_DECIMAL = 302,
+ TOKEN_DEFAULT = 303,
+ TOKEN_DELETE = 304,
+ TOKEN_DELIMITER = 305,
+ TOKEN_DESC = 306,
+ TOKEN_DISTINCT = 307,
+ TOKEN_DOUBLE = 308,
+ TOKEN_DROP = 309,
+ TOKEN_ELSE = 310,
+ TOKEN_END = 311,
+ TOKEN_ESCAPE_STRINGS = 312,
+ TOKEN_EXISTS = 313,
+ TOKEN_EXTRACT = 314,
+ TOKEN_FALSE = 315,
+ TOKEN_FIRST = 316,
+ TOKEN_FLOAT = 317,
+ TOKEN_FOLLOWING = 318,
+ TOKEN_FOR = 319,
+ TOKEN_FOREIGN = 320,
+ TOKEN_FROM = 321,
+ TOKEN_FULL = 322,
+ TOKEN_GROUP = 323,
+ TOKEN_HASH = 324,
+ TOKEN_HAVING = 325,
+ TOKEN_HOUR = 326,
+ TOKEN_IN = 327,
+ TOKEN_INDEX = 328,
+ TOKEN_INNER = 329,
+ TOKEN_INSERT = 330,
+ TOKEN_INTEGER = 331,
+ TOKEN_INTERVAL = 332,
+ TOKEN_INTO = 333,
+ TOKEN_JOIN = 334,
+ TOKEN_KEY = 335,
+ TOKEN_LAST = 336,
+ TOKEN_LEFT = 337,
+ TOKEN_LIMIT = 338,
+ TOKEN_LONG = 339,
+ TOKEN_MINUTE = 340,
+ TOKEN_MONTH = 341,
+ TOKEN_NULL = 342,
+ TOKEN_NULLS = 343,
+ TOKEN_OFF = 344,
+ TOKEN_ON = 345,
+ TOKEN_ORDER = 346,
+ TOKEN_OUTER = 347,
+ TOKEN_OVER = 348,
+ TOKEN_PARTITION = 349,
+ TOKEN_PARTITIONS = 350,
+ TOKEN_PERCENT = 351,
+ TOKEN_PRECEDING = 352,
+ TOKEN_PRIMARY = 353,
+ TOKEN_QUIT = 354,
+ TOKEN_RANGE = 355,
+ TOKEN_REAL = 356,
+ TOKEN_REFERENCES = 357,
+ TOKEN_RIGHT = 358,
+ TOKEN_ROW = 359,
+ TOKEN_ROW_DELIMITER = 360,
+ TOKEN_ROWS = 361,
+ TOKEN_SECOND = 362,
+ TOKEN_SELECT = 363,
+ TOKEN_SET = 364,
+ TOKEN_SMA = 365,
+ TOKEN_SMALLINT = 366,
+ TOKEN_SUBSTRING = 367,
+ TOKEN_TABLE = 368,
+ TOKEN_THEN = 369,
+ TOKEN_TIME = 370,
+ TOKEN_TIMESTAMP = 371,
+ TOKEN_TRUE = 372,
+ TOKEN_TUPLESAMPLE = 373,
+ TOKEN_UNBOUNDED = 374,
+ TOKEN_UNIQUE = 375,
+ TOKEN_UPDATE = 376,
+ TOKEN_USING = 377,
+ TOKEN_VALUES = 378,
+ TOKEN_VARCHAR = 379,
+ TOKEN_WHEN = 380,
+ TOKEN_WHERE = 381,
+ TOKEN_WINDOW = 382,
+ TOKEN_WITH = 383,
+ TOKEN_YEAR = 384,
+ TOKEN_YEARMONTH = 385,
+ TOKEN_EOF = 386,
+ TOKEN_LEX_ERROR = 387
};
#endif
@@ -175,7 +183,7 @@ extern int quickstep_yydebug;
union YYSTYPE
{
-#line 118 "../SqlParser.ypp" /* yacc.c:1915 */
+#line 119 "../SqlParser.ypp" /* yacc.c:1909 */
quickstep::ParseString *string_value_;
@@ -261,13 +269,19 @@ union YYSTYPE
quickstep::ParseSample *opt_sample_clause_;
+ quickstep::PtrList<quickstep::ParseWindow> *opt_window_clause_;
+ quickstep::ParseWindow *window_definition_;
+ quickstep::PtrList<quickstep::ParseExpression> *window_partition_by_list_;
+ quickstep::PtrList<quickstep::ParseOrderByItem> *window_order_by_list_;
+ quickstep::ParseFrameInfo *window_frame_info_;
+
quickstep::PtrList<quickstep::ParseOrderByItem> *order_commalist_;
quickstep::ParseOrderByItem *order_item_;
quickstep::PtrVector<quickstep::ParseSubqueryTableReference> *with_list_;
quickstep::ParseSubqueryTableReference *with_list_element_;
-#line 271 "SqlParser_gen.hpp" /* yacc.c:1915 */
+#line 285 "SqlParser_gen.hpp" /* yacc.c:1909 */
};
typedef union YYSTYPE YYSTYPE;
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/00ca1e4b/parser/tests/Select.test
----------------------------------------------------------------------
diff --git a/parser/tests/Select.test b/parser/tests/Select.test
index e70ee5c..79da7ee 100644
--- a/parser/tests/Select.test
+++ b/parser/tests/Select.test
@@ -1,5 +1,7 @@
# Copyright 2011-2015 Quickstep Technologies LLC.
# Copyright 2015 Pivotal Software, Inc.
+# Copyright 2016, Quickstep Research Group, Computer Sciences Department,
+# University of Wisconsin\u2014Madison.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -1709,3 +1711,121 @@ SelectStatement
| +-TableReference[table=bar]
+-from_clause=
+-TableReference[table=test]
+==
+
+SELECT avg(attr1) OVER w FROM test
+WINDOW w AS
+(PARTITION BY attr2, attr3
+ ORDER BY attr4
+ ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING)
+--
+SelectStatement
++-select_query=Select
+ +-select_clause=SelectList
+ | +-SelectListItem
+ | +-FunctionCall[name=avg,window_name=w]
+ | +-AttributeReference[attribute_name=attr1]
+ +-from_clause=
+ | +-TableReference[table=test]
+ +-window_list=
+ +-window[window_name=w]
+ +-frame_info=FrameInfo[frame_mode=row,num_preceding=3,num_following=3]
+ +-partition_by=
+ | +-AttributeReference[attribute_name=attr2]
+ | +-AttributeReference[attribute_name=attr3]
+ +-order_by=
+ +-OrderByItem[is_asc=true,nulls_first=false]
+ +-AttributeReference[attribute_name=attr4]
+==
+
+SELECT avg(attr1) OVER w FROM test
+WINDOW w AS
+(PARTITION BY attr2, attr3
+ ORDER BY attr4 DESC NULLS FIRST, attr5 ASC NULLS LAST
+ RANGE BETWEEN 3 PRECEDING AND CURRENT ROW)
+--
+SelectStatement
++-select_query=Select
+ +-select_clause=SelectList
+ | +-SelectListItem
+ | +-FunctionCall[name=avg,window_name=w]
+ | +-AttributeReference[attribute_name=attr1]
+ +-from_clause=
+ | +-TableReference[table=test]
+ +-window_list=
+ +-window[window_name=w]
+ +-frame_info=FrameInfo[frame_mode=range,num_preceding=3,num_following=0]
+ +-partition_by=
+ | +-AttributeReference[attribute_name=attr2]
+ | +-AttributeReference[attribute_name=attr3]
+ +-order_by=
+ +-OrderByItem[is_asc=false,nulls_first=true]
+ | +-AttributeReference[attribute_name=attr4]
+ +-OrderByItem[is_asc=true,nulls_first=false]
+ +-AttributeReference[attribute_name=attr5]
+==
+
+SELECT avg(attr1) OVER w1 AS avg1, sum(attr5) OVER w2 AS sum5 FROM test
+WINDOW w1 AS
+(PARTITION BY attr2, attr3
+ ORDER BY attr4
+ ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING)
+WINDOW w2 AS
+(PARTITION BY attr1
+ ORDER BY attr6
+ RANGE BETWEEN 2 PRECEDING AND CURRENT ROW)
+--
+SelectStatement
++-select_query=Select
+ +-select_clause=SelectList
+ | +-SelectListItem[alias=avg1]
+ | | +-FunctionCall[name=avg,window_name=w1]
+ | | +-AttributeReference[attribute_name=attr1]
+ | +-SelectListItem[alias=sum5]
+ | +-FunctionCall[name=sum,window_name=w2]
+ | +-AttributeReference[attribute_name=attr5]
+ +-from_clause=
+ | +-TableReference[table=test]
+ +-window_list=
+ +-window[window_name=w1]
+ | +-frame_info=FrameInfo[frame_mode=row,num_preceding=3,num_following=3]
+ | +-partition_by=
+ | | +-AttributeReference[attribute_name=attr2]
+ | | +-AttributeReference[attribute_name=attr3]
+ | +-order_by=
+ | +-OrderByItem[is_asc=true,nulls_first=false]
+ | +-AttributeReference[attribute_name=attr4]
+ +-window[window_name=w2]
+ +-frame_info=FrameInfo[frame_mode=range,num_preceding=2,num_following=0]
+ +-partition_by=
+ | +-AttributeReference[attribute_name=attr1]
+ +-order_by=
+ +-OrderByItem[is_asc=true,nulls_first=false]
+ +-AttributeReference[attribute_name=attr6]
+==
+
+SELECT avg(attr1) OVER
+(PARTITION BY attr2, attr3
+ ORDER BY attr4 DESC NULLS FIRST, attr5 ASC NULLS LAST
+ RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
+FROM test
+--
+SelectStatement
++-select_query=Select
+ +-select_clause=SelectList
+ | +-SelectListItem
+ | +-FunctionCall[name=avg]
+ | +-AttributeReference[attribute_name=attr1]
+ | +-window=window
+ | +-frame_info=FrameInfo[frame_mode=range,num_preceding=-1,
+ | | num_following=0]
+ | +-partition_by=
+ | | +-AttributeReference[attribute_name=attr2]
+ | | +-AttributeReference[attribute_name=attr3]
+ | +-order_by=
+ | +-OrderByItem[is_asc=false,nulls_first=true]
+ | | +-AttributeReference[attribute_name=attr4]
+ | +-OrderByItem[is_asc=true,nulls_first=false]
+ | +-AttributeReference[attribute_name=attr5]
+ +-from_clause=
+ +-TableReference[table=test]
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/00ca1e4b/query_optimizer/resolver/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/query_optimizer/resolver/CMakeLists.txt b/query_optimizer/resolver/CMakeLists.txt
index 5959879..dc7eac0 100644
--- a/query_optimizer/resolver/CMakeLists.txt
+++ b/query_optimizer/resolver/CMakeLists.txt
@@ -62,6 +62,7 @@ target_link_libraries(quickstep_queryoptimizer_resolver_Resolver
quickstep_parser_ParseSubqueryExpression
quickstep_parser_ParseSubqueryTableReference
quickstep_parser_ParseTableReference
+ quickstep_parser_ParseWindow
quickstep_queryoptimizer_OptimizerContext
quickstep_queryoptimizer_Validator
quickstep_queryoptimizer_expressions_AggregateFunction
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/00ca1e4b/query_optimizer/resolver/Resolver.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/resolver/Resolver.cpp b/query_optimizer/resolver/Resolver.cpp
index 78985a0..ffc173a 100644
--- a/query_optimizer/resolver/Resolver.cpp
+++ b/query_optimizer/resolver/Resolver.cpp
@@ -58,6 +58,7 @@
#include "parser/ParseSubqueryExpression.hpp"
#include "parser/ParseSubqueryTableReference.hpp"
#include "parser/ParseTableReference.hpp"
+#include "parser/ParseWindow.hpp"
#include "query_optimizer/OptimizerContext.hpp"
#include "query_optimizer/Validator.hpp"
#include "query_optimizer/expressions/AggregateFunction.hpp"
@@ -2366,6 +2367,12 @@ E::ScalarPtr Resolver::resolveFunctionCall(
ExpressionResolutionInfo *expression_resolution_info) {
std::string function_name = ToLower(parse_function_call.name()->value());
+ // TODO(Shixuan): Add support for window aggregation function.
+ if (parse_function_call.isWindow()) {
+ THROW_SQL_ERROR_AT(&parse_function_call)
+ << "Window Aggregation Function is not supported currently";
+ }
+
// First check for the special case COUNT(*).
bool count_star = false;
if (parse_function_call.star() != nullptr) {
[2/7] incubator-quickstep git commit: Measure execution time of
WorkOrders.
Posted by sh...@apache.org.
Measure execution time of WorkOrders.
- Measure order execution time for both normal and rebuild work
orders.
- Split the WorkOrderCompletion proto message in two: Normal and Rebuild
work orders, with a possibility that in the future the two messages
will have different fields.
- Add execution time field in both WorkOrderComplete proto messages.
- Include the recorded time in both WorkOrderComplete proto messages
that are sent back to Foreman.
Project: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/commit/8e825f15
Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/8e825f15
Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/8e825f15
Branch: refs/heads/SQL-window-aggregation
Commit: 8e825f1525d5080e6c4bd02ee2ce0e14d81ab6c5
Parents: a701362
Author: Harshad Deshmukh <hb...@apache.org>
Authored: Tue Jun 14 14:02:45 2016 -0500
Committer: Harshad Deshmukh <hb...@apache.org>
Committed: Wed Jun 15 15:59:35 2016 -0500
----------------------------------------------------------------------
query_execution/PolicyEnforcer.cpp | 23 ++++-
query_execution/QueryExecutionMessages.proto | 29 +++++--
query_execution/QueryManager.cpp | 4 +-
query_execution/Worker.cpp | 89 ++++++++++++--------
query_execution/Worker.hpp | 38 +++++++--
query_execution/tests/QueryManager_unittest.cpp | 9 +-
6 files changed, 132 insertions(+), 60 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/8e825f15/query_execution/PolicyEnforcer.cpp
----------------------------------------------------------------------
diff --git a/query_execution/PolicyEnforcer.cpp b/query_execution/PolicyEnforcer.cpp
index 4501026..9f0502d 100644
--- a/query_execution/PolicyEnforcer.cpp
+++ b/query_execution/PolicyEnforcer.cpp
@@ -67,13 +67,26 @@ void PolicyEnforcer::processMessage(const TaggedMessage &tagged_message) {
// TaggedMessage only once.
std::size_t query_id;
switch (tagged_message.message_type()) {
- case kWorkOrderCompleteMessage: // Fall through.
+ case kWorkOrderCompleteMessage: {
+ serialization::NormalWorkOrderCompletionMessage proto;
+ // Note: This proto message contains the time it took to execute the
+ // WorkOrder. It can be accessed in this scope.
+ CHECK(proto.ParseFromArray(tagged_message.message(),
+ tagged_message.message_bytes()));
+ query_id = proto.query_id();
+ worker_directory_->decrementNumQueuedWorkOrders(
+ proto.worker_thread_index());
+ break;
+ }
case kRebuildWorkOrderCompleteMessage: {
- serialization::WorkOrderCompletionMessage proto;
+ serialization::RebuildWorkOrderCompletionMessage proto;
+ // Note: This proto message contains the time it took to execute the
+ // rebuild WorkOrder. It can be accessed in this scope.
CHECK(proto.ParseFromArray(tagged_message.message(),
tagged_message.message_bytes()));
query_id = proto.query_id();
- worker_directory_->decrementNumQueuedWorkOrders(proto.worker_thread_index());
+ worker_directory_->decrementNumQueuedWorkOrders(
+ proto.worker_thread_index());
break;
}
case kCatalogRelationNewBlockMessage: {
@@ -98,7 +111,9 @@ void PolicyEnforcer::processMessage(const TaggedMessage &tagged_message) {
break;
}
case kWorkOrderFeedbackMessage: {
- WorkOrder::FeedbackMessage msg(const_cast<void *>(tagged_message.message()), tagged_message.message_bytes());
+ WorkOrder::FeedbackMessage msg(
+ const_cast<void *>(tagged_message.message()),
+ tagged_message.message_bytes());
query_id = msg.header().query_id;
break;
}
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/8e825f15/query_execution/QueryExecutionMessages.proto
----------------------------------------------------------------------
diff --git a/query_execution/QueryExecutionMessages.proto b/query_execution/QueryExecutionMessages.proto
index 9d9a9e5..65a8946 100644
--- a/query_execution/QueryExecutionMessages.proto
+++ b/query_execution/QueryExecutionMessages.proto
@@ -20,14 +20,33 @@ package quickstep.serialization;
message EmptyMessage {
}
-// Used for both Normal WorkOrders and RebuildWorkOrders.
-// NOTE(zuyu): we might need to seperate the completion messages to contain
-// run-time information for Foreman to make better decisions on scheduling
-// WorkOrders.
-message WorkOrderCompletionMessage {
+// Note: There are different types of completion messages for normal work orders
+// rebuild work orders. This can be potentially helpful when we want to collect
+// different statistics for executing different types of work orders.
+// e.g. In select normal work order completion message, we could be interested
+// in the selectivity of the block whose work order got execute. In rebuild work
+// order completion message, we may be interested in adding the compression
+// ratio or dictionary size of the rebuilt block.
+
+// TODO(harshad) : If there are different fields in the two message types below,
+// create a base message class called WorkOrderCompletionMessage and make the
+// two classes below extend the base class. All the common fields in both the
+// classes can be moved to the base class.
+
+// A message sent upon completion of a normal (not rebuild) WorkOrder execution.
+message NormalWorkOrderCompletionMessage {
+ required uint64 operator_index = 1;
+ required uint64 worker_thread_index = 2;
+ required uint64 query_id = 3;
+ optional uint64 execution_time_in_microseconds = 4;
+}
+
+// A message sent upon completion of a rebuild WorkOrder execution.
+message RebuildWorkOrderCompletionMessage {
required uint64 operator_index = 1;
required uint64 worker_thread_index = 2;
required uint64 query_id = 3;
+ optional uint64 execution_time_in_microseconds = 4;
}
message CatalogRelationNewBlockMessage {
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/8e825f15/query_execution/QueryManager.cpp
----------------------------------------------------------------------
diff --git a/query_execution/QueryManager.cpp b/query_execution/QueryManager.cpp
index e4e4c9d..d20b592 100644
--- a/query_execution/QueryManager.cpp
+++ b/query_execution/QueryManager.cpp
@@ -161,7 +161,7 @@ QueryManager::QueryStatusCode QueryManager::processMessage(
dag_node_index op_index;
switch (tagged_message.message_type()) {
case kWorkOrderCompleteMessage: {
- serialization::WorkOrderCompletionMessage proto;
+ serialization::NormalWorkOrderCompletionMessage proto;
CHECK(proto.ParseFromArray(tagged_message.message(),
tagged_message.message_bytes()));
@@ -170,7 +170,7 @@ QueryManager::QueryStatusCode QueryManager::processMessage(
break;
}
case kRebuildWorkOrderCompleteMessage: {
- serialization::WorkOrderCompletionMessage proto;
+ serialization::RebuildWorkOrderCompletionMessage proto;
CHECK(proto.ParseFromArray(tagged_message.message(),
tagged_message.message_bytes()));
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/8e825f15/query_execution/Worker.cpp
----------------------------------------------------------------------
diff --git a/query_execution/Worker.cpp b/query_execution/Worker.cpp
index ef596e1..ae889c7 100644
--- a/query_execution/Worker.cpp
+++ b/query_execution/Worker.cpp
@@ -16,7 +16,9 @@
#include "query_execution/Worker.hpp"
+#include <chrono>
#include <cstddef>
+#include <cstdint>
#include <cstdlib>
#include <utility>
@@ -36,6 +38,7 @@
#include "tmb/tagged_message.h"
using std::size_t;
+using std::uint64_t;
using tmb::TaggedMessage;
@@ -50,22 +53,27 @@ void Worker::run() {
for (;;) {
// Receive() is a blocking call, causing this thread to sleep until next
// message is received.
- const AnnotatedMessage annotated_msg = bus_->Receive(worker_client_id_, 0, true);
+ const AnnotatedMessage annotated_msg =
+ bus_->Receive(worker_client_id_, 0, true);
const TaggedMessage &tagged_message = annotated_msg.tagged_message;
switch (tagged_message.message_type()) {
- case kWorkOrderMessage: // Fall through.
+ case kWorkOrderMessage: {
+ serialization::NormalWorkOrderCompletionMessage proto;
+ executeWorkOrderHelper<serialization::NormalWorkOrderCompletionMessage>(
+ tagged_message, &proto);
+ sendWorkOrderCompleteMessage<
+ serialization::NormalWorkOrderCompletionMessage>(
+ annotated_msg.sender, proto, kWorkOrderCompleteMessage);
+ break;
+ }
case kRebuildWorkOrderMessage: {
- WorkerMessage message(*static_cast<const WorkerMessage*>(tagged_message.message()));
- DCHECK(message.getWorkOrder() != nullptr);
- message.getWorkOrder()->execute();
- const std::size_t query_id_for_workorder =
- message.getWorkOrder()->getQueryID();
- delete message.getWorkOrder();
-
- sendWorkOrderCompleteMessage(
- annotated_msg.sender, message.getRelationalOpIndex(),
- query_id_for_workorder,
- tagged_message.message_type() == kRebuildWorkOrderMessage);
+ serialization::RebuildWorkOrderCompletionMessage proto;
+ executeWorkOrderHelper<
+ serialization::RebuildWorkOrderCompletionMessage>(tagged_message,
+ &proto);
+ sendWorkOrderCompleteMessage<
+ serialization::RebuildWorkOrderCompletionMessage>(
+ annotated_msg.sender, proto, kRebuildWorkOrderCompleteMessage);
break;
}
case kPoisonMessage: {
@@ -77,34 +85,49 @@ void Worker::run() {
}
}
+template <typename CompletionMessageProtoT>
void Worker::sendWorkOrderCompleteMessage(const tmb::client_id receiver,
- const size_t op_index,
- const size_t query_id,
- const bool is_rebuild_work_order) {
- serialization::WorkOrderCompletionMessage proto;
- proto.set_operator_index(op_index);
- proto.set_worker_thread_index(worker_thread_index_);
- proto.set_query_id(query_id);
-
+ const CompletionMessageProtoT &proto,
+ const message_type_id message_type) {
// NOTE(zuyu): Using the heap memory to serialize proto as a c-like string.
const size_t proto_length = proto.ByteSize();
- char *proto_bytes = static_cast<char*>(std::malloc(proto_length));
+ char *proto_bytes = static_cast<char *>(std::malloc(proto_length));
CHECK(proto.SerializeToArray(proto_bytes, proto_length));
- TaggedMessage message(static_cast<const void*>(proto_bytes),
- proto_length,
- is_rebuild_work_order ? kRebuildWorkOrderCompleteMessage
- : kWorkOrderCompleteMessage);
+ TaggedMessage tagged_message(
+ static_cast<const void *>(proto_bytes), proto_length, message_type);
std::free(proto_bytes);
const tmb::MessageBus::SendStatus send_status =
- QueryExecutionUtil::SendTMBMessage(bus_,
- worker_client_id_,
- receiver,
- std::move(message));
- CHECK(send_status == tmb::MessageBus::SendStatus::kOK) << "Message could not "
- "be sent from worker with TMB client ID " << worker_client_id_ << " to "
- "Foreman with TMB client ID " << receiver;
+ QueryExecutionUtil::SendTMBMessage(
+ bus_, worker_client_id_, receiver, std::move(tagged_message));
+ CHECK(send_status == tmb::MessageBus::SendStatus::kOK)
+ << "Message could not be sent from worker with TMB client ID "
+ << worker_client_id_ << " to Foreman with TMB client ID " << receiver;
+}
+
+template <typename CompletionMessageProtoT>
+void Worker::executeWorkOrderHelper(const TaggedMessage &tagged_message,
+ CompletionMessageProtoT *proto) {
+ std::chrono::time_point<std::chrono::steady_clock> start, end;
+ WorkerMessage worker_message(
+ *static_cast<const WorkerMessage *>(tagged_message.message()));
+ DCHECK(worker_message.getWorkOrder() != nullptr);
+ const size_t query_id_for_workorder = worker_message.getWorkOrder()->getQueryID();
+
+ // Start measuring the execution time.
+ start = std::chrono::steady_clock::now();
+ worker_message.getWorkOrder()->execute();
+ end = std::chrono::steady_clock::now();
+ delete worker_message.getWorkOrder();
+ const uint64_t execution_time_microseconds =
+ std::chrono::duration_cast<std::chrono::milliseconds>(end - start)
+ .count();
+ // Construct the proto message.
+ proto->set_operator_index(worker_message.getRelationalOpIndex());
+ proto->set_query_id(query_id_for_workorder);
+ proto->set_worker_thread_index(worker_thread_index_);
+ proto->set_execution_time_in_microseconds(execution_time_microseconds);
}
} // namespace quickstep
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/8e825f15/query_execution/Worker.hpp
----------------------------------------------------------------------
diff --git a/query_execution/Worker.hpp b/query_execution/Worker.hpp
index c0bafdc..71d3ec9 100644
--- a/query_execution/Worker.hpp
+++ b/query_execution/Worker.hpp
@@ -19,6 +19,7 @@
#define QUICKSTEP_QUERY_EXECUTION_WORKER_HPP_
#include <cstddef>
+#include <cstdint>
#include "query_execution/QueryExecutionTypedefs.hpp"
#include "threading/Thread.hpp"
@@ -27,6 +28,8 @@
#include "tmb/id_typedefs.h"
#include "tmb/message_bus.h"
+namespace tmb { class TaggedMessge; }
+
namespace quickstep {
/** \addtogroup QueryExecution
@@ -93,18 +96,35 @@ class Worker : public Thread {
private:
/**
- * @brief Send the response WorkOrder completion message.
+ * @brief A helper method to execute the WorkOrder and construct a
+ * completion message.
+ *
+ * @note CompletionMessageProtoT is the type of the completion message.
+ * @note Right now a single helper method works for all message types.
+ * If different message types need to collect different statistics for
+ * the WorkOrder execution, we need to create different helper methods,
+ * one for each message type.
+ *
+ * @param tagged_message The TaggedMessage which consists of the WorkOrder.
+ * @param proto The proto message to be sent.
+ **/
+ template <typename CompletionMessageProtoT>
+ void executeWorkOrderHelper(const TaggedMessage &tagged_message,
+ CompletionMessageProtoT *proto);
+
+ /**
+ * @brief A helper method to send the WorkOrder completion message.
+ *
+ * @note CompletionMessageProtoT is the type of the completion message.
*
- * @param receiver The id of the TMB client which should receive the response.
- * @param op_index The index of the operator to which the WorkOrder belongs.
- * @param query_id The ID of the query which the WorkOrder belongs to.
- * @param is_rebuild_work_order True if it is a RebuildWorkOrder. Otherwise
- * false.
+ * @param receiver The TMB client ID of the receiver.
+ * @param proto The proto message to be sent.
+ * @param message_type The ID of the type of the message being sent.
**/
+ template <typename CompletionMessageProtoT>
void sendWorkOrderCompleteMessage(const tmb::client_id receiver,
- const std::size_t op_index,
- const std::size_t query_id,
- const bool is_rebuild_work_order);
+ const CompletionMessageProtoT &proto,
+ const message_type_id message_type);
const std::size_t worker_thread_index_;
MessageBus *bus_;
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/8e825f15/query_execution/tests/QueryManager_unittest.cpp
----------------------------------------------------------------------
diff --git a/query_execution/tests/QueryManager_unittest.cpp b/query_execution/tests/QueryManager_unittest.cpp
index 4f98748..37e2cdd 100644
--- a/query_execution/tests/QueryManager_unittest.cpp
+++ b/query_execution/tests/QueryManager_unittest.cpp
@@ -275,7 +275,7 @@ class QueryManagerTest : public ::testing::Test {
inline bool placeWorkOrderCompleteMessage(const QueryPlan::DAGNodeIndex index) {
VLOG(3) << "Place WorkOrderComplete message for Op[" << index << "]";
TaggedMessage tagged_message;
- serialization::WorkOrderCompletionMessage proto;
+ serialization::NormalWorkOrderCompletionMessage proto;
proto.set_operator_index(index);
proto.set_worker_thread_index(1); // dummy worker ID.
proto.set_query_id(0); // dummy query ID.
@@ -296,8 +296,7 @@ class QueryManagerTest : public ::testing::Test {
inline bool placeRebuildWorkOrderCompleteMessage(const QueryPlan::DAGNodeIndex index) {
VLOG(3) << "Place RebuildWorkOrderComplete message for Op[" << index << "]";
- // foreman_->processRebuildWorkOrderCompleteMessage(index, 0 /* worker id */);
- serialization::WorkOrderCompletionMessage proto;
+ serialization::RebuildWorkOrderCompletionMessage proto;
proto.set_operator_index(index);
proto.set_worker_thread_index(1); // dummy worker thread ID.
proto.set_query_id(0); // dummy query ID.
@@ -346,7 +345,6 @@ class QueryManagerTest : public ::testing::Test {
unique_ptr<QueryHandle> query_handle_;
unique_ptr<QueryManager> query_manager_;
- // unique_ptr<Foreman> foreman_;
MessageBusImpl bus_;
client_id worker_client_id_;
@@ -357,7 +355,6 @@ class QueryManagerTest : public ::testing::Test {
TEST_F(QueryManagerTest, SingleNodeDAGNoWorkOrdersTest) {
// This test creates a DAG of a single node. No workorders are generated.
query_plan_->addRelationalOperator(new MockOperator(false, false));
- // foreman_->setQueryPlan(query_plan_->getQueryPlanDAGMutable());
const MockOperator &op = static_cast<const MockOperator &>(
query_plan_->getQueryPlanDAG().getNodePayload(0));
@@ -377,7 +374,6 @@ TEST_F(QueryManagerTest, SingleNodeDAGStaticWorkOrdersTest) {
// This test creates a DAG of a single node. Static workorders are generated.
const QueryPlan::DAGNodeIndex id =
query_plan_->addRelationalOperator(new MockOperator(true, false, 1));
- // foreman_->setQueryPlan(query_plan_->getQueryPlanDAGMutable());
const MockOperator &op = static_cast<const MockOperator &>(
query_plan_->getQueryPlanDAG().getNodePayload(id));
@@ -429,7 +425,6 @@ TEST_F(QueryManagerTest, SingleNodeDAGDynamicWorkOrdersTest) {
// scaffolding of mocking. If we use gMock, we can do much better.
const QueryPlan::DAGNodeIndex id =
query_plan_->addRelationalOperator(new MockOperator(true, false, 4, 3));
- // foreman_->setQueryPlan(query_plan_->getQueryPlanDAGMutable());
const MockOperator &op = static_cast<const MockOperator &>(
query_plan_->getQueryPlanDAG().getNodePayload(id));