IBM Support

PM09278: IGYGS1258-S SEARCH ALL key longer than 256 bytes.

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • RD/z is generating COBOL tables with a key longer than 256
    bytes.  This is against the documented restriction.  So we want
    to allow configuration of hashing heuristics to avoid binary
    search (SEARCH ALL) 256-byte XPath limit.  Applies to:  IBM
    Rational Developer for System z V7.6.0.1
    This Test Fix makes available two heuristics used by the RDz
    COBOL compiled XML converter generator:
    MAX_HASH_RANGE_MULTIPLIER, and MAX_HASH_COMP_ELAPSED_MS.  These
    heuristics influence whether RD/z will generate COBOL XML
    converters based on hashing or binary search (SEARCH ALL).
    MAX_HASH_RANGE_MULTIPLIER:
    Heuristic setting that influences the maximum size of
    collision-free hash tables for mapped XML XPaths in XML to
    language structure converters generated by RDz.  Increasing the
    value of this setting will make it more likely that an XML
    converter based on hashing instead of binary search will be
    generated.  While larger hash table sizes cause additional heap
    storage to be used, search performance will remain constant.
    The formula used to compute the maximum range (size) of the hash
    table follows:
    max_hash_range
      = NextPrime([mapped_xpath_count * MAX_HASH_RANGE_MULTIPLIER])
    Usage:  Increase the value of the setting by 1 until an XML c
    onverter based on hashing is generated by RDz.  This heuristic
    applies only to XML to language structure converters.
      MAX_HASH_COMP_ELAPSED_MS:
    Heuristic setting that bounds the amount of time that RDz will
    spend computing a collision-free hash table for mapped XML
    XPaths in XML to language structure converters.  RDz will
    generate binary search (SEARCH ALL) if a collision-free hash
    table is not found after MAX_HASH_COMP_ELAPSED_MS milliseconds
    have elapsed since the computation began.  It is recommended
    that the value of this setting be increased whenever the value
    of the heuristic MAX_HASH_RANGE_MULTIPLIER is increased; this
    will allow additional time for RDz to try larger hash table
    sizes.
    Usage:  Increase the value of the setting by 1000 until an XML
    converter based on hashing is generated by RDz.  This heuristic
    applies only to XML to language structure conversion.
    After applying the Test Fix, the default values of these
    heuristics are read from
    com.ibm.etools.xmlent.xform.gen.cobol/plugin.xml via a new
    internal extension point.  The default content of plugin.xml
    follows:
        ?extension point='com.ibm.etools.xmlent.cobol.xform.gen.
    heuristics'?
          ?search_heuristics MAX_HASH_RANGE_MULTIPLIER='3'
                             MAX_HASH_COMP_ELAPSED_MS='15000' /?
        ?/extension?
    Changes made to the attributes search_heuristics/
    @MAX_HASH_RANGE_MULTIPLIER and
    search_heuristic/@MAX_HASH_COMP_ELAPSED_MS take effect when the
    RDz workbench is restarted.
    Enterprise Service Tools projects will remember the values of
    these heuristics that were defined in plugin.xml when the code
    was generated.  The values are recorded in the file
    Project/Generation/Platfor mProperties.xml:
       ?CodegenProperty
       name='com.ibm.etools.xmlent.ui.GEN_MAX_HASH_RANGE_MULTIPLIER'
          value='3'/?
        ?CodegenProperty
       name='com.ibm.etools.xmlent.ui.GEN_MAX_HASH_COMP_ELAPSED_MS'
          value='15000'/?
    Once code has been generated in an Enterprise Service Tools
    project, the project will use the values recorded in the file
    Project/Generation/PlatformProperties.xml, not those in the file
    com.ibm.etools.xmlent.xform.gen.cobol/plugin.xml.  Therefore, to
    specify different values for the heuristics when regenerating
    code in an EST project, edit the values in
    PlatformProperties.xml.
    

Local fix

Problem summary

  • necessary to avoid the use of SEARCH ALL when XML XPaths exceed
    256 bytes (128 characters UTF-16, 256 characters SBCS).
    

Problem conclusion

  • Made available two heuristics used by the RDz COBOL compiled XML
    converter generator:  MAX_HASH_RANGE_MULTIPLIER, and
    MAX_HASH_COMP_ELAPSED_MS.
    These heuristics influence whether RDz will generate COBOL XML
    converters based
    on hashing or binary search (SEARCH ALL).
    
    MAX_HASH_RANGE_MULTIPLIER:
    
    Heuristic setting that influences the maximum size of
    collision-free hash tables
    for mapped XML XPaths in XML to language structure converters
    generated by RDz.
    Increasing the value of this setting will make it more likely
    that an XML
    converter based on hashing instead of binary search will be
    generated.  While
    larger hash table sizes cause additional heap storage to be
    used, search
    performance will remain constant.  The formula used to compute
    the maximum range
    (size) of the hash table follows:  max_hash_range =
    NextPrime([mapped_xpath_count * MAX_HASH_RANGE_MULTIPLIER]).
    
    Usage:  Increase the value of the setting by 1 until an XML
    converter based on
    hashing is generated by RDz.  This heuristic applies only to XML
    to language
    structure converters.
    
    MAX_HASH_COMP_ELAPSED_MS:
    
    Heuristic setting that bounds the amount of time that RDz will
    spend computing a
    collision-free hash table for mapped XML XPaths in XML to
    language structure
    converters.  RDz will generate binary search (SEARCH ALL) if a
    collision-free
    hash table is not found after MAX_HASH_COMP_ELAPSED_MS
    milliseconds have elapsed
    since the computation began.  It is recommended that the value
    of this setting
    be increased whenever the value of the heuristic
    MAX_HASH_RANGE_MULTIPLIER is
    increased; this will allow additional time for RDz to try larger
    hash table
    sizes.
    
    Usage:  Increase the value of the setting by 1000 until an XML
    converter based
    on hashing is generated by RDz.  This heuristic applies only to
    XML to language
    structure conversion.
    
    After applying the Test Fix, the default values of these
    heuristics are read
    from folder:
    
      <RDzInstallLocation>\SDPShared\plugins\plugins\
    
    com.ibm.etools.xmlent.cobol.xform.gen_9.3.300.201003111122\plugi
    n.xml
    
    via a new internal extension point.  The default content of
    plugin.xml follows:
    
      <extension
    point="com.ibm.etools.xmlent.cobol.xform.gen.heuristics">
        <search_heuristics MAX_HASH_RANGE_MULTIPLIER="3"
                           MAX_HASH_COMP_ELAPSED_MS="15000" />
      </extension>
    
    Changes made to the attributes
    search_heuristics/@MAX_HASH_RANGE_MULTIPLIER and
    search_heuristic/@MAX_HASH_COMP_ELAPSED_MS take effect when RDz
    is started
    *with the -clean option*.
    
    Enterprise Service Tools projects will remember the values of
    these heuristics
    that were defined in plugin.xml when the code was generated.
    The values are
    recorded in the file Project/Generation/PlatformProperties.xml:
    
      <CodegenProperty
       name="com.ibm.etools.xmlent.ui.GEN_MAX_HASH_RANGE_MULTIPLIER"
    value="3"/>
    
      <CodegenProperty
       name="com.ibm.etools.xmlent.ui.GEN_MAX_HASH_COMP_ELAPSED_MS"
    value="15000"/>
    
    Once code has been generated in an Enterprise Service Tools
    project, the project
    will use the values recorded in the file
    Project/Generation/PlatformProperties.xml, not those in the file
    com.ibm.etools.xmlent.xform.gen.cobol/plugin.xml.  Therefore, to
    specify
    different values for the heuristics when regenerating code in an
    EST project,
    edit the values in PlatformProperties.xml.
    The problem listed in this APAR has been resolved with
    IBM Rational Developer for System z V7.6.1 Refresh Pack which
    is available from the Recommended Fixes support download page:
    http://www-1.ibm.com/support/docview.wss?rs=2294&uid=swg27006335
    

Temporary fix

Comments

  • FITS MR0216104537 exists.  This is a request for a more complete
    solution.
    

APAR Information

  • APAR number

    PM09278

  • Reported component name

    RATL DEV FOR SY

  • Reported component ID

    5724T0700

  • Reported release

    760

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2010-03-05

  • Closed date

    2010-05-22

  • Last modified date

    2010-06-01

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    RATL DEV FOR SY

  • Fixed component ID

    5724T0700

Applicable component levels

  • R761 PSY

       UP

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSJK49","label":"IBM Developer for z Systems"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.6","Edition":"","Line of Business":{"code":"LOB35","label":"Mainframe SW"}}]

Document Information

Modified date:
27 October 2020