Skip to content

TCS: mirror info on prepared statements via jdbc/adbc from 1.0 #5287

@lenkis

Description

@lenkis

Related dev. resources:

Product: TCS
Since: 0.29
Audience/target: admins, end users (finops)
Root document: https://www.tarantool.io/ru/column-store/doc/latest/
SME: Алексей Андреев, Павел Сергеев

Details

В 0.х доку надо добавить информацию по работе с аналитическими расчетами через jdbc/adbc из 1.0:
https://docs.d.tarantool.io/ru/column-store/doc/1.x/user_guide/dbc_drivers/#dbc-prepared

Отличия:
(1) в 1.0 пока не работает вариант через jdbc https://jira.vk.team/browse/TNTP-3900
(2) когда заработает, то будут разные строки соединения для 1.х и 0.х в jdbc:

  • для 0.х: jdbc:arrow-flight-sql://tcs:tcs@localhost:50051?useEncryption=false
  • для 1.х: jdbc:arrow-flight-sql://localhost:50051?useEncryption=false&user=tcs&password=tcs

Но это всё может динамично поменяться. Необходимо перепроверять с SME!!!


Полный текст статьи (для копи-паста перейти в режим edit этого тикета):


(dbc-prepared)=
## Работа с аналитическими расчетами

TCS поддерживает два вида аналитических расчетов:
- перманентные (хранятся в базе данных)
- временные (работают только в пределах сессии)

Перманентные аналитические расчеты специфичны для TCS.
Они создаются и вызываются только через SQL. Для этого используется код запуска
вида `PREPARE my_func(INT) AS <query>` и последующий вызов через EXECUTE.
При работе с TCS по протоколу HTTP доступен только этот вид аналитических расчетов.
Подробнее см. [](queries-computation).

Временные аналитические расчеты представляют собой переменную-объект в языке программирования.
Они создаются и вызываются только через библиотечные API с помощью кода вызова
вида `my_db.Prepare(sql)`. Подробнее см. ниже.

Аналитические расчеты разных видов можно комбинировать, но с ограничениями:
- Из временного расчета можно выполнить перманентный расчет, вызвав его по имени в помощью `.execute()`.
- Вызвать временный расчет из перманентного нельзя, потому что у временных расчетов нет имени для привязки.

(dbc-prepared-jdbc)=
### Работа с аналитическими расчетами через JDBC

Требуется JDBC-драйвер `flight-sql-dbc-driver` версии не ниже 18.3.0.

Для работы с этим драйвером нужно установить зависимость в клиентском приложении.

Пример: добавление зависимости в `pom.xml`:

org.apache.arrow flight-sql-jdbc-driver 18.3.0 ```

Пример: строка соединения:

jdbc:arrow-flight-sql://localhost:50051?useEncryption=false&user=tcs&password=tcs
В текущей версии TCS поддержано исполнение аналитических расчетов только через `.execute()`.
Исполнение через .addBatch() и .executeBatch() пока не поддержано.

(dbc-prepared-adbc)=

Работа с аналитическими расчетами через ADBC

Требуется драйвер go adbc версии не ниже 1.7.0.

Пример кода создания/вызова:

prepared, err := db.Prepare("SELECT * FROM t WHERE a=$1")
if err != nil {
    log.Fatalf("Failed to prepare the statement: %v", err)
}
var num int32
var str string
if err = prepared.QueryRow(1).Scan(&num, &str); err != nil {
    log.Fatalf("Failed to execute query: %v", err)
}
fmt.Println(num, str)

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions