Сбой вызова timescaledb drop_chunks () с ошибкой не найденной функции при использовании драйвера JDB C - PullRequest
0 голосов
/ 06 февраля 2020

Когда я запускаю следующий код

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

Чего мне здесь не хватает?

1 Ответ

0 голосов
/ 08 февраля 2020

Хорошо, мне не хватало знания, что функции задаются схемой c, поэтому в моем случае мне пришлось указать схему. Таким образом, правильный запрос был:

"SELECT public.drop_chunks(interval '24 hours', 'truck_message'::name)"
...