public static List<Column> extractConditionColumns(final DataRecord dataRecord, final Set<String> shardingColumns) {
        List<Column> result = new ArrayList<>(dataRecord.getColumns().size());
        for (Column each : dataRecord.getColumns()) {
            if (each.isUniqueKey() || shardingColumns.contains(each.getName())) {
                result.add(each);
            }
        }
        Optional<Column> uniqueKeyColumn = dataRecord.getColumns().stream().filter(Column::isUniqueKey).findFirst();
        if (uniqueKeyColumn.isPresent()) {
            return result;
        }
        return dataRecord.getColumns();
    }
@Test
    void assertExtractConditionalColumns() {
        DataRecord dataRecord = mockDataRecord();
        Collection<Column> actual = RecordUtils.extractConditionColumns(dataRecord, Collections.singleton("c1"));
        assertThat(actual.size(), is(3));
        assertThat(Arrays.asList("sc", "id", "c1"), hasItems(actual.iterator().next().getName()));
    }