├── .gitattributes ├── .github ├── CODE_OF_CONDUCT.md └── workflows │ ├── build.yml │ ├── ci.yml │ ├── coverage.yml │ └── upload-pypi.yml ├── .gitignore ├── LICENSE ├── MANIFEST.in ├── README.rst ├── doc ├── .gitignore ├── make.py ├── requirements.txt └── source │ ├── _static │ ├── architecture.png │ ├── dag_ex.png │ └── query.png │ ├── api.rst │ ├── conf.py │ ├── functions.rst │ ├── getting_started.rst │ ├── index.rst │ ├── installation.rst │ ├── io.rst │ ├── select.rst │ ├── sql.rst │ ├── sql_operators.rst │ ├── stream_reader.rst │ ├── table.rst │ └── udf.rst ├── lgtm.yml ├── notebooks └── examples.ipynb ├── pyproject.toml ├── requirements-dev.txt ├── setup.cfg ├── setup.py ├── vinum ├── __init__.py ├── _typing.py ├── _version.py ├── api │ ├── __init__.py │ ├── stream_reader.py │ └── table.py ├── arrow │ ├── __init__.py │ ├── arrow_table.py │ └── record_batch.py ├── core │ ├── __init__.py │ ├── aggregate.py │ ├── algebra.py │ ├── base.py │ ├── expressions.py │ ├── functions.py │ ├── udf.py │ └── vinum_lib.cpp ├── errors │ └── __init__.py ├── executor │ ├── __init__.py │ └── executor.py ├── io │ ├── __init__.py │ └── arrow.py ├── parser │ ├── __init__.py │ ├── parser.py │ └── query.py ├── planner │ ├── __init__.py │ ├── binder.py │ └── planner.py ├── tests │ ├── __init__.py │ ├── conftest.py │ ├── test_io.py │ ├── test_query_results.py │ ├── test_sql_syntax_tree.py │ └── test_table_api.py └── util │ ├── __init__.py │ ├── tree_print.py │ └── util.py └── vinum_cpp ├── .gitignore ├── CMakeLists.txt ├── src ├── CMakeLists.txt ├── common │ ├── array_iterators.cpp │ ├── array_iterators.h │ ├── data_types.hpp │ ├── huge_int.cpp │ ├── huge_int.h │ ├── robin_hood.h │ └── util.h └── operators │ ├── aggregate │ ├── agg_func_factory.cpp │ ├── agg_func_factory.h │ ├── agg_funcs.h │ ├── base_aggregate.cpp │ ├── base_aggregate.h │ ├── generic_hash_aggregate.cpp │ ├── generic_hash_aggregate.h │ ├── multi_numerical_hash_aggregate.cpp │ ├── multi_numerical_hash_aggregate.h │ ├── one_group_aggregate.cpp │ ├── one_group_aggregate.h │ ├── single_numerical_hash_aggregate.cpp │ └── single_numerical_hash_aggregate.h │ ├── sort │ ├── sort.cpp │ └── sort.h │ ├── table_batch_reader.cpp │ └── table_batch_reader.h └── test ├── CMakeLists.txt ├── CMakeLists.txt.gtest.in └── hash_agg_test.cpp /.gitattributes: -------------------------------------------------------------------------------- 1 | vinum/_version.py export-subst 2 | -------------------------------------------------------------------------------- /.github/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/.github/CODE_OF_CONDUCT.md -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/.github/workflows/build.yml -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/.github/workflows/ci.yml -------------------------------------------------------------------------------- /.github/workflows/coverage.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/.github/workflows/coverage.yml -------------------------------------------------------------------------------- /.github/workflows/upload-pypi.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/.github/workflows/upload-pypi.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/.gitignore -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/LICENSE -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/MANIFEST.in -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/README.rst -------------------------------------------------------------------------------- /doc/.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | 3 | -------------------------------------------------------------------------------- /doc/make.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/doc/make.py -------------------------------------------------------------------------------- /doc/requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/doc/requirements.txt -------------------------------------------------------------------------------- /doc/source/_static/architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/doc/source/_static/architecture.png -------------------------------------------------------------------------------- /doc/source/_static/dag_ex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/doc/source/_static/dag_ex.png -------------------------------------------------------------------------------- /doc/source/_static/query.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/doc/source/_static/query.png -------------------------------------------------------------------------------- /doc/source/api.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/doc/source/api.rst -------------------------------------------------------------------------------- /doc/source/conf.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/doc/source/conf.py -------------------------------------------------------------------------------- /doc/source/functions.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/doc/source/functions.rst -------------------------------------------------------------------------------- /doc/source/getting_started.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/doc/source/getting_started.rst -------------------------------------------------------------------------------- /doc/source/index.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/doc/source/index.rst -------------------------------------------------------------------------------- /doc/source/installation.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/doc/source/installation.rst -------------------------------------------------------------------------------- /doc/source/io.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/doc/source/io.rst -------------------------------------------------------------------------------- /doc/source/select.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/doc/source/select.rst -------------------------------------------------------------------------------- /doc/source/sql.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/doc/source/sql.rst -------------------------------------------------------------------------------- /doc/source/sql_operators.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/doc/source/sql_operators.rst -------------------------------------------------------------------------------- /doc/source/stream_reader.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/doc/source/stream_reader.rst -------------------------------------------------------------------------------- /doc/source/table.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/doc/source/table.rst -------------------------------------------------------------------------------- /doc/source/udf.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/doc/source/udf.rst -------------------------------------------------------------------------------- /lgtm.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/lgtm.yml -------------------------------------------------------------------------------- /notebooks/examples.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/notebooks/examples.ipynb -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/pyproject.toml -------------------------------------------------------------------------------- /requirements-dev.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/requirements-dev.txt -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/setup.cfg -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/setup.py -------------------------------------------------------------------------------- /vinum/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/__init__.py -------------------------------------------------------------------------------- /vinum/_typing.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/_typing.py -------------------------------------------------------------------------------- /vinum/_version.py: -------------------------------------------------------------------------------- 1 | __version__ = '0.3.2' 2 | -------------------------------------------------------------------------------- /vinum/api/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vinum/api/stream_reader.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/api/stream_reader.py -------------------------------------------------------------------------------- /vinum/api/table.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/api/table.py -------------------------------------------------------------------------------- /vinum/arrow/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vinum/arrow/arrow_table.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/arrow/arrow_table.py -------------------------------------------------------------------------------- /vinum/arrow/record_batch.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/arrow/record_batch.py -------------------------------------------------------------------------------- /vinum/core/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vinum/core/aggregate.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/core/aggregate.py -------------------------------------------------------------------------------- /vinum/core/algebra.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/core/algebra.py -------------------------------------------------------------------------------- /vinum/core/base.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/core/base.py -------------------------------------------------------------------------------- /vinum/core/expressions.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/core/expressions.py -------------------------------------------------------------------------------- /vinum/core/functions.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/core/functions.py -------------------------------------------------------------------------------- /vinum/core/udf.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/core/udf.py -------------------------------------------------------------------------------- /vinum/core/vinum_lib.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/core/vinum_lib.cpp -------------------------------------------------------------------------------- /vinum/errors/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/errors/__init__.py -------------------------------------------------------------------------------- /vinum/executor/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vinum/executor/executor.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/executor/executor.py -------------------------------------------------------------------------------- /vinum/io/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vinum/io/arrow.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/io/arrow.py -------------------------------------------------------------------------------- /vinum/parser/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vinum/parser/parser.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/parser/parser.py -------------------------------------------------------------------------------- /vinum/parser/query.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/parser/query.py -------------------------------------------------------------------------------- /vinum/planner/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vinum/planner/binder.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/planner/binder.py -------------------------------------------------------------------------------- /vinum/planner/planner.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/planner/planner.py -------------------------------------------------------------------------------- /vinum/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vinum/tests/conftest.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/tests/conftest.py -------------------------------------------------------------------------------- /vinum/tests/test_io.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/tests/test_io.py -------------------------------------------------------------------------------- /vinum/tests/test_query_results.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/tests/test_query_results.py -------------------------------------------------------------------------------- /vinum/tests/test_sql_syntax_tree.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/tests/test_sql_syntax_tree.py -------------------------------------------------------------------------------- /vinum/tests/test_table_api.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/tests/test_table_api.py -------------------------------------------------------------------------------- /vinum/util/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vinum/util/tree_print.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/util/tree_print.py -------------------------------------------------------------------------------- /vinum/util/util.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum/util/util.py -------------------------------------------------------------------------------- /vinum_cpp/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/.gitignore -------------------------------------------------------------------------------- /vinum_cpp/CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/CMakeLists.txt -------------------------------------------------------------------------------- /vinum_cpp/src/CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/src/CMakeLists.txt -------------------------------------------------------------------------------- /vinum_cpp/src/common/array_iterators.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/src/common/array_iterators.cpp -------------------------------------------------------------------------------- /vinum_cpp/src/common/array_iterators.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/src/common/array_iterators.h -------------------------------------------------------------------------------- /vinum_cpp/src/common/data_types.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/src/common/data_types.hpp -------------------------------------------------------------------------------- /vinum_cpp/src/common/huge_int.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/src/common/huge_int.cpp -------------------------------------------------------------------------------- /vinum_cpp/src/common/huge_int.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/src/common/huge_int.h -------------------------------------------------------------------------------- /vinum_cpp/src/common/robin_hood.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/src/common/robin_hood.h -------------------------------------------------------------------------------- /vinum_cpp/src/common/util.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/src/common/util.h -------------------------------------------------------------------------------- /vinum_cpp/src/operators/aggregate/agg_func_factory.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/src/operators/aggregate/agg_func_factory.cpp -------------------------------------------------------------------------------- /vinum_cpp/src/operators/aggregate/agg_func_factory.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/src/operators/aggregate/agg_func_factory.h -------------------------------------------------------------------------------- /vinum_cpp/src/operators/aggregate/agg_funcs.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/src/operators/aggregate/agg_funcs.h -------------------------------------------------------------------------------- /vinum_cpp/src/operators/aggregate/base_aggregate.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/src/operators/aggregate/base_aggregate.cpp -------------------------------------------------------------------------------- /vinum_cpp/src/operators/aggregate/base_aggregate.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/src/operators/aggregate/base_aggregate.h -------------------------------------------------------------------------------- /vinum_cpp/src/operators/aggregate/generic_hash_aggregate.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/src/operators/aggregate/generic_hash_aggregate.cpp -------------------------------------------------------------------------------- /vinum_cpp/src/operators/aggregate/generic_hash_aggregate.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/src/operators/aggregate/generic_hash_aggregate.h -------------------------------------------------------------------------------- /vinum_cpp/src/operators/aggregate/multi_numerical_hash_aggregate.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/src/operators/aggregate/multi_numerical_hash_aggregate.cpp -------------------------------------------------------------------------------- /vinum_cpp/src/operators/aggregate/multi_numerical_hash_aggregate.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/src/operators/aggregate/multi_numerical_hash_aggregate.h -------------------------------------------------------------------------------- /vinum_cpp/src/operators/aggregate/one_group_aggregate.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/src/operators/aggregate/one_group_aggregate.cpp -------------------------------------------------------------------------------- /vinum_cpp/src/operators/aggregate/one_group_aggregate.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/src/operators/aggregate/one_group_aggregate.h -------------------------------------------------------------------------------- /vinum_cpp/src/operators/aggregate/single_numerical_hash_aggregate.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/src/operators/aggregate/single_numerical_hash_aggregate.cpp -------------------------------------------------------------------------------- /vinum_cpp/src/operators/aggregate/single_numerical_hash_aggregate.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/src/operators/aggregate/single_numerical_hash_aggregate.h -------------------------------------------------------------------------------- /vinum_cpp/src/operators/sort/sort.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/src/operators/sort/sort.cpp -------------------------------------------------------------------------------- /vinum_cpp/src/operators/sort/sort.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/src/operators/sort/sort.h -------------------------------------------------------------------------------- /vinum_cpp/src/operators/table_batch_reader.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/src/operators/table_batch_reader.cpp -------------------------------------------------------------------------------- /vinum_cpp/src/operators/table_batch_reader.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/src/operators/table_batch_reader.h -------------------------------------------------------------------------------- /vinum_cpp/test/CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/test/CMakeLists.txt -------------------------------------------------------------------------------- /vinum_cpp/test/CMakeLists.txt.gtest.in: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/test/CMakeLists.txt.gtest.in -------------------------------------------------------------------------------- /vinum_cpp/test/hash_agg_test.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitrykoval/vinum/HEAD/vinum_cpp/test/hash_agg_test.cpp --------------------------------------------------------------------------------