denodrivers / postgres

PostgreSQL driver for Deno

Home Page:https://denodrivers.github.io/postgres

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

deno-postgres panics on `name_too_long` error

uki00a opened this issue · comments

Summary

I noticed that deno-postgres panics when PostgreSQL returns name_too_long error. I think deno-postgres should handle this error like node-postgres does. (See Additional information)

Steps to reproduce

Run the following code with deno run command:

import { Client } from "https://deno.land/x/postgres@v0.7.1/mod.ts"

const client = new Client({
  "applicationName": "deno-postgres",
  "database": "deno-postgres",
  "hostname": "127.0.0.1",
  "password": "test",
  "port": 5432,
  "user": "test"
});
await client.connect();

const result = await client.queryArray(`
  SELECT 1 AS "very_very_very_very_very_very_very_very_very_very_very_long_name"
`);

Error message in the console:

NOTICE: identifier "very_very_very_very_very_very_very_very_very_very_very_long_name" will be truncated to "very_very_very_very_very_very_very_very_very_very_very_long_nam"
error: Uncaught (in promise) Error: Unexpected frame: T
                    throw new Error(`Unexpected frame: ${msg.type}`);

Environment

  • deno-postgres@v0.7.1
  • deno@v1.7.2

Additional information

When running the same query with node-postgres, it works as follows:

const { Client } = require('pg');

const client = new Client({
  database: "deno-postgres",
  host: "127.0.0.1",
  password: "test",
  port: 5432,
  user: "test"
});
client.connect();

client.query(`SELECT 1 AS "very_very_very_very_very_very_very_very_very_very_very_long_name"`, (err, res) => {
  if (err) {
    console.error(err);
  } else {
    console.log(res.rows);
  }
  client.end();
});

Output:

[
  {
    very_very_very_very_very_very_very_very_very_very_very_long_nam: 1
  }
]

Ref

https://www.postgresql.org/docs/13/errcodes-appendix.html