Releases: bullet-db/bullet-bql
Log4j provided and only Slf4j
Upgrades to Bullet Core 1.5.2
We now only have a compile time dependency on slf4j-api
. The binding to log4j is marked as provided so dependent projects can use whatever logging implementation they want. If log4j is desired, then those projects can depend on the binding and mark it as as scope compile
.
HASH function, LazyPubSubMessageSerDe copies input
Uses Bullet Core 1.5.1.
Adds support for the HASH
function to hash fields.
LazyPubSubMessageSerDe
now copies the input PubSubMessage instead of modifying the input
Nested Lateral View Explode and subqueries with Bullet Core 1.5.0
This release updates to Bullet Core 1.5.0 and supports the new features added there
Bullet Core 1.4.4
Updates to Bullet Core 1.4.4
Bullet Core 1.4.2
Updates to Bullet Core 1.4.2
[BUGFIX] Fixes LazyPubSubMessageSerDe clobbering Metadata
The LazyPubSubMessageSerDe created a new Metadata in LazyPubSubMessageSerDe#fromMessage
. This clobbered the created timestamp as well any PubSub specific metadata overrides. Now the SerDe simply modifies the input message in place.
LazyPubSubMessageSerDe
Adds a com.yahoo.bullet.bql.query.LazyPubSubMessageSerDe
implementation for decreasing the Storage and PubSub usage while pushing the Query creation to the backend.
This PubSubMessageSerDe
is to be used to create a PubSubMessage
for a query without actually creating the Query
object. The Query is instead created when reading the message back. TheBulletConfig
provided to this class is used to configure BQL and the Query
.
The BQL query string is stored as the payload in the {@link PubSubMessage} and it is not set in the message Metadata
. It is added back in fromMessage(PubSubMessage)
and the query string is converted back to a Query using the toQuery(String)
method (that you can extend and override) and configured with the provided BulletConfig
.
The toMessage(PubSubMessage)
does nothing by default, so you can safely use it for sending signals and other messages or even regular query PubSubMessages! This SerDe identifies its lazy Query messages by placing a Metadata.Signal#CUSTOM
in its metadata. This is what it uses to process its messages in the fromMessage(PubSubMessage)
. You will want to not send other messages with that signal.
It is essential that the BQL query provided be valid if using the default BQL conversion in toQuery(String)
! Otherwise, fromMessage(PubSubMessage)
will throw a RuntimeException
when it cannot create a {@link Query} object from the BQL query string.
Supports UPPER, LOWER and MOD
Three new operations:
MOD
: Remainder after division (can be negative). This is not a function and is applied with the %
operator
LOWER
: Lowercases a string
UPPER
: Uppercases a string
- Fixes operator precedence with RLIKE/IN/BETWEEN with AND, OR and NOT. Previously AND, OR and NOT had higher precedence.
- Allows booleans to be used in group operations and distributions (e.g. SUM(x IS NOT NULL)).
- Adds the NOW keyword which basically gets substituted with the current unix time in milliseconds when the bql is parsed. e.g.
SELECT abc FROM STREAM(MAX, TIME) WHERE timestamp > NOW
Uses bullet-core-1.3.2
Supports EXPLODE, LATERAL VIEW, NOT RLIKE, NOT RLIKE ANY, TRIM, ABS, BETWEEN, NOT BETWEEN, SUBSTRING, UNIXTIMESTAMP
This release updates to Bullet Core 1.3.1 and adds support in BQL for:
EXPLODE
- for exploding maps and lists into constituents in the SELECT
or with a LATERAL VIEW
LATERAL VIEW
- to be used with EXPLODE
to generate a cross product with the exploded field and a row for all rows in a result
NOT RLIKE
, NOT RLIKE ANY
- the NOT versions of the supported RLIKE
and RLIKE ANY
BETWEEN
and NOT BETWEEN
- two functions to check if a numeric or a string typed value is between two other values or fields
SUBSTRING
- to get parts of a String with support for negative indexing
UNIXTIMESTAMP
- to get the current UTC unix timestamp or to convert a given date argument or field into a unix timestamp with an optional pattern for parsing the date
First release using Screwdriver
No new changes