# Changelog

This page details new additions to the stream processor engine in major release versions of Fluent Bit.

## Fluent Bit v1.2

> Release date: June 27, 2019

### Sub-key selection and conditionals support

Added the ability to use nested maps and sub-keys to perform conditions and key selections. For example, consider the following record:

```javascript
{
  "key1": 123,
  "key2": 456,
  "key3": {
    "sub1": {
      "sub2": 789
    }
  }
}
```

Now you can perform queries like:

```sql
SELECT key3['sub1']['sub2'] FROM STREAM:test WHERE key3['sub1']['sub2'] = 789;
```

### New @record functions

For conditionals, added the new *@record* functions:

| Function                | Description                                                               |
| ----------------------- | ------------------------------------------------------------------------- |
| `@record.time()`        | Returns the record timestamp.                                             |
| `@record.contains(key)` | Returns `true` or false if `key` exists in the record, or `false` if not. |

### `IS NULL` and `IS NOT NULL`

Added `IS NULL` and `IS NOT NULL` statements to determine whether an existing key in a record has a null value. For example:

```sql
SELECT * FROM STREAM:test WHERE key3['sub1'] IS NOT NULL;
```

For more details, see [Check keys and null values](/manual/4.0/stream-processing/get-started/check-keys-null-values.md).

## Fluent Bit v1.1

> Release date: 2019-05-09

Added the stream processor to Fluent Bit.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.fluentbit.io/manual/4.0/stream-processing/changelog.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
