use of com.datastax.oss.driver.api.core.type.DataType in project java-driver by datastax.
the class DefaultTupleValue method equals.
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof TupleValue)) {
return false;
}
TupleValue that = (TupleValue) o;
if (!type.equals(that.getType())) {
return false;
}
for (int i = 0; i < values.length; i++) {
DataType innerThisType = type.getComponentTypes().get(i);
DataType innerThatType = that.getType().getComponentTypes().get(i);
if (!innerThisType.equals(innerThatType)) {
return false;
}
Object thisValue = this.codecRegistry().codecFor(innerThisType).decode(this.getBytesUnsafe(i), this.protocolVersion());
Object thatValue = that.codecRegistry().codecFor(innerThatType).decode(that.getBytesUnsafe(i), that.protocolVersion());
if (!Objects.equals(thisValue, thatValue)) {
return false;
}
}
return true;
}
use of com.datastax.oss.driver.api.core.type.DataType in project java-driver by datastax.
the class DefaultUdtValue method equals.
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof UdtValue)) {
return false;
}
UdtValue that = (UdtValue) o;
if (!type.equals(that.getType())) {
return false;
}
for (int i = 0; i < values.length; i++) {
DataType innerThisType = type.getFieldTypes().get(i);
DataType innerThatType = that.getType().getFieldTypes().get(i);
Object thisValue = this.codecRegistry().codecFor(innerThisType).decode(this.getBytesUnsafe(i), this.protocolVersion());
Object thatValue = that.codecRegistry().codecFor(innerThatType).decode(that.getBytesUnsafe(i), that.protocolVersion());
if (!Objects.equals(thisValue, thatValue)) {
return false;
}
}
return true;
}
use of com.datastax.oss.driver.api.core.type.DataType in project java-driver by datastax.
the class DefaultCreateAggregate method asCql.
@NonNull
@Override
public String asCql() {
StringBuilder builder = new StringBuilder();
builder.append("CREATE ");
if (orReplace) {
builder.append("OR REPLACE ");
}
builder.append("AGGREGATE ");
if (ifNotExists) {
builder.append("IF NOT EXISTS ");
}
CqlHelper.qualify(keyspace, functionName, builder);
builder.append(" (");
boolean first = true;
for (DataType param : parameters) {
if (first) {
first = false;
} else {
builder.append(',');
}
builder.append(param.asCql(false, true));
}
builder.append(')');
if (sFunc != null) {
builder.append(" SFUNC ");
builder.append(sFunc.asCql(true));
}
if (sType != null) {
builder.append(" STYPE ");
builder.append(sType.asCql(false, true));
}
if (finalFunc != null) {
builder.append(" FINALFUNC ");
builder.append(finalFunc.asCql(true));
}
if (term != null) {
builder.append(" INITCOND ");
term.appendTo(builder);
}
return builder.toString();
}
use of com.datastax.oss.driver.api.core.type.DataType in project java-driver by datastax.
the class RequestLogFormatter method appendValues.
/**
* @return the number of values that can still be appended after this, or -1 if the max was
* reached by this call.
*/
protected int appendValues(Request request, int maxValues, int maxValueLength, boolean addSeparator, StringBuilder builder) {
if (request instanceof BatchStatement) {
BatchStatement batch = (BatchStatement) request;
for (BatchableStatement<?> child : batch) {
maxValues = appendValues(child, maxValues, maxValueLength, addSeparator, builder);
if (addSeparator) {
addSeparator = false;
}
if (maxValues < 0) {
return -1;
}
}
} else if (request instanceof BoundStatement) {
BoundStatement statement = (BoundStatement) request;
ColumnDefinitions definitions = statement.getPreparedStatement().getVariableDefinitions();
List<ByteBuffer> values = statement.getValues();
assert definitions.size() == values.size();
if (definitions.size() > 0) {
if (addSeparator) {
builder.append(' ');
}
builder.append('[');
for (int i = 0; i < definitions.size(); i++) {
if (i > 0) {
builder.append(", ");
}
maxValues -= 1;
if (maxValues < 0) {
builder.append(FURTHER_VALUES_TRUNCATED);
return -1;
}
builder.append(definitions.get(i).getName().asCql(true)).append('=');
if (!statement.isSet(i)) {
builder.append("<UNSET>");
} else {
ByteBuffer value = values.get(i);
DataType type = definitions.get(i).getType();
appendValue(value, type, maxValueLength, builder);
}
}
builder.append(']');
}
} else if (request instanceof SimpleStatement) {
SimpleStatement statement = (SimpleStatement) request;
if (!statement.getPositionalValues().isEmpty()) {
if (addSeparator) {
builder.append(' ');
}
builder.append('[');
int i = 0;
for (Object value : statement.getPositionalValues()) {
if (i > 0) {
builder.append(", ");
}
maxValues -= 1;
if (maxValues < 0) {
builder.append(FURTHER_VALUES_TRUNCATED);
return -1;
}
builder.append('v').append(i).append('=');
appendValue(value, maxValueLength, builder);
i += 1;
}
builder.append(']');
} else if (!statement.getNamedValues().isEmpty()) {
if (addSeparator) {
builder.append(' ');
}
builder.append('[');
int i = 0;
for (Map.Entry<CqlIdentifier, Object> entry : statement.getNamedValues().entrySet()) {
if (i > 0) {
builder.append(", ");
}
maxValues -= 1;
if (maxValues < 0) {
builder.append(FURTHER_VALUES_TRUNCATED);
return -1;
}
builder.append(entry.getKey().asCql(true)).append('=');
appendValue(entry.getValue(), maxValueLength, builder);
i += 1;
}
builder.append(']');
}
}
return maxValues;
}
use of com.datastax.oss.driver.api.core.type.DataType in project java-driver by datastax.
the class DseTableParser method parseTable.
public DseTableMetadata parseTable(AdminRow tableRow, CqlIdentifier keyspaceId, Map<CqlIdentifier, UserDefinedType> userTypes, Multimap<CqlIdentifier, AdminRow> vertices, Multimap<CqlIdentifier, AdminRow> edges) {
// Cassandra <= 2.2:
// CREATE TABLE system.schema_columnfamilies (
// keyspace_name text,
// columnfamily_name text,
// bloom_filter_fp_chance double,
// caching text,
// cf_id uuid,
// column_aliases text, (2.1 only)
// comment text,
// compaction_strategy_class text,
// compaction_strategy_options text,
// comparator text,
// compression_parameters text,
// default_time_to_live int,
// default_validator text,
// dropped_columns map<text, bigint>,
// gc_grace_seconds int,
// index_interval int,
// is_dense boolean, (2.1 only)
// key_aliases text, (2.1 only)
// key_validator text,
// local_read_repair_chance double,
// max_compaction_threshold int,
// max_index_interval int,
// memtable_flush_period_in_ms int,
// min_compaction_threshold int,
// min_index_interval int,
// read_repair_chance double,
// speculative_retry text,
// subcomparator text,
// type text,
// value_alias text, (2.1 only)
// PRIMARY KEY (keyspace_name, columnfamily_name)
// ) WITH CLUSTERING ORDER BY (columnfamily_name ASC)
//
// Cassandra 3.0:
// CREATE TABLE system_schema.tables (
// keyspace_name text,
// table_name text,
// bloom_filter_fp_chance double,
// caching frozen<map<text, text>>,
// cdc boolean,
// comment text,
// compaction frozen<map<text, text>>,
// compression frozen<map<text, text>>,
// crc_check_chance double,
// dclocal_read_repair_chance double,
// default_time_to_live int,
// extensions frozen<map<text, blob>>,
// flags frozen<set<text>>,
// gc_grace_seconds int,
// id uuid,
// max_index_interval int,
// memtable_flush_period_in_ms int,
// min_index_interval int,
// read_repair_chance double,
// speculative_retry text,
// PRIMARY KEY (keyspace_name, table_name)
// ) WITH CLUSTERING ORDER BY (table_name ASC)
CqlIdentifier tableId = CqlIdentifier.fromInternal(tableRow.getString(tableRow.contains("table_name") ? "table_name" : "columnfamily_name"));
UUID uuid = tableRow.contains("id") ? tableRow.getUuid("id") : tableRow.getUuid("cf_id");
List<RawColumn> rawColumns = RawColumn.toRawColumns(rows.columns().getOrDefault(keyspaceId, ImmutableMultimap.of()).get(tableId));
if (rawColumns.isEmpty()) {
LOG.warn("[{}] Processing TABLE refresh for {}.{} but found no matching rows, skipping", logPrefix, keyspaceId, tableId);
return null;
}
boolean isCompactStorage;
if (tableRow.contains("flags")) {
Set<String> flags = tableRow.getSetOfString("flags");
boolean isDense = flags.contains("dense");
boolean isSuper = flags.contains("super");
boolean isCompound = flags.contains("compound");
isCompactStorage = isSuper || isDense || !isCompound;
boolean isStaticCompact = !isSuper && !isDense && !isCompound;
if (isStaticCompact) {
RawColumn.pruneStaticCompactTableColumns(rawColumns);
} else if (isDense) {
RawColumn.pruneDenseTableColumnsV3(rawColumns);
}
} else {
boolean isDense = tableRow.getBoolean("is_dense");
if (isDense) {
RawColumn.pruneDenseTableColumnsV2(rawColumns);
}
DataTypeClassNameCompositeParser.ParseResult comparator = new DataTypeClassNameCompositeParser().parseWithComposite(tableRow.getString("comparator"), keyspaceId, userTypes, context);
isCompactStorage = isDense || !comparator.isComposite;
}
Collections.sort(rawColumns);
ImmutableMap.Builder<CqlIdentifier, ColumnMetadata> allColumnsBuilder = ImmutableMap.builder();
ImmutableList.Builder<ColumnMetadata> partitionKeyBuilder = ImmutableList.builder();
ImmutableMap.Builder<ColumnMetadata, ClusteringOrder> clusteringColumnsBuilder = ImmutableMap.builder();
ImmutableMap.Builder<CqlIdentifier, IndexMetadata> indexesBuilder = ImmutableMap.builder();
for (RawColumn raw : rawColumns) {
DataType dataType = rows.dataTypeParser().parse(keyspaceId, raw.dataType, userTypes, context);
DseColumnMetadata column = new DefaultDseColumnMetadata(keyspaceId, tableId, raw.name, dataType, raw.kind.equals(RawColumn.KIND_STATIC));
switch(raw.kind) {
case RawColumn.KIND_PARTITION_KEY:
partitionKeyBuilder.add(column);
break;
case RawColumn.KIND_CLUSTERING_COLUMN:
clusteringColumnsBuilder.put(column, raw.reversed ? ClusteringOrder.DESC : ClusteringOrder.ASC);
break;
default:
}
allColumnsBuilder.put(column.getName(), column);
DseIndexMetadata index = buildLegacyIndex(raw, column);
if (index != null) {
indexesBuilder.put(index.getName(), index);
}
}
Map<CqlIdentifier, Object> options;
try {
options = parseOptions(tableRow);
} catch (Exception e) {
// Options change the most often, so be especially lenient if anything goes wrong.
Loggers.warnWithException(LOG, "[{}] Error while parsing options for {}.{}, getOptions() will be empty", logPrefix, keyspaceId, tableId, e);
options = Collections.emptyMap();
}
Collection<AdminRow> indexRows = rows.indexes().getOrDefault(keyspaceId, ImmutableMultimap.of()).get(tableId);
for (AdminRow indexRow : indexRows) {
DseIndexMetadata index = buildModernIndex(keyspaceId, tableId, indexRow);
indexesBuilder.put(index.getName(), index);
}
return new DefaultDseTableMetadata(keyspaceId, tableId, uuid, isCompactStorage, false, partitionKeyBuilder.build(), clusteringColumnsBuilder.build(), allColumnsBuilder.build(), options, indexesBuilder.build(), buildVertex(tableId, vertices), buildEdge(tableId, edges, vertices));
}
Aggregations