libpq
Version:
Low-level native bindings to PostgreSQL libpq
46 lines (40 loc) • 1.65 kB
JavaScript
var Libpq = require('../');
var assert = require('assert');
var helper = require('./helper');
describe('error info', function() {
helper.setupIntegration();
describe('when there is no error', function() {
it('everything is null', function() {
var pq = this.pq;
pq.exec('SELECT NOW()');
assert(!pq.errorMessage(), pq.errorMessage());
assert.equal(pq.ntuples(), 1);
assert(pq.resultErrorFields(), null);
});
});
describe('when there is an error', function() {
it('sets all error codes', function() {
var pq = this.pq;
pq.exec('INSERT INTO test_data VALUES(1, NOW())');
assert(pq.errorMessage());
var err = pq.resultErrorFields();
assert.notEqual(err, null);
assert.equal(err.severity, 'ERROR');
assert.equal(err.sqlState, 42804);
assert.equal(err.messagePrimary, 'column "age" is of type integer but expression is of type timestamp with time zone');
assert.equal(err.messageDetail, undefined);
assert.equal(err.messageHint, 'You will need to rewrite or cast the expression.');
assert.equal(err.statementPosition, 33);
assert.equal(err.internalPosition, undefined);
assert.equal(err.internalQuery, undefined);
assert.equal(err.context, undefined);
assert.equal(err.schemaName, undefined);
assert.equal(err.tableName, undefined);
assert.equal(err.dataTypeName, undefined);
assert.equal(err.constraintName, undefined);
assert.equal(err.sourceFile, "parse_target.c");
assert(parseInt(err.sourceLine));
assert.equal(err.sourceFunction, "transformAssignedExpr");
});
});
});