private static CompiledStatement compile()

in harry-core/src/harry/operations/DeleteHelper.java [123:174]


    private static CompiledStatement compile(SchemaSpec schema,
                                             long pd,
                                             List<Relation> relations,
                                             BitSet columnsToDelete,
                                             BitSet mask,
                                             long ts)
    {
        StringBuilder b = new StringBuilder();
        b.append("DELETE ");
        if (columnsToDelete != null)
        {
            assert mask != null;
            assert relations == null || relations.stream().allMatch((r) -> r.kind == Relation.RelationKind.EQ);
            String[] names = columnNames(schema.allColumns, columnsToDelete, mask);
            for (int i = 0; i < names.length; i++)
            {
                if (i > 0)
                    b.append(", ");
                b.append(names[i]);
            }
            b.append(" ");
        }
        b.append("FROM ")
         .append(schema.keyspace).append(".").append(schema.table)
         .append(" USING TIMESTAMP ")
         .append(ts)
         .append(" WHERE ");

        List<Object> bindings = new ArrayList<>();

        schema.inflateRelations(pd,
                                relations,
                                new SchemaSpec.AddRelationCallback()
                                {
                                    boolean isFirst = true;
                                    public void accept(ColumnSpec<?> spec, Relation.RelationKind kind, Object value)
                                    {
                                        if (isFirst)
                                            isFirst = false;
                                        else
                                            b.append(" AND ");
                                        b.append(kind.getClause(spec));
                                        bindings.add(value);
                                    }
                                });

        b.append(";");

        Object[] bindingsArr = bindings.toArray(new Object[bindings.size()]);

        return new CompiledStatement(b.toString(), bindingsArr);
    }