Skip to content

Releases: bullet-db/bullet-bql

Log4j provided and only Slf4j

11 Jan 23:14
Compare
Choose a tag to compare

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

23 Sep 19:44
Compare
Choose a tag to compare

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

01 Sep 23:48
Compare
Choose a tag to compare

This release updates to Bullet Core 1.5.0 and supports the new features added there

Bullet Core 1.4.4

02 Aug 23:30
Compare
Choose a tag to compare

Bullet Core 1.4.2

30 Jun 20:06
Compare
Choose a tag to compare

[BUGFIX] Fixes LazyPubSubMessageSerDe clobbering Metadata

28 Jun 22:10
Compare
Choose a tag to compare

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

24 Jun 18:41
Compare
Choose a tag to compare

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

09 Jun 22:02
Compare
Choose a tag to compare

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

13 May 23:34
Compare
Choose a tag to compare

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

27 Apr 19:52
Compare
Choose a tag to compare