firebird icon indicating copy to clipboard operation
firebird copied to clipboard

Wrong error messeage "string right truncation; expected length 2, actual 2"

Open EPluribusUnum opened this issue 4 months ago • 1 comments

Firebird 3.0.13 released.

RPT_TMP_100002161_20250.GL_HASZNMOD__KOD is a VARCHAR(2) FAFAJ.HMKOD -> GL_HASZNMOD.KOD is VARCHAR(4) INSERT-SELECT want insert 3 length into RPT_TMP_100002161_20250.GL_HASZNMOD__KOD.

The error message is wrong, it should be "string right truncation; expected length 2, actual 3" The database is 15.4G. I'll send it if you need it.

INSERT INTO RPT_TMP_100002161_20250 (
KTRK_T__KOD,KTRK_T__NEV,GL_HASZNMOD__KOD,GL_HASZNMOD__NEV,KTFJ_FAFAJ__KOD,KTFJ_FAFAJ__NEV,KTFJ__KOD,
KTFJ__NEV,KTBT__ID,KTBT__DB,KTBT___DB_SZAZALEK)
SELECT  x.*
FROM (
with LISTA
as (select FAFAJ.RKKOD,
           FAFAJ.RKNEV,
           FAFAJ.HMKOD,
           FAFAJ.HMNEV,
           FAFAJ.FFKOD,
           FAFAJ.FFNEV,
           FAFAJ.FJKOD,
           FAFAJ.FJNEV,
           FAFAJ.KT_DB,
           FAFAJ.BTID,
           sum(FAFAJ.KT_DB) KT_DB_SUMM
    from (select RK.KOD RKKOD,
                 RK.NEV RKNEV,
                 HM.KOD HMKOD,
                 HM.NEV HMNEV,
                 FF.KOD FFKOD,
                 FF.NEV FFNEV,
                 FJ.KOD FJKOD,
                 FJ.NEV FJNEV,
                 BT.ID BTID,
                 round(KT.DB, 3) - coalesce((select sum(round(BT_VISSZARU.DB, 3))
                                             from KTBT BT_VISSZARU
                                             join KTBF BF_VISSZARU on BF_VISSZARU.ID =
BT_VISSZARU.KTBF_ID
                                             where BF_VISSZARU.ST_ID is null and
                                                   BF_VISSZARU.ERV = 'I' and
                                                   BT_VISSZARU.BEV_KTKT_ID = KT.ID), 0)
KT_DB
          from KTBF BF
          join KTMN MN on MN.MTIP = BF.MTIP and MN.KOD = BF.KTMN_KOD
          join KTRK RK on RK.KOD = BF.KTRK_KOD
          join KTBT BT on BF.ID = BT.KTBF_ID
          join GL_HASZNMOD HM on HM.ID = BT.GL_HASZNMOD_ID
          join KTFJ_FAFAJ FF on FF.ID = BT.KTFJ_FAFAJ_ID
          join KTFJ FJ on FJ.ID = BT.KTFJ_ID
          join KTKT KT on KT.KTBT_ID = BT.ID
          where BF.MTIP = '1' and
                MN.SAJAT_TERMELES = 'I' and
                BF.ERV = 'I' and
                BF.ST_ID is null ) FAFAJ
                   where round(FAFAJ.KT_DB, 3) > 0
                   group by FAFAJ.RKKOD, FAFAJ.RKNEV, FAFAJ.HMKOD, FAFAJ.HMNEV,
FAFAJ.FFKOD, FAFAJ.FFNEV, FAFAJ.FJKOD, FAFAJ.FJNEV, FAFAJ.BTID, FAFAJ.KT_DB),
SUMMA
as (select FAFAJ.RKKOD,
           FAFAJ.HMKOD,
           FAFAJ.FFKOD,
           FAFAJ.FJKOD,
           FAFAJ.KT_DB KT_DB_SUMM
    from (select RK.KOD RKKOD,
                HM.KOD HMKOD,
                 FF.KOD FFKOD,
                 FJ.KOD FJKOD,
                 round(sum(KT.DB - coalesce((select sum(round(BT_VISSZARU.DB, 3))
                                             from KTBT BT_VISSZARU
                                             join KTBF BF_VISSZARU on BF_VISSZARU.ID =
BT_VISSZARU.KTBF_ID
                                             where BF_VISSZARU.ST_ID is null and
                                                   BF_VISSZARU.ERV = 'I' and
                                                   BT_VISSZARU.BEV_KTKT_ID = KT.ID), 0)),
3) KT_DB
          from KTBF BF
          join KTMN MN on MN.MTIP = BF.MTIP and MN.KOD = BF.KTMN_KOD
          join KTRK RK on RK.KOD = BF.KTRK_KOD
          join KTBT BT on BF.ID = BT.KTBF_ID
          join GL_HASZNMOD HM on HM.ID = BT.GL_HASZNMOD_ID
          join KTFJ_FAFAJ FF on FF.ID = BT.KTFJ_FAFAJ_ID
          join KTFJ FJ on FJ.ID = BT.KTFJ_ID
          join KTKT KT on KT.KTBT_ID = BT.ID
          where BF.MTIP = '1' and
                MN.SAJAT_TERMELES = 'I' and
                BF.ERV = 'I' and
                BF.ST_ID is null
          group by RK.KOD, HM.KOD, FF.KOD, FJ.KOD) FAFAJ
    where FAFAJ.KT_DB > 0
    )
                   select LISTA.RKKOD KTRK_T__KOD,
                          LISTA.RKNEV KTRK_T__NEV,
                          LISTA.HMKOD GL_HASZNMOD__KOD,
                          LISTA.HMNEV GL_HASZNMOD__NEV,
                          LISTA.FFKOD KTFJ_FAFAJ__KOD,
                          LISTA.FFNEV KTFJ_FAFAJ__NEV,
                          LISTA.FJKOD KTFJ__KOD,
                          LISTA.FJNEV KTFJ__NEV,
                          LISTA.BTID KTBT__ID,
                          LISTA.KT_DB KTBT__DB,
                          round(LISTA.KT_DB * 100 * cast(1 / cast(SUMMA.KT_DB_SUMM as
double precision) as double precision), 0) KTBT___DB_SZAZALEK
                   from LISTA
                   left outer join SUMMA on SUMMA.RKKOD = LISTA.RKKOD and SUMMA.HMKOD =
LISTA.HMKOD and SUMMA.FFKOD = LISTA.FFKOD and SUMMA.FJKOD = LISTA.FJKOD
/*ORDER BY*/)x

Thank You!

EPluribusUnum avatar Aug 15 '25 10:08 EPluribusUnum

Test on Firebird 6, please.

aafemt avatar Dec 13 '25 15:12 aafemt