---
title: SQL Collector
slug: changelog/sql-collector
docTags: 
createdAt: 2025-12-23T08:32:18.150Z
---

:::hint{type="warning"}
Always check the compatibility matrix below before installing a new version.
:::

## Compatibility

Collectors of all versions >= v1.0.0 are compatible with all Factry Historian versions >= v4.0.0, in both directions. However, for certain functionalities, certain minimum versions of the collector and Factry Historian are required.
More information is always available in the release notes.

### Feature Compatibility Matrix

This is the compatibility matrix for version listed on this page. If you have downloaded a newer version than the one listed on this page please check the release notes of that version.

| Feature                | SQL Collector Version | Factry Historian Version |
| ---------------------- | --------------------- | ------------------------ |
| Multiline query string | >= v1.0.11            | >= v6.3                  |
| Collector Auto Update  | >= v1.1.0             | >= v6.4.0                |

## v1.7.2

Released on 28/09/2026

### Bug fixes

- Fixed the collector never moving the last update time past a row whose measurement key matches no measurement. The last update time stayed below that row for as long as the key was not configured, so every query read a wider range than the one before, until it ran into the query timeout. A query with a row limit stopped collecting altogether once a whole page of rows matched no measurement. Those rows are now skipped and the last update time moves past them. Set the last update time in the collector state to collect rows that are older than a measurement.
- Fixed a query that times out while its result is read making no progress at all. The collector kept the points it had read but not the last update time, so the next query read the same range again. When the query returns its rows ordered by the updated column, the collector now keeps the complete part it read. Order the query result by 'updated' ascending, without a row limit.
- The collector no longer writes a log line per row it cannot collect, and looks the measurements up once per query instead of once per row. Both cost time inside the query timeout, on the results that could least afford it.
- The warning about rows that match no measurement now names the first key it could not match.

## v1.7.1

Released on 21/09/2026

### Bug fixes

- Fixed the collector hanging on "Initializing collector" after an update to v1.7.0. Updated the base collector to v4.3.1, which fixes the deadlock behind it.
- Fixed every log line being written to the collector log file twice.

## v1.7.0

Released on 03/09/2026

### Changes

- Updated the base collector to v4.3.0
- The collector no longer queries the database while it has no active measurements.
- The collector now decides per row whether the last update time may pass it. A row whose measurement key matches no measurement holds the last update time back, so a measurement configured later still collects it. A row with an unreadable timestamp is skipped and logged.

### Bug fixes

- Fixed the collector reading the whole table on every query interval when it had not collected any data yet. It now starts from the moment of its first start. Set the last update time in the collector state to collect older rows.
- Fixed rows being collected twice, or being skipped, around a restart, a pause or a resume.
- Fixed crashes when measurements were added, updated or activated while the collector was running.
- Fixed the collector state failing to update after an upgrade from a version older than v1.3.0.
- Fixed the collector health staying on an old error after the queries recovered or after the collector was paused. Health now also reports "No active measurements".
- Fixed rows being skipped when the query timeout ended a query result halfway. The collector read the part it received as the whole result.
- Fixed the database heartbeat of a paused collector staying alive after a resume. Every pause and resume added one, and each reported a connection status of its own.
- Fixed a paused collector being reported as collecting. The database heartbeat could report the connection status after the collector stopped.
- Fixed a last update time set in Historian being replaced when the collector was paused and resumed while a batch was on its way to the historian. The next resume skipped the rows that value asked for.
- The collector now warns when a query returns rows it cannot collect: rows that match no measurement, rows with an unreadable timestamp, and rows it cannot read. It warns once per kind per query, with a count, instead of once per row.

## v1.6.0

Released on 19/08/2026

### Bug fixes

- Fixed the collector staying stuck on "Error executing query" when the database session died without the driver reporting it. The collector now rebuilds the connection after two consecutive query failures. Note: a query that keeps failing at execution also triggers a reconnect every two query intervals, until the query is fixed or the collector is paused.
- Fixed QueryTimeout not cancelling running queries on ODBC connections.
- Updated the ODBC driver to fix a possible deadlock or crash when a query completes while it is being cancelled.

## v1.5.2

Released on 16/07/2026

### Changes

- Updated the base collector to v3.5.3

## v1.5.1

Released on 04/06/2026

### Bug fixes

- Fixed a reconnect regression after query preparation errors. The SQL client now fully resets the database handle so heartbeat can retry connection and statement preparation.
- Fixed health/status handling while disconnected. Polling no longer reports repeated "Error executing query: client not connected to db" and no longer overwrites "Error preparing query" until reconnect succeeds.

## v1.5.0

Released on 07/05/2026

### Changes

- Added support for SQLite on all platforms. The old "sqlite3" driver name is still supported but will be changed to "sqlite" internally.
- Added support for custom timestamp layouts for parsing timestamps returned as strings or integers. Timestamps returned as native time values by the driver are not affected. The timestamp layout can be set with the new "TimestampLayout" setting, supported values are RFC3339 (default), UNIX, UNIXMILLIS, UNIXMICROS, UNIXNANOS or a custom Go time layout.

## v1.4.0

Released on 22/01/2026

### Changes

- [Updated the base collector to v3.5.2](docId\:dJs1GFlKyD1m31dXQH5CU)

## v1.3.0

Released on 13/02/2025

### Changes

- Added support for ODBC datasources on linux/amd64 and windows
- Removed support for SQLite datasources on anything but linux/amd64
- Last update time of the collector is now in the collector state and can be changed with Factry Historian

## v1.2.3

Released on 29/01/2025

### Changes

- Disabled streaming until a data loss fix is implemented
- [Updated the base collector to v2.7.3](docId\:dJs1GFlKyD1m31dXQH5CU)

## v1.2.2

Released on 02/01/2025

### Changes

- [Updated the base collector to v2.7.1](docId\:dJs1GFlKyD1m31dXQH5CU)

## v1.2.1

Released on 06/11/2024

### Changes

- Made the query string optional, an empty query string will be executed on the database
- [Updated the base collector to v2.6.1](docId\:dJs1GFlKyD1m31dXQH5CU)

## v1.2.0

Released on 03/10/2024

### Changes

- [Updated the base collector to v2.6.0](docId\:dJs1GFlKyD1m31dXQH5CU)

## v1.1.4

### Bug fixes

- Revert the change to escape username and password for connection string as this does not work for all database types

## v1.1.3

### Bug fixes

- Fixed missing collector health change after query timeout fixed
- Escape username and password for connection string

## v1.1.2

Released on 07/06/2024

### Changes

- Added support for performance monitoring with Pyroscope

### Bug fixes

- Restored windows 7 compatibility
- [Updated base collector to v2.4.8](docId\:dJs1GFlKyD1m31dXQH5CU)

## v1.1.1

### Changes

- Fixed a bug where the collector would not pause a measurement
- [Updated base collector to v2.4.3](docId\:dJs1GFlKyD1m31dXQH5CU)

## v1.1.0

### Changes

- Added support for auto-updating. Requires historian server >= v6.4.0
- Added query timeout setting
- [Updated base collector to v2.4.0](docId\:dJs1GFlKyD1m31dXQH5CU)

## v1.0.11

### Changes

- Made query string setting multiline, requires historian v6.3

## v1.0.10

### Changes

- Removed 32-bit builds due to a dependency not supporting it

## v1.0.9

### Changes

- Changed the ASE package

## v1.0.8

### Changes

- Added username and password fields to collector settings

### Bug fixes

- Fix collector health not always updating correctly

## v1.0.7

### Bug fixes

- Fixed heartbeat running twice after unpausing
- Fixed measurements not being picked up after unpausing

### Changes

- [Updated the base collector to v1.2.14](docId\:dJs1GFlKyD1m31dXQH5CU)

## v1.0.6

### Changes

- [Updated the base collector to v1.2.12](docId\:dJs1GFlKyD1m31dXQH5CU)

## v1.0.5

### Changes

- [Updated the base collector to v1.2.9](docId\:dJs1GFlKyD1m31dXQH5CU)

## v1.0.4

### Changes

- [Updated the base collector to v1.2.8](docId\:dJs1GFlKyD1m31dXQH5CU)

## 1.0.3

### Bug fixes

- Fixed reading of tags

## 1.0.1

### Changes

- Add drivers for SAP HANA/ASE

## 1.0.0

Initial release of the SQL collector

Includes drivers for:

- postgres
- oracle
- sqlserver
- mysql
- sqlite3
