Когда я запускаю следующий код
dataSource = new HikariDataSource(config);
try (Connection conn = dataSource.getConnection();
Statement stmt = conn.createStatement()) {
stmt.execute("SELECT drop_chunks(interval '24 hours', 'truck_message')");
ResultSet rs = stmt.getResultSet();
log.info("Executed drop_chunks() call. ResultSet: {}", rs);
} catch (SQLException ex) {
log.warn("Failed to execute drop_chunks() call", ex);
}
, я получаю следующую ошибку:
WARN [Thread Group 1-3] c.g.TruckMessageSampler: Failed to execute drop_chunks() call
org.postgresql.util.PSQLException: ERROR: function drop_chunks(interval, unknown) does not exist
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Я могу выполнить этот запрос через psql postgres клиента без проблем, но не через мое Java приложение, которое использует соединение JDB C, предоставленное HikariCP. Я следовал подсказке в журнале и пробовал несколько разных идей:
Я пробовал два других варианта исходного запроса
"SELECT drop_chunks(interval '24 hours', 'truck_message'::name)"
и
"SELECT drop_chunks(older_than => interval '24 hours', schema_name=> 'vitm'::name, table_name => 'truck_message'::name)"
Все это привести к той же ошибке. Функция является расширением Timescaledb c, которое является расширением postgres и определяется следующим образом:
someuser=# \df drop_chunks
List of functions
-[ RECORD 1 ]-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Schema | public
Name | drop_chunks
Result data type | SETOF regclass
Argument data types | older_than "any" DEFAULT NULL::unknown, table_name name DEFAULT NULL::name, schema_name name DEFAULT NULL::name, cascade boolean DEFAULT false, newer_than "any" DEFAULT NULL::unknown, "verbose" boolean DEFAULT false, cascade_to_materializations boolean DEFAULT NULL::boolean
Type | func
Чего мне здесь не хватает?