Search code examples
postgresqlpg-promisedblink

Using dblink extension from pg-promise


I have a PostgreSQL database with dblink extension. I can use dblink without issues from pgAdmin but not from my nodeJS code using pg-promise.

I have checked that I am on the correct schema and database. Running SELECT * FROM pg_extension; from my code does return that dblink is installed. However running a query including dblink results in: error: function dblink(unknown, unknown) does not exist

Is there something I should do to make dblink work in this scenario?

This a basic example of my code:

query1 = 'SELECT * FROM pg_extension;'
query2 = `Select *
     FROM dblink('host=XXX user=XXX password=XXXX dbname=XXXX',
    'select name from example_table')
    AS t(name text);`

db.any(
 query1
).then(function(results) {
 console.log('Query1 result:', results)
}).catch(function(err) {
 console.log(`Error in query1 ${err}`)
})

db.any(
  query2
).then(function(results) {
  console.log('Query2 result:', results)
}).catch(function(err) {
  console.log(`Error in query2 ${err}`)
})  

Result:

Query1 result: [
  {
    extname: 'plpgsql',
    extowner: 10,
    extnamespace: 11,
    extrelocatable: false,
    extversion: '1.0',
    extconfig: null,
    extcondition: null
  },
  {
    extname: 'dblink',
    extowner: 10,
    extnamespace: 2200,
    extrelocatable: true,
    extversion: '1.2',
    extconfig: null,
    extcondition: null
  },
  {
    extname: 'timescaledb',
    extowner: 10,
    extnamespace: 24523,
    extrelocatable: false,
    extversion: '1.7.1',
    extconfig: [
      25044, 25042, 25068, 25083,
      25081, 25102, 25100, 25118,
      25116, 25139, 25155, 25157,
      25173, 25175, 25193, 25210,
      25246, 25254, 25283, 25293,
      25303, 25307, 25324, 25343,
      25358, 25472, 25478, 25475
    ],
    extcondition: [
      '',
      '',
      '',
      '',
      '',
      '',
      '',
      '',
      '',
      '',
      '',
      '',
      '',
      'WHERE id >= 1000',
      '',
      '',
      "WHERE key='exported_uuid'",
      '',
      '',
      '',
      '',
      '',
      '',
      '',
      '',
      '',
      '',
      ''
    ]
  }
]
Error in query2 error: function dblink(unknown, unknown) does not exist

Solution

  • It looks like exactly what I get if dblink is installed in "public" but "public" is not in my search_path.