Uploaded image for project: 'Teiid Designer'
  1. Teiid Designer
  2. TEIIDDES-196

Change default for UDF property *deterministic* from false to true to improve usability

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Minor
    • 6.1.0
    • 6.1.0
    • Modeling
    • None
    • Low

    Description

      [related to internal case IT281239]
      Change the default value for the 'deterministic' property of User Defined Functions to true, so UDFs will be specified as 'deterministic' by default.

      Currently the default value for the 'deterministic' property of User Defined Functions is false. It is probably false because that is the usual default for a boolean property. This is a usability issue because a user who creates a new UDF without paying attention to, and explicitly setting this property will wind up creating a non-deterministic UDF, by default.

      That is a bad outcome for several reasons. First, most Functions, including User Defined Functions, are deterministic, not non-deterministic. So in most cases the current default makes it more likely that this property will be specified incorrectly. Secondly, specifying that a UDF is non-deterministic when it is really deterministic may create unnecessary performance issues. For example, the planner has the ability to optimize the placement of a deterministic function so that it can be called the fewest number of times. It is unable to do that with non-deterministic functions. More critically, a change was made to all versions in Feb 2009 (see Jira TEIID-16) that prevents the merging of queries if one of them contains a non-deterministic function. This can have a dramatically negative effect on performance (see internal case IT281239).

      Attachments

        Activity

          People

            blafond Barry LaFond
            ghelblin Jerry Helbling (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: