diff --git a/CHANGELOG.md b/CHANGELOG.md index ea85cec..9324067 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.16.0] - 2024-02-14 + +### Changed + +* Ignore explain plan queries, which are generated by tw-reliable-jdbc, as they do not really access the tables and JSQLParser fails to parse them + + ## [2.15.0] - 2024-01-25 * Upgrading libraries, mainly the JSqlParser, to support more queries out of the box. diff --git a/gradle.properties b/gradle.properties index 6efb360..8a42493 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -version=2.15.0 +version=2.16.0 diff --git a/tw-entrypoints/src/main/java/com/transferwise/common/entrypoints/tableaccessstatistics/DefaultTasQueryParsingInterceptor.java b/tw-entrypoints/src/main/java/com/transferwise/common/entrypoints/tableaccessstatistics/DefaultTasQueryParsingInterceptor.java index a17b3a1..450e8a5 100644 --- a/tw-entrypoints/src/main/java/com/transferwise/common/entrypoints/tableaccessstatistics/DefaultTasQueryParsingInterceptor.java +++ b/tw-entrypoints/src/main/java/com/transferwise/common/entrypoints/tableaccessstatistics/DefaultTasQueryParsingInterceptor.java @@ -5,7 +5,7 @@ public class DefaultTasQueryParsingInterceptor implements TasQueryParsingInterceptor { - private static Pattern PG_SET_PATTERN = Pattern.compile("(?is)SET\\s+[a-z_]*\\s+TO\\s+.*"); + private static final Pattern PG_SET_PATTERN = Pattern.compile("(?is)SET\\s+[a-z_]*\\s+TO\\s+.*|EXPLAIN\\s+.*"); @Override public InterceptResult intercept(String sql) { diff --git a/tw-entrypoints/src/test/java/com/transferwise/common/entrypoints/tableaccessstatistics/SqlParserUtilsTest.java b/tw-entrypoints/src/test/java/com/transferwise/common/entrypoints/tableaccessstatistics/SqlParserUtilsTest.java index 0e7de72..92b0aef 100644 --- a/tw-entrypoints/src/test/java/com/transferwise/common/entrypoints/tableaccessstatistics/SqlParserUtilsTest.java +++ b/tw-entrypoints/src/test/java/com/transferwise/common/entrypoints/tableaccessstatistics/SqlParserUtilsTest.java @@ -41,6 +41,15 @@ void testJSqlParser() { testCases.add(new TestCase("set idle_in_transaction_session_timeout to '600000'", List.of())); + testCases.add(new TestCase("EXPLAIN FORMAT=JSON select * from fx.request where id = 1", + List.of())); + testCases.add(new TestCase("explain FORMAT=JSON select * from fx.request where id = 1", + List.of())); + testCases.add(new TestCase("EXPLAIN (FORMAT JSON) select * from fx.request where id = 1", + List.of())); + testCases.add(new TestCase("explain (FORMAT JSON) select * from fx.request where id = 1", + List.of())); + testCases.add(new TestCase("insert into fin_unique_tw_task_key(task_id,key_hash,key) values(?, ?, ?) on conflict (key_hash, key) do nothing", List.of("fin_unique_tw_task_key")));