frustrated
frustrated

Reputation: 11

connecting to questDB with libpqxx

Im having an issue connecting to QuestDB with libpqxx, i can establish a connection using the postgresql client as per the instructions here: https://questdb.io/docs/guidePSQL

however, when i go to connect to QuestDB, using my simple program, that is more-or-less a slightly modified version of the standard "get me started" program: https://github.com/jtv/libpqxx

#include <iostream>
#include <pqxx/pqxx>

int main(){
   try
   {
    pqxx::connection C(
    "user=admin "
    "hostaddr=127.0.0.1 "
    "password=quest "
    "dbname=qdb"
    "port=8812 ");


  std::cout << "Connected to " << C.dbname() << std::endl;
  pqxx::work W{C};

  pqxx::result R{W.exec("SELECT name FROM employee")};

  std::cout << "Found " << R.size() << "employees:\n";
  for (auto row: R)
     std::cout << row[0].c_str() << '\n';

  std::cout << "Doubling all employees' salaries...\n";
  W.exec0("UPDATE employee SET salary = salary*2");

  std::cout << "Making changes definite: ";
  W.commit();
  std::cout << "OK.\n";
 }
 catch (std::exception const &e)
 {
    std::cerr << e.what() << '\n';
    return 1;
 }
   return 0;
}

.. i get an error:

could not connect to server: Connection refused Is the server running on host "127.0.0.1" and accepting TCP/IP connections on port 5432?

what also complicates things possibly, is i cannot find anywhere pg_hba.conf ,are these even still a thing in version 10 of postgresql? i have /usr/lib/postgresql/10 but no config files.. and ive also searched the machine.. nothing found. any help would be much appreciated.

thankyou

Upvotes: 1

Views: 567

Answers (1)

mpsq
mpsq

Reputation: 377

The official documentation for libpqxx states that:

The connection string consists of attribute=value pairs separated by spaces, e.g. "user=john password=1x2y3z4". reference

Your connection string is:

    pqxx::connection C(
"user=admin "
"hostaddr=127.0.0.1 "
"password=quest "
"dbname=qdb"
"port=8812 ");

You are missing a space after qdb, so the correct connection string is:

    pqxx::connection C(
"user=admin "
"hostaddr=127.0.0.1 "
"password=quest "
"dbname=qdb "
"port=8812 ");

I just tried it and it works fine for me.

On a second hand, the following SQL statement:

 W.exec0("UPDATE employee SET salary = salary*2");

Will not work, UPDATE is not supported yet by QuestDB. You can find more details about SQL support on the official documentation, here.

Upvotes: 5

Related Questions