tree 95198c775ee6ce2f6965327d643241954c51a95c
parent 26d63e7b65b164746a634517fe4fa16263fbd8c8
author Laksh Singla <lakshsingla@gmail.com> 1714470194 +0530
committer GitHub <noreply@github.com> 1714470194 +0530
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJmML0yCRC1aQ7uu5UhlAAA/3kQADm37xNddaY8/JH8tdxPMynE
 8HM601/pC5JeaxJ/q3XjSKwk/8wl/80Ef7uaVkrYmf0n819JlWbQSEMn70U3k0d9
 u5ZSWFws8bMVLfYIZh5Q4mFbHB5fqtAlpYMgjZNdBNKy4ozews0dlIBX817B9vUE
 CmoWoL3TDpzXKNf4qf+G+btK4japHFWOSHkL0Ps1YF5KzmkPGDcoHesw2jl67qb1
 rWRx6oDBnZZoMxw6Kprwf+dTPQ6sw0cqKk/D7q+1b36QQz6oV3tCQhkQEw2SA9E0
 6Zt1Nbk8aXmAz9Xt6gHa0r7UcGgQgL311H6HyxpNVviQWr1CpWfel9fZ6pzzRpgp
 pmNPZ/FwqjbE6umm5/nqdbjjhwkF5I0wO9lxjU9LnB/hMPUZtDn1ofwRsHGS9TB5
 hUjIa0QcBvy/6v0g8VlyfQ/hXd68mZancHBQp1JqLVwk8zizyJBzqjv3IJZxzzFi
 EJuE0jBZTS39/vYw/j5GXsORbVpWeQYaUkluQ9o2E2Lp4ucwvkzYldQkRESxZ/vQ
 kuLxh+sEd0DjMj5r8kX2EojEGKqusaOqdvy4ySW2zSbYeRn/OfdjkMEq06OHlX+G
 +vefllhErP+L7aDK6UjmxiUUzpfUF4i0MVnmNsboNV2POZk69JzBya664MBhvYlR
 fC69/zy0KDSHiryqKmvs
 =3CFk
 -----END PGP SIGNATURE-----
 

Improve code flow in the First/Last vector aggregators and unify the numeric aggregators with the String implementations  (#16230)

This PR fixes the first and last vector aggregators and improves their readability. Following changes are introduced

    The folding is broken in the vectorized versions. We consider time before checking the folded object.

    If the numerical aggregator gets passed any other object type for some other reason (like String), then the aggregator considers it to be folded, even though it shouldn’t be. We should convert these objects to the desired type, and aggregate them properly.

    The aggregators must properly use generics. This would minimize the ClassCastException issues that can happen with mixed segment types. We are unifying the string first/last aggregators with numeric versions as well.

    The aggregators must aggregate null values (https://github.com/apache/druid/blob/master/processing/src/main/java/org/apache/druid/query/aggregation/first/StringFirstLastUtils.java#L55-L56 ). The aggregator should only ignore pairs with time == null, and not value == null

    Time nullity is ignored when trying to vectorize the data.

    String versions initialized with DateTimes.MIN that is equal to Long.MIN / 2. This can cause incorrect results in case the user enters a custom time column. NOTE: This is still present because it would require a larger refactor in all of the versions.

    There is a difference in what users might expect from the results because the code flow is changed (for example, the direction of the for loops, etc), however, this will only change the results, and not the contract set by first/last aggregators, which is that if multiple values have the same timestamp, then any of them can get picked.

    If the column is non-existent, the users might expect a change in the timestamp from DateTime.MAX to Long.MAX, because the code incorrectly used DateTime.MAX to initialize the aggregator, however, in case of a custom timestamp column, this might not be the case. The SQL query might be prohibited from using any Long since it requires a cast to the timestamp function that can fail, but AFAICT native queries don't have such limitations.
