| 860 | } |
| 861 | |
| 862 | std::string generateUserFriendlyDiff( |
| 863 | const MaterializedRowMultiset& expectedRows, |
| 864 | const MaterializedRowMultiset& actualRows, |
| 865 | const TypePtr& type) { |
| 866 | std::vector<MaterializedRow> extraRows; |
| 867 | std::set_difference( |
| 868 | actualRows.begin(), |
| 869 | actualRows.end(), |
| 870 | expectedRows.begin(), |
| 871 | expectedRows.end(), |
| 872 | std::inserter(extraRows, extraRows.end())); |
| 873 | |
| 874 | std::vector<MaterializedRow> missingRows; |
| 875 | std::set_difference( |
| 876 | expectedRows.begin(), |
| 877 | expectedRows.end(), |
| 878 | actualRows.begin(), |
| 879 | actualRows.end(), |
| 880 | std::inserter(missingRows, missingRows.end())); |
| 881 | |
| 882 | return makeErrorMessage( |
| 883 | missingRows, extraRows, expectedRows.size(), actualRows.size(), type); |
| 884 | } |
| 885 | |
| 886 | void verifyDuckDBResult(const DuckDBQueryResult& result, std::string_view sql) { |
| 887 | BOLT_CHECK( |
no test coverage detected