88
99std::vector<std::vector<float >> random_embeddings (int rows, int dimensions) {
1010 std::random_device rd;
11- std::mt19937_64 prng ( rd ()) ;
12- std::uniform_real_distribution<float > dist ( 0 , 1 ) ;
11+ std::mt19937_64 prng{ rd ()} ;
12+ std::uniform_real_distribution<float > dist{ 0 , 1 } ;
1313
1414 std::vector<std::vector<float >> embeddings;
1515 embeddings.reserve (rows);
@@ -26,8 +26,8 @@ std::vector<std::vector<float>> random_embeddings(int rows, int dimensions) {
2626
2727std::vector<int64_t > random_categories (int rows) {
2828 std::random_device rd;
29- std::mt19937_64 prng ( rd ()) ;
30- std::uniform_int_distribution<int64_t > dist ( 1 , 100 ) ;
29+ std::mt19937_64 prng{ rd ()} ;
30+ std::uniform_int_distribution<int64_t > dist{ 1 , 100 } ;
3131
3232 std::vector<int64_t > categories;
3333 categories.reserve (rows);
@@ -41,13 +41,13 @@ int main() {
4141 // generate random data
4242 int rows = 100000 ;
4343 int dimensions = 128 ;
44- auto embeddings = random_embeddings (rows, dimensions);
45- auto categories = random_categories (rows);
46- auto queries = random_embeddings (10 , dimensions);
44+ std::vector<std::vector< float >> embeddings = random_embeddings (rows, dimensions);
45+ std::vector< int64_t > categories = random_categories (rows);
46+ std::vector<std::vector< float >> queries = random_embeddings (10 , dimensions);
4747
4848 // enable extensions
49- pqxx::connection conn ( " dbname=pgvector_citus" ) ;
50- pqxx::nontransaction tx ( conn) ;
49+ pqxx::connection conn{ " dbname=pgvector_citus" } ;
50+ pqxx::nontransaction tx{ conn} ;
5151 tx.exec (" CREATE EXTENSION IF NOT EXISTS citus" );
5252 tx.exec (" CREATE EXTENSION IF NOT EXISTS vector" );
5353
@@ -61,8 +61,8 @@ int main() {
6161 conn.close ();
6262
6363 // reconnect for updated GUC variables to take effect
64- pqxx::connection conn2 ( " dbname=pgvector_citus" ) ;
65- pqxx::nontransaction tx2 ( conn2) ;
64+ pqxx::connection conn2{ " dbname=pgvector_citus" } ;
65+ pqxx::nontransaction tx2{ conn2} ;
6666
6767 std::cout << " Creating distributed table" << std::endl;
6868 tx2.exec (" DROP TABLE IF EXISTS items" );
@@ -72,20 +72,20 @@ int main() {
7272
7373 // libpqxx does not support binary COPY
7474 std::cout << " Loading data in parallel" << std::endl;
75- auto stream = pqxx::stream_to::table (tx2, {" items" }, {" embedding" , " category_id" });
75+ pqxx::stream_to stream = pqxx::stream_to::table (tx2, {" items" }, {" embedding" , " category_id" });
7676 for (size_t i = 0 ; i < embeddings.size (); i++) {
77- stream.write_values (pgvector::Vector ( embeddings[i]) , categories[i]);
77+ stream.write_values (pgvector::Vector{ embeddings[i]} , categories[i]);
7878 }
7979 stream.complete ();
8080
8181 std::cout << " Creating index in parallel" << std::endl;
8282 tx2.exec (" CREATE INDEX ON items USING hnsw (embedding vector_l2_ops)" );
8383
8484 std::cout << " Running distributed queries" << std::endl;
85- for (auto & query : queries) {
85+ for (const auto & query : queries) {
8686 pqxx::result result = tx2.exec (
8787 " SELECT id FROM items ORDER BY embedding <-> $1 LIMIT 10" ,
88- pqxx::params{pgvector::Vector ( query) }
88+ pqxx::params{pgvector::Vector{ query} }
8989 );
9090 for (const auto & row : result) {
9191 std::cout << row[0 ].as <int64_t >() << " " ;
0 commit comments