dtoi4 error
От | Philip Molter |
---|---|
Тема | dtoi4 error |
Дата | |
Msg-id | AA3B6.135058$QC3.8157622@news3.aus1.giganews.com обсуждение исходный текст |
Список | pgsql-general |
I'm working on porting an application from MySQL to PostgreSQL. We have one query which is rather monstrous. When I run this query, I'm getting an error 'dtoi4: integer out of range'. I'm not sure what's causing it, and I'm not sure how to fix it. Since Postgres isn't giving me a very detailed error message, I'm sort of at a loss of where to search to find where the conversion is failing. The MySQL functions listed have counterparts written in Postgres (Zachary Beane's available functions). Here's the query: SELECT h.id, h.name, h.info, h.comm, h.gid, h.active, h.low, h.sys, h.rev, UNIX_TIMESTAMP( p.next ) AS next, p.id, p.did as dwid, pt.units, pt.interval, pt.table, pt.name, pt.type, IFNULL( sl.state, 0 ) AS state, sl.value, UNIX_TIMESTAMP( sl.start_time ) AS sctstamp, sl.state AS log_state, SUM( IFNULL( sd.state, 0 ) >> 1 ) AS dephold, IFNULL( pth.d1_time, ptt.d1_time ) AS d1_time, IFNULL( pth.d1_min, ptt.d1_min ) AS d1_min, IFNULL( pth.d1_max, ptt.d1_max ) AS d1_max, IFNULL( pth.d2_time, ptt.d2_time ) AS d2_time, IFNULL( pth.d2_min, ptt.d2_min ) AS d2_min, IFNULL( pth.d2_max, ptt.d2_max ) AS d2_max, r.running, plf.field, plf.min, plf.max, wft.maptype AS field_type FROM percept p INNER JOIN h1 h ON h.id=p.id INNER JOIN pt1 pt ON pt.ptid=p.ptid LEFT JOIN pth1 pth ON pth.id=p.id LEFT JOIN sl1 sl ON sl.id=p.id AND sl.dur IS NULL LEFT JOIN pdc1 pdc ON pdc.id=p.id LEFT JOIN sl1 sd ON pdc.did=sd.id AND sd.duration IS NULL LEFT JOIN run r ON p.id=r.id LEFT JOIN plf1 plf ON p.id=plf.id LEFT JOIN ptt1 ptt ON p.ptid=ptt.ptid LEFT JOIN wft1 wft ON plf.t=wft.fieldtype AND pt.type=wft.type WHERE p.deleted = 0 AND p.next <= NOW() AND pt.interval IS NOT NULL AND r.running IS NULL GROUP BY h.id, h.name, h.info, h.comm, h.gid, h.active, h.low, h.sys, h.rev, p.next, p.id, pt.units, pt.interval, pt.table, pt.name, sl.state, sl.value, sl.start_time, r.running, plf.field, plf.min, plf.max, pt.type, p.did, wft.maptype, IFNULL( pth.d1_time, ptt.d1_time ), IFNULL( pth.d1_min, ptt.d1_min ), IFNULL( pth.d1_max, ptt.d1_max ), IFNULL( pth.d2_time, ptt.d2_time ), IFNULL( pth.d2_min, ptt.d2_min ), IFNULL( pth.d2_max, ptt.d2_max ) HAVING SUM( IFNULL( sd.state, 0 ) >> 1 ) = 0 If I change the where to be 'WHERE p.id=5' (or any other member integer), the query succeeds with no problems. Table names and fields have been changed, but that shouldn't make a difference. Any ideas? Thanks in advance for any assistance, Philip
В списке pgsql-general по дате отправления: