Search in sources :

Example 6 with Column

use of com.airbnb.spinaltap.mysql.mutation.schema.Column in project SpinalTap by airbnb.

the class MysqlMutationMapper method zip.

protected static ImmutableMap<String, Column> zip(Serializable[] row, Collection<ColumnMetadata> columns) {
    if (row.length != columns.size()) {
        log.error("Row length {} and column length {} don't match", row.length, columns.size());
    }
    ImmutableMap.Builder<String, Column> builder = ImmutableMap.builder();
    Iterator<ColumnMetadata> columnIterator = columns.iterator();
    for (int position = 0; position < row.length && columnIterator.hasNext(); position++) {
        ColumnMetadata col = columnIterator.next();
        builder.put(col.getName(), new Column(col, row[position]));
    }
    return builder.build();
}
Also used : ColumnMetadata(com.airbnb.spinaltap.mysql.mutation.schema.ColumnMetadata) Column(com.airbnb.spinaltap.mysql.mutation.schema.Column) ImmutableMap(com.google.common.collect.ImmutableMap)

Example 7 with Column

use of com.airbnb.spinaltap.mysql.mutation.schema.Column in project SpinalTap by airbnb.

the class RowTest method testNoPrimaryKey.

@Test
public void testNoPrimaryKey() throws Exception {
    Table table = new Table(TABLE_ID, TABLE_NAME, DB_NAME, ImmutableList.of(new ColumnMetadata(ID_COLUMN, ColumnDataType.LONGLONG, false, 0)), ImmutableList.of());
    Row row = new Row(table, ImmutableMap.of(ID_COLUMN, new Column(table.getColumns().get(ID_COLUMN), 1)));
    assertNull(row.getPrimaryKeyValue());
}
Also used : ColumnMetadata(com.airbnb.spinaltap.mysql.mutation.schema.ColumnMetadata) Table(com.airbnb.spinaltap.mysql.mutation.schema.Table) Column(com.airbnb.spinaltap.mysql.mutation.schema.Column) Row(com.airbnb.spinaltap.mysql.mutation.schema.Row) Test(org.junit.Test)

Example 8 with Column

use of com.airbnb.spinaltap.mysql.mutation.schema.Column in project SpinalTap by airbnb.

the class KafkaDestinationTest method createMutation.

private Mutation createMutation(MutationType type) {
    Mapper<com.airbnb.spinaltap.Mutation<?>, ? extends TBase<?, ?>> thriftMutationMapper = ThriftMutationMapper.create("spinaltap");
    Table table = new Table(0L, TABLE, DATABASE, ImmutableList.of(new ColumnMetadata("id", ColumnDataType.LONGLONG, true, 0)), ImmutableList.of("id"));
    MysqlMutationMetadata metadata = new MysqlMutationMetadata(new DataSource(HOSTNAME, 0, "service"), new BinlogFilePos(), table, 0L, 0L, 0L, null, null, 0L, 0);
    Row row = new Row(table, ImmutableMap.of("id", new Column(new ColumnMetadata("id", ColumnDataType.LONGLONG, true, 0), 1L)));
    MysqlMutation mutation;
    switch(type) {
        case INSERT:
            mutation = new MysqlInsertMutation(metadata, row);
            break;
        case UPDATE:
            mutation = new MysqlUpdateMutation(metadata, row, row);
            break;
        case DELETE:
            mutation = new MysqlDeleteMutation(metadata, row);
            break;
        default:
            mutation = null;
    }
    return (Mutation) (thriftMutationMapper.map(mutation));
}
Also used : MysqlDeleteMutation(com.airbnb.spinaltap.mysql.mutation.MysqlDeleteMutation) ColumnMetadata(com.airbnb.spinaltap.mysql.mutation.schema.ColumnMetadata) MysqlMutationMetadata(com.airbnb.spinaltap.mysql.mutation.MysqlMutationMetadata) Table(com.airbnb.spinaltap.mysql.mutation.schema.Table) MysqlUpdateMutation(com.airbnb.spinaltap.mysql.mutation.MysqlUpdateMutation) DataSource(com.airbnb.spinaltap.mysql.DataSource) MysqlMutation(com.airbnb.spinaltap.mysql.mutation.MysqlMutation) Column(com.airbnb.spinaltap.mysql.mutation.schema.Column) MysqlInsertMutation(com.airbnb.spinaltap.mysql.mutation.MysqlInsertMutation) BinlogFilePos(com.airbnb.spinaltap.mysql.BinlogFilePos) MysqlUpdateMutation(com.airbnb.spinaltap.mysql.mutation.MysqlUpdateMutation) Mutation(com.airbnb.jitney.event.spinaltap.v1.Mutation) MysqlMutation(com.airbnb.spinaltap.mysql.mutation.MysqlMutation) MysqlDeleteMutation(com.airbnb.spinaltap.mysql.mutation.MysqlDeleteMutation) MysqlInsertMutation(com.airbnb.spinaltap.mysql.mutation.MysqlInsertMutation) Row(com.airbnb.spinaltap.mysql.mutation.schema.Row)

Example 9 with Column

use of com.airbnb.spinaltap.mysql.mutation.schema.Column in project SpinalTap by airbnb.

the class MysqlKeyProviderTest method testGetNullKey.

@Test
public void testGetNullKey() throws Exception {
    Row row = new Row(TABLE, ImmutableMap.of(ID_COLUMN, new Column(TABLE.getColumns().get(ID_COLUMN), null)));
    MysqlMutation mutation = new MysqlInsertMutation(MUTATION_METADATA, row);
    assertEquals("test:users:null", MysqlKeyProvider.INSTANCE.get(mutation));
}
Also used : Column(com.airbnb.spinaltap.mysql.mutation.schema.Column) Row(com.airbnb.spinaltap.mysql.mutation.schema.Row) Test(org.junit.Test)

Aggregations

Column (com.airbnb.spinaltap.mysql.mutation.schema.Column)9 Row (com.airbnb.spinaltap.mysql.mutation.schema.Row)8 ColumnMetadata (com.airbnb.spinaltap.mysql.mutation.schema.ColumnMetadata)7 Test (org.junit.Test)7 Table (com.airbnb.spinaltap.mysql.mutation.schema.Table)6 Mutation (com.airbnb.jitney.event.spinaltap.v1.Mutation)1 BinlogFilePos (com.airbnb.spinaltap.mysql.BinlogFilePos)1 DataSource (com.airbnb.spinaltap.mysql.DataSource)1 MysqlDeleteMutation (com.airbnb.spinaltap.mysql.mutation.MysqlDeleteMutation)1 MysqlInsertMutation (com.airbnb.spinaltap.mysql.mutation.MysqlInsertMutation)1 MysqlMutation (com.airbnb.spinaltap.mysql.mutation.MysqlMutation)1 MysqlMutationMetadata (com.airbnb.spinaltap.mysql.mutation.MysqlMutationMetadata)1 MysqlUpdateMutation (com.airbnb.spinaltap.mysql.mutation.MysqlUpdateMutation)1 ImmutableMap (com.google.common.collect.ImmutableMap)1