Introducing BAD-CQ

a. Active datasets
  Active datasets are like regular datasets that can be
  inserted/upserted/deleted with statements and fed with data feeds
  directly.  Records stored in active datasets contain an additional
  active timestamp field (implemented using meta-records). The active
  timestamp is assigned inside the storage, right before persistence.
  This patch introduced new syntactic components to enable creating
  active datasets.  It also created a BAD query translator to make sure
  all DML statements can operate on active datasets.
b. Continuous channels
  Continuous channels are built on repetitive channels but provide
  continuous query semantics. To ensure that, this patch introduced an
  active timestamp manager on each node to manage channel execution
  times locally. Active timestamp managers are a local class that is
  tied to a JVM on a node. There is also an optimization rule for
  ensuring continuous query semantics in a distributed environment.
c. Active functions
  Active functions are used for helping users create continuous queries.
  They were added through the extension APIs.
d. BAD Islands
  As an application built on BAD-CQ, BAD islands show how we connect
  data channels to data feeds and share data between different BAD
  systems declaratively.
e. Cleanups and fixes
  This patch also cleaned up the BAD codebase and introduced tests for
  metadata, optimizer, and runtime. It fixed a type inferencing issue in
  InsertBrokerNotifierForChannelRule when there is a group-by in the
  query. Also, it optimized the broker notification delivery to use
  separate threads.

Change-Id: I77263c3fedd03205b83fe13978649b33fccda11c
239 files changed
tree: baa6bfe9343262d7877915e52e2a781695f997e8
  1. .gitignore
  2. asterix-bad/
  3. asterix-opt-bom/
  4. pom.xml