Calcite sql ock query Query Fail с ошибкой "несколько записей с тем же ключом"JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Calcite sql ock query Query Fail с ошибкой "несколько записей с тем же ключом"

Сообщение Anonymous »

Я пытаюсь выполнить запрос соединения SQL в двух разных базах данных (Tackroachdb и H2), используя Apache Calcite. Запрос работает нормально при выполнении непосредственно в соответствующих базах данных, но когда я пытаюсь запустить его через кальцит, я сталкиваюсь с следующей ошибкой: < /p>

Код: Выделить всё

Error executing query: Error while executing SQL "EXPLAIN PLAN FOR SELECT c.customer_name, o.order_id, o.order_date FROM CRDB.customers c JOIN H2DB.orders o ON c.customer_id = o.customer_id": Multiple entries with same key: primary=JdbcTable {primary} and primary=JdbcTable {primary}
< /code>
Вот соответствующая часть моего кода Java: < /p>
// Initialize Calcite connection with case-sensitive settings
Properties info = new Properties();
info.setProperty("lex", Lex.MYSQL.name());
info.setProperty("caseSensitive", "true");
Connection connection = DriverManager.getConnection("jdbc:calcite:", info);
CalciteConnection calciteConnection = connection.unwrap(CalciteConnection.class);
SchemaPlus rootSchema = calciteConnection.getRootSchema();

// Connect to CockroachDB
org.postgresql.ds.PGSimpleDataSource cockroachDS = new org.postgresql.ds.PGSimpleDataSource();
cockroachDS.setUrl("jdbc:postgresql://localhost:26257/sample");
cockroachDS.setUser("root");
cockroachDS.setPassword("");

// Connect to H2
org.h2.jdbcx.JdbcDataSource h2DS = new org.h2.jdbcx.JdbcDataSource();
h2DS.setURL("jdbc:h2:testdata;AUTO_SERVER=TRUE");
h2DS.setUser("");
h2DS.setPassword("");

// Add schemas
rootSchema.add("CRDB",
JdbcSchema.create(rootSchema, "CRDB", cockroachDS,
"sample",  // catalog
"public")); // schema

rootSchema.add("H2DB",
JdbcSchema.create(rootSchema, "H2DB", h2DS,
"DEFAULT",  // catalog
"PUBLIC")); // schema

// Execute join query with simplified schema references
String sql =
"SELECT c.customer_name, o.order_id, o.order_date " +
"FROM CRDB.customers c " +
"JOIN H2DB.orders o ON c.customer_id = o.customer_id";

try (Statement statement = calciteConnection.createStatement()) {
System.out.println("Executing query: " + sql);

// Enable debug logging
statement.execute("EXPLAIN PLAN FOR " + sql);
ResultSet explainRs = statement.getResultSet();
System.out.println("\nQuery Plan:");
while (explainRs.next()) {
System.out.println(explainRs.getString(1));
}

// Execute actual query
ResultSet rs = statement.executeQuery(sql);

// Print results
System.out.println("\nQuery Results:");
while (rs.next()) {
System.out.printf("Customer: %s, Order ID: %s, Date: %s%n",
rs.getString(1),
rs.getString(2),
rs.getString(3));
}
} catch (SQLException e) {
System.err.println("Error executing query: " + e.getMessage());
e.printStackTrace();
}

// Clean up
connection.close();
< /code>
[b] Дополнительная информация: < /strong>
версия кальцита: 1.38.0
tockroachdb Версия: 24.*
H2 Версия базы данных: 2.3
java версия: 21 < /p>
 Что я попробовал: < /strong> < /p>
[list]
[*] Убедился, что таблицы клиентов 
и orders существуют в их соответствующих базах данных. > Попробовал запустить запрос непосредственно в обеих базах данных, что работает нормально.
[/list]
Вопрос: [/b] < Br /> Что может вызвать ошибку «несколько записей с тем же ключом» в кальците, и как я могу решить ее для успешного выполнения запроса соединения в двух базах данных? Если возможно, исправьте код.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -key-error
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»