public List<Symbol> getOriginalNonDistinctAggregateArgs() { return aggregations.values().stream() .filter(aggregation -> !aggregation.getMask().isPresent()) .map(Aggregation::getCall) .flatMap(function -> function.getArguments().stream()) .distinct() .map(Symbol::from) .collect(Collectors.toList()); }
private static void testDistinct() { System.out.println(); System.out.println("Test distinct start"); Collection<String> ordered = Arrays.asList("a1", "a2", "a2", "a3", "a1", "a2", "a2"); Collection<String> nonOrdered = new HashSet<>(ordered); // Get collection without duplicate List<String> distinct = nonOrdered.stream().distinct().collect(Collectors.toList()); System.out.println("distinct = " + distinct); // print distinct = [a1, a2, a3] - порядок не гарантируется List<String> distinctOrdered = ordered.stream().distinct().collect(Collectors.toList()); System.out.println("distinctOrdered = " + distinctOrdered); // print distinct = [a1, a2, a3] - порядок гарантируется }
@Test public void testNonDeterministic() { MaterializedResult materializedResult = computeActual("SELECT rand() FROM orders LIMIT 10"); long distinctCount = materializedResult.getMaterializedRows().stream() .map(row -> row.getField(0)) .distinct() .count(); assertTrue(distinctCount >= 8, "rand() must produce different rows"); materializedResult = computeActual("SELECT apply(1, x -> x + rand()) FROM orders LIMIT 10"); distinctCount = materializedResult.getMaterializedRows().stream() .map(row -> row.getField(0)) .distinct() .count(); assertTrue(distinctCount >= 8, "rand() must produce different rows"); }
default StringColumn tokenizeAndRemoveDuplicates(String separator) { StringColumn newColumn = StringColumn.create(name() + "[without duplicates]", this.size()); for (int r = 0; r < size(); r++) { String value = getString(r); Splitter splitter = Splitter.on(separator); splitter = splitter.trimResults(); splitter = splitter.omitEmptyStrings(); List<String> tokens = new ArrayList<>(splitter.splitToList(value)); String result = tokens.stream().distinct().collect(Collectors.joining(separator)); newColumn.set(r, result); } return newColumn; } }
/** * Set the allowed HTTP methods. * * @param methods The methods to specify in the Allowed HTTP header * @return This HTTP headers */ default MutableHttpHeaders allow(Collection<HttpMethod> methods) { String value = methods.stream().distinct().collect(Collectors.joining(",")); return add(ALLOW, value); }