Skip to content

Releases: grafana/xk6-sql

v1.0.0

05 Nov 14:13
e6f1b6d
Compare
Choose a tag to compare

🎉 xk6-sql v1.0.0 is here!

Modularization

This release contains a major refactoring, the modularization of the previously monolithic xk6-sql. The database driver integrations have been extracted into separate k6 driver extensions.

Although modularization means a small API modification, it is basically a breaking change!

How it Works

The SQL database driver integration is implemented in a separate k6 extension. The JavaScript API of this extension contains a single default export whose type is JavaScript Symbol and is used to specify the database driver in the xk6-sql API.

The use of the Symbol type is necessary in order to force the import of the driver module.

import sql from "k6/x/sql"
import sqlite3 from "k6/x/sql/sqlite3"

const db = sql.open(sqlite3, "./test.db")

Drivers

For easier discovery, the xk6-sql-driver topic is included in the database driver extensions repository. The xk6-sql-driver GitHub topic search therefore lists the available driver extensions.

During the refactoring, the following k6 SQL database driver extensions were created from the database drivers previously embedded in the xk6-sql extension:

The following template repository can be used to create a new driver extension: https://github.com/grafana/xk6-sql-driver-ramsql

Solved problems

  1. New SQL database type support (integration of new golang database/sql driver) does not require changes to the source code of xk6-sql and the release of xk6-sql.

  2. Supporting additional database drivers does not increase the size of k6. Since the database drivers are implemented in a separate k6 extension, it is sufficient to embed only the drivers you want to use.

  3. The SQL database driver integration created by the community can be maintained by the community. Since database drivers are implemented as k6 extensions, the community can create and maintain driver modules independently of Grafana.

  4. Drivers may have different requirements. For example, cgo (CGO_ENABLED) should only be enabled if a driver needs it. (like sqlite3).

  5. From the security perspective, the attack surface is smaller if fewer dependencies are embedded.

Build

The xk6 build tool can be used to build a k6 that will include xk6-sql extension and database drivers.

Important

In the command line bellow, xk6-sql-driver-ramsql is just an example, it should be replaced with the database driver extension you want to use.
For example use --with github.com/grafana/xk6-sql-driver-mysql to access MySQL databases.

xk6 build --with github.com/grafana/xk6-sql@latest --with github.com/grafana/xk6-sql-driver-ramsql@latest

API Compatibility

The xk6-sql JavaScript API changes in an incompatible way because of the driver parameter type becomes Symbol instead of String.

API documentation

A TypeScript declaration file was created for the xk6-sql API, from which an API documentation site is generated.

MySQL TLS support

MySQL TLS configuration support has been moved to the driver extension: https://github.com/grafana/xk6-sql-driver-mysql

It is important to note that the MySQL TLS configuration API will change in the future.

v0.4.1

10 Sep 14:39
Compare
Choose a tag to compare

What's Changed

New Contributors

v0.4.0

29 Apr 09:10
ee73a49
Compare
Choose a tag to compare

What's Changed

  • feat: Support Azure Active Directory authentication for Microsoft SQL Server #55 (Thanks to @JBodkin-Amphora)
  • feat: Adding clickhouse support in k6 #58 (Thanks to @samof76)
  • fix: Critical vulnerability in go net #62 (Thanks to @kempsterc)

v0.3.0

01 Dec 14:46
8b5fc6b
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.2.1...v0.3.0

v0.2.1

04 Aug 17:32
ab7c0ab
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.2.0...v0.2.1

v0.2.0

03 Aug 19:31
2fdebb6
Compare
Choose a tag to compare

What's Changed

  • Fixing mssql_test.js example with correct sp_executesql syntax by @leandrodotec in #40
  • Upgrade dependencies to address vulnerability by @javaducky in #44

New Contributors

Full Changelog: v0.1.1...v0.2.0

v0.1.1

28 Apr 18:48
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.1.0...v0.1.1

v0.1.0

12 Apr 20:58
5910271
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.0.1...v0.1.0

v0.0.1

16 May 21:12
9c6ae90
Compare
Choose a tag to compare

Simply starting to version going forward.