Как выполнить CQL-запрос описания с помощью Astyanax

Когда вы используете cqlsh с Cassandra, вы можете сделать запрос describe, чтобы получить информацию о таблице, например:

DESCRIBE TABLE emp;

И это даст вам что-то вроде:

CREATE TABLE emp (
  empid int PRIMARY KEY,
  deptid int,
  description text
) ...
....

Итак, как я могу запросить это, используя поддержку Astyanax для CQL. Я смог запросить простые операторы SELECT следующим образом:

OperationResult<CqlResult<String, String>> result
            = keyspace.prepareQuery(empColumnFamily)
              .withCql("Select * from emp;")
              .execute();

Но это не работает для операторов DESCRIBE.

PD: Я действительно делаю это, чтобы получить DATA TYPES таблицы, проанализировать ее позже и получить, например, int, int, text, поэтому, пожалуйста, если у вас есть другой подход к их получению, это может быть здорово.

Этот запрос select column, validator from system.schema_columns; не работает, поскольку он не возвращает составные ключи.


person eLRuLL    schedule 28.08.2013    source источник


Ответы (1)


DESCRIBE не является частью спецификации CQL (ни CQL2, ни CQL3). Если вы хотите полностью восстановить DESCRIBE, вы можете взглянуть на реализацию cqlsh (ищите print_recreate_columnfamily).

Вы также можете получить дополнительную метаинформацию от system.schema_columnfamilies:

select keyspace_name, columnfamily_name, key_validator from schema_columnfamilies;

person Alex Popescu    schedule 28.08.2013
comment
Отлично, это то, что я в итоге сделал. - person eLRuLL; 28.08.2013