Quantcast
Channel: Question and Answer » postgresql
Viewing all articles
Browse latest Browse all 1138

Fatal error when not numeric value – PostgreSQL 9.2 [closed]

$
0
0

Below is an example of the auto-generated update query, with client-supplied keys (_iid).
There’s a fatal error when _iid is not numeric. However; this should accept any value.

I believe that’s what culling out the record from being inserted/updated, it’s the prepass before safedatainjector. There is no update persay.
It selects records that it thinks it needs to either insert/update/delete defined by tt_matched with some php logic that then splits the collections.

Question:
How could I do something that would allow _iid to be more than just an INT?

QUERY:

WITH
    in_rows AS (
      SELECT
        CAST(customer_id AS BIGINT),
        csv_data,
        freshbooks_id,
        myob_id,
        ppy_id,
        qb_id,
        xero_id,
        _iid
      FROM
        (
          VALUES
            ('3915105', E'x1A', E'x1A', 'c59894cb-0ffe-4ad6-823d-73c1392142b6', E'x1A', E'x1A', E'x1A', '44'),
            ('3915135', E'x1A', E'x1A', 'fe88ff8f-6b4d-4e3d-8020-3475a101d25e', E'x1A', E'x1A', E'x1A', 'fe88ff8f-6b4d-4e3d-8020-3475a101d25e'),
        ) AS id(customer_id, csv_data, freshbooks_id, myob_id, ppy_id, qb_id, xero_id, _iid)
  ),
    id_overlays AS (
      SELECT
        ir.customer_id,
        (tt.customer_id IS NOT NULL)                         AS tt_matched,
        (CASE WHEN (ir.csv_data :: TEXT = E'x1A')
          THEN tt.csv_data :: TEXT
         ELSE NULLIF(ir.csv_data :: TEXT, E'x18') END)      AS csv_data,
        (CASE WHEN (ir.freshbooks_id :: TEXT = E'x1A')
          THEN tt.freshbooks_id :: TEXT
         ELSE NULLIF(ir.freshbooks_id :: TEXT, E'x18') END) AS freshbooks_id,
        (CASE WHEN (ir.myob_id :: TEXT = E'x1A')
          THEN tt.myob_id :: TEXT
         ELSE NULLIF(ir.myob_id :: TEXT, E'x18') END)       AS myob_id,
        (CASE WHEN (ir.ppy_id :: TEXT = E'x1A')
          THEN tt.ppy_id :: TEXT
         ELSE NULLIF(ir.ppy_id :: TEXT, E'x18') END)        AS ppy_id,
        (CASE WHEN (ir.qb_id :: TEXT = E'x1A')
          THEN tt.qb_id :: TEXT
         ELSE NULLIF(ir.qb_id :: TEXT, E'x18') END)         AS qb_id,
        (CASE WHEN (ir.xero_id :: TEXT = E'x1A')
          THEN tt.xero_id :: TEXT
         ELSE NULLIF(ir.xero_id :: TEXT, E'x18') END)       AS xero_id,
        ir._iid :: TEXT                                      AS _iid
      FROM
        in_rows AS ir LEFT JOIN integrations.customers AS tt USING (customer_id)
  )
SELECT
  io.customer_id,
  io._iid,
  io.tt_matched,
  ((io.csv_data IS NOT NULL) OR (io.freshbooks_id IS NOT NULL) OR (io.myob_id IS NOT NULL) OR (io.ppy_id IS NOT NULL) OR
   (io.qb_id IS NOT NULL) OR (io.xero_id IS NOT NULL)) AS tt_stays
FROM
  id_overlays AS io;

ERROR:

ERROR:  invalid input syntax for integer: "fe88ff8f-6b4d-4e3d-8020-3475a101d25e" at character 419

Viewing all articles
Browse latest Browse all 1138

Trending Articles