Skip to content

Should this package try to parse like PostgreSQL, or just what PostgreSQL produces? #101

@charmander

Description

@charmander

Take the boolean parser, for example:

function parseBool (value) {
if (value === null) return value
return value === 'TRUE' ||
value === 't' ||
value === 'true' ||
value === 'y' ||
value === 'yes' ||
value === 'on' ||
value === '1'
}

It checks for 'TRUE', 't', 'true', 'y', 'yes', 'on', and '1', and assumes anything else is false. This seems like overkill for interpreting fields from the server to me, since PostgreSQL only sends 't' and 'f' as text representations… but it’s not the right way to parse booleans in general the way PostgreSQL would either, since the latter

  • is case-insensitive ('True' is valid)
  • ignores surrounding whitespace (E' yes\t\n\f\r' is valid)
  • allows prefixes of words ('of', 'tru', 'fals' are valid)

In other words, there are strings PostgreSQL will parse as true that parseBool will parse as false with no warning.

So is 't'true, 'f'false, otherwise → throw a good direction? I’ll take a look at how it affects the performance of pg at some point.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions