Pgsql protocol compatibility

    immudb needs to be started with the option enabled (IMMUDB_PGSQL_SERVER=true).

    SSL is supported, if you configured immudb with a certificate.

    You can use a subset of the libpq (opens new window) API. You will need to include:

    and compile with gcc -o main $(pkg-config libpq --cflags --libs) main.c.

    You can use the gem:

    1. require 'pg'

    Download the official JDBC driver (opens new window) jar artifact for PostgreSQL.

    1. $ javac -cp .:./postgresql-42.2.20.jar MyProgram.java

    Please refer to the documentation for instructions on how to enable it in your server.

    To connect to the database:

    1. psql "host=localhost dbname=defaultdb user=immudb password=immudb sslmode=disable"
    2. psql (13.2, server 0.0.0)
    3. Type "help" for help.
    1. PGconn *conn = PQconnectdb("host=localhost user=immudb password=immudb dbname=defaultdb sslmode=disable");
    2. if (PQstatus(conn) == CONNECTION_BAD) {
    3. fprintf(stderr, "Connection to database failed: %s\n", PQerrorMessage(conn));
    4. PQfinish(conn);
    5. exit(1);
    6. }
    1. conn = PG::Connection.open("sslmode=allow dbname=defaultdb user=immudb password=immudb host=127.0.0.1 port=5432")

    It is important to pass the preferQueryMode=simple option, as immudb pgsql server only support simple query mode.

    1. <?php
    2. $dbconn = pg_connect("host=localhost port=5432 sslmode=require user=immudb dbname=defaultdb password=immudb");
    3. //...
    4. pg_close($dbconn);
    5. ?>

    Execute statements:

    1. defaultdb=> CREATE TABLE Orders(id INTEGER, amount INTEGER, title VARCHAR, PRIMARY KEY id);
    2. SELECT 1
    3. defaultdb=> UPSERT INTO Orders (id, amount, title) VALUES (1, 200, 'title1');
    4. SELECT 1
    1. PGresult *res = PQexec(conn, "CREATE TABLE Orders (id INTEGER, amount INTEGER, title VARCHAR, PRIMARY KEY id)");
    2. do_exit(conn, res);
    3. PQclear(res);
    4. res = PQexec(conn, "UPSERT INTO Orders (id, amount, title) VALUES (1, 200, 'title 1')");
    5. if (PQresultStatus(res) != PGRES_COMMAND_OK) {
    6. do_exit(conn, res);
    7. }
    8. PQclear(res);
    1. conn.exec( "CREATE TABLE Orders (id INTEGER, amount INTEGER, title VARCHAR, PRIMARY KEY id)" )
    2. conn.exec( "UPSERT INTO Orders (id, amount, title) VALUES (1, 200, 'title 1')" )
    3. conn.exec( "UPSERT INTO Orders (id, amount, title) VALUES (2, 400, 'title 2')" )
    1. Statement stmt = conn.createStatement();
    2. stmt.executeUpdate("CREATE TABLE people(id INTEGER, name VARCHAR, salary INTEGER, PRIMARY KEY id);");
    3. stmt.executeUpdate("INSERT INTO people(id, name, salary) VALUES (1, 'Joe', 20000);");
    4. stmt.executeUpdate("INSERT INTO people(id, name, salary) VALUES (2, 'Bob', 30000);");
    1. defaultdb=> SELECT id, amount, title FROM Orders;
    2. (defaultdb.Orders.id) | (defaultdb.Orders.amount) | (defaultdb.Orders.title)
    3. -----------------------+---------------------------+--------------------------
    4. 1 | 200 | "title1"
    5. (1 row)
    1. res = PQexec(conn, "SELECT id, amount, title FROM Orders");
    2. if (PQresultStatus(res) != PGRES_TUPLES_OK) {
    3. printf("No data retrieved\n");
    4. }
    5. int rows = PQntuples(res);
    6. for(int i=0; i<rows; i++) {
    7. printf("%s %s %s\n", PQgetvalue(res, i, 0),
    8. PQgetvalue(res, i, 1), PQgetvalue(res, i, 2));
    9. }
    10. PQclear(res);
    11. PQfinish(conn);
    1. conn.exec( "SELECT id, amount, title FROM Orders" ) do |result|
    2. result.each do |row|
    3. puts row.inspect
    4. end
    5. end
    1. ResultSet rs = stmt.executeQuery("SELECT * FROM people");
    2. while(rs.next()){
    3. System.out.print("ID: " + rs.getInt("(defaultdb.people.id)"));
    4. System.out.print(", Name: " + rs.getString("(defaultdb.people.name)"));
    5. System.out.print(", Salary: " + rs.getInt("(defaultdb.people.salary)"));
    6. System.out.println();
    7. }
    1. $query = 'SELECT * FROM people';
    2. $result = pg_query($query) or die('Error message: ' . pg_last_error());
    3. while ($row = pg_fetch_row($result)) {
    4. }