Uploaded image for project: 'Derby'
  1. Derby
  2. DERBY-129

Derby should throw a truncation error or warning when CASTing a parameter/constant to char or char for bit datatypes and the data is too large for the datatype.

    XMLWordPrintableJSON

Details

    • Low
    • Newcomer

    Description

      Derby doesn't throw a truncation exception/warning when data is too large during casting of constants or parameters to character string or bit string data types.

      Following is ij example for constants which is too big for the datatype it is getting cast to
      ij> values (cast ('hello' as char(3)));
      1


      hel

      1 row selected
      ij> values (cast (X'0102' as char(1) for bit data));
      1


      01

      1 row selected

      Following code snippet is when using parameters through a JDBC program
      s.executeUpdate("create table ct (c CLOB(100K))");
      //the following Formatters just loads cData with 32700 'c' characters
      String cData = org.apache.derbyTesting.functionTests.util.Formatters.repeatChar("c",32700);
      //notice that ? in the preared statement below is bound to length 32672
      pSt = con.prepareStatement("insert into ct values (cast (? as varchar(32672)))");
      pSt.setString(1, cData);
      //Derby doesn't throw an exception at ps.execute time for 32700 characters into 32672 parameter. It silently
      truncates it to 32672
      pSt.execute();

      Attachments

        1. delta-1a-1b.diff
          5 kB
          Knut Anders Hatlen
        2. d129-1b.diff
          3.02 MB
          Knut Anders Hatlen
        3. d129-1a.diff
          3.02 MB
          Knut Anders Hatlen

        Issue Links

          Activity

            People

              knutanders Knut Anders Hatlen
              mamtas Mamta A. Satoor
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: