chore: import upstream snapshot with attribution

This commit is contained in:
wehub-resource-sync
2026-07-13 12:32:25 +08:00
commit e014feafe1
2285 changed files with 1131979 additions and 0 deletions
@@ -0,0 +1,77 @@
#include <iostream>
#include <stdexcept>
#include <string>
#include <pqxx/pqxx>
int main(int argc, char *argv[]) {
if (argc < 3) {
std::cerr << "Usage: " << argv[0] << " <user> <port>\n";
return 1;
}
std::string user = argv[1];
std::string port = argv[2];
try {
std::string connStr = "host=localhost port=" + port + " dbname=postgres user=" + user + " password=password sslmode=disable";
pqxx::connection conn(connStr);
pqxx::nontransaction ntxn(conn);
// SELECT from test_table (set up by bats setup())
pqxx::result r = ntxn.exec("SELECT pk FROM test_table LIMIT 1");
if (r.empty() || r[0][0].as<int>() != 1)
throw std::runtime_error("expected pk=1");
// INSERT
ntxn.exec("INSERT INTO test_table VALUES (2)");
// COUNT
r = ntxn.exec("SELECT COUNT(*) FROM test_table");
if (r[0][0].as<long long>() != 2)
throw std::runtime_error("expected count=2, got " + std::to_string(r[0][0].as<long long>()));
// Prepared statement
conn.prepare("select_pk", "SELECT pk FROM test_table WHERE pk = $1");
r = ntxn.exec_prepared("select_pk", 1);
if (r.empty() || r[0][0].as<int>() != 1)
throw std::runtime_error("expected pk=1 from prepared stmt");
// Dolt workflow: create table, insert, commit, branch, insert, commit, merge
for (const char *q : {
"DROP TABLE IF EXISTS test",
"CREATE TABLE test (pk int, value int, PRIMARY KEY(pk))",
"INSERT INTO test (pk, value) VALUES (0, 0)",
"SELECT dolt_add('-A')",
"SELECT dolt_commit('-m', 'added table test')",
"SELECT dolt_checkout('-b', 'mybranch')",
"INSERT INTO test VALUES (1, 1)",
"SELECT dolt_commit('-a', '-m', 'updated test')",
"SELECT dolt_checkout('main')",
"SELECT dolt_merge('mybranch')",
}) {
ntxn.exec(q);
}
conn.prepare("select_test_by_pk", "SELECT pk, value FROM test WHERE pk = $1");
r = ntxn.exec_prepared("select_test_by_pk", 0);
if (r.empty())
throw std::runtime_error("no rows for select_test_by_pk");
if (r[0]["pk"].as<int>() != 0 || r[0]["value"].as<int>() != 0)
throw std::runtime_error("expected pk=0 value=0");
conn.prepare("count_dolt_log", "SELECT COUNT(*) FROM dolt_log");
r = ntxn.exec_prepared("count_dolt_log");
if (r[0][0].as<long long>() != 4)
throw std::runtime_error("expected 4 dolt_log entries, got " + std::to_string(r[0][0].as<long long>()));
conn.prepare("count_test", "SELECT COUNT(*) FROM test");
r = ntxn.exec_prepared("count_test");
if (r[0][0].as<long long>() != 2)
throw std::runtime_error("expected 2 rows in test, got " + std::to_string(r[0][0].as<long long>()));
std::cout << "libpqxx test passed\n";
} catch (const std::exception &e) {
std::cerr << "Error: " << e.what() << "\n";
return 1;
}
return 0;
}