-
Proposal:
Hide
Relax ABNF from
functionExprParameter = functionParameterName EQ ( parameterValue / firstMemberExpr )
to
functionExprParameter = functionParameterName EQ ( parameterValue / commonExpr )
Note: this passes in the result of the expression to the function (not the expression)
Show
Relax ABNF from
functionExprParameter = functionParameterName EQ ( parameterValue / firstMemberExpr )
to
functionExprParameter = functionParameterName EQ ( parameterValue / commonExpr )
Note: this passes in the result of the expression to the function (not the expression)
-
Resolution:
Show
Accepted: https://www.oasis-open.org/committees/download.php/49055/odata-meeting-35_on-20130502-minutes.html#odata-239
To be able to use/extend the set of functions that can be used in a $apply query option functions need parameters of type expression, which expression can then be applied to each and every instance in the set they are processing.
An very simple example of such a function would:
$apply=GroupBy()/TopN(N=5, Value=Revenue)
Where 5 is just a number indicating the top N we are interested in but were 'Revenue' is actually an expression referring to the Revenue property of the entity in the set the function is acting upon. A better example in which this becomes more apparent would be:
$apply=GroupBy()/TopN(N=5, Value=Revenue sub Cost)
For build in functions we can obviously simply define this but currently there is no way of defining a 'custom' function that could implement the same behavior because we can't pass in expressions.
We then could annotate these functions to signal to tools that they can be used in $apply.
{"report":{"apdex":1,"isInitial":true,"journeyId":"5ba9b8de-4536-4d42-8114-c0b1e41f29f3","key":"jira.project.issue.view-issue","navigationType":0,"readyForUser":656,"redirectCount":0,"resourceLoadedEnd":590.5,"resourceLoadedStart":154.09999990463257,"resourceTiming":[{"duration":31.799999713897705,"initiatorType":"link","name":"https://issues.oasis-open.org/s/3edeca31ab9ba77980aae0809fbe7121-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/0a4716d29b2d5b1bdcdb168b4efc119e/_/download/contextbatch/css/_super/batch.css","startTime":154.09999990463257,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":154.09999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":185.89999961853027,"responseStart":0,"secureConnectionStart":0},{"duration":31.800000190734863,"initiatorType":"link","name":"https://issues.oasis-open.org/s/7d2823769c2e7b66e860863fe879b7f8-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/9aebb1c0aaa4c36289529757ec9dbb54/_/download/contextbatch/css/project.issue.navigator,jira.view.issue,jira.global,atl.general,-_super/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&richediton=true","startTime":154.39999961853027,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":154.39999961853027,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":186.19999980926514,"responseStart":0,"secureConnectionStart":0},{"duration":33.799999713897705,"initiatorType":"link","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/8.0.5/_/download/batch/com.atlassian.auiplugin:split_aui.pattern.label/com.atlassian.auiplugin:split_aui.pattern.label.css","startTime":154.5,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":154.5,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":188.2999997138977,"responseStart":0,"secureConnectionStart":0},{"duration":33.700000286102295,"initiatorType":"link","name":"https://issues.oasis-open.org/s/645acc233eb869f48a571293b8358a7d-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:global-static-adgs/jira.webresources:global-static-adgs.css","startTime":154.7999997138977,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":154.7999997138977,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":188.5,"responseStart":0,"secureConnectionStart":0},{"duration":34,"initiatorType":"link","name":"https://issues.oasis-open.org/s/a0dd6509771c1de0667aae5429c04cda-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:global-static/jira.webresources:global-static.css","startTime":155,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":155,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":189,"responseStart":0,"secureConnectionStart":0},{"duration":83.09999990463257,"initiatorType":"script","name":"https://issues.oasis-open.org/s/e5479157e7a0c08b005e6522f2f04104-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/0a4716d29b2d5b1bdcdb168b4efc119e/_/download/contextbatch/js/_super/batch.js?locale=en-US","startTime":155,"connectEnd":155,"connectStart":155,"domainLookupEnd":155,"domainLookupStart":155,"fetchStart":155,"redirectEnd":0,"redirectStart":0,"requestStart":155,"responseEnd":238.09999990463257,"responseStart":238.09999990463257,"secureConnectionStart":155},{"duration":129.19999980926514,"initiatorType":"script","name":"https://issues.oasis-open.org/s/83514d5d4e8543747b02042eafcdc99c-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/9aebb1c0aaa4c36289529757ec9dbb54/_/download/contextbatch/js/project.issue.navigator,jira.view.issue,jira.global,atl.general,-_super/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en-US&richediton=true","startTime":155.19999980926514,"connectEnd":155.19999980926514,"connectStart":155.19999980926514,"domainLookupEnd":155.19999980926514,"domainLookupStart":155.19999980926514,"fetchStart":155.19999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":155.19999980926514,"responseEnd":284.3999996185303,"responseStart":284.3999996185303,"secureConnectionStart":155.19999980926514},{"duration":132.5,"initiatorType":"script","name":"https://issues.oasis-open.org/s/70bb2263e59e7e1f04fbd137c80b895b-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/aae1242f5fc81cc6a5bb8bc963ccda29/_/download/contextbatch/js/atl.global,-_super/batch.js?locale=en-US","startTime":155.39999961853027,"connectEnd":155.39999961853027,"connectStart":155.39999961853027,"domainLookupEnd":155.39999961853027,"domainLookupStart":155.39999961853027,"fetchStart":155.39999961853027,"redirectEnd":0,"redirectStart":0,"requestStart":155.39999961853027,"responseEnd":287.8999996185303,"responseStart":287.8999996185303,"secureConnectionStart":155.39999961853027},{"duration":132.90000009536743,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:calendar-en/jira.webresources:calendar-en.js","startTime":155.59999990463257,"connectEnd":155.59999990463257,"connectStart":155.59999990463257,"domainLookupEnd":155.59999990463257,"domainLookupStart":155.59999990463257,"fetchStart":155.59999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":155.59999990463257,"responseEnd":288.5,"responseStart":288.5,"secureConnectionStart":155.59999990463257},{"duration":133.2000002861023,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:calendar-localisation-moment/jira.webresources:calendar-localisation-moment.js","startTime":155.7999997138977,"connectEnd":155.7999997138977,"connectStart":155.7999997138977,"domainLookupEnd":155.7999997138977,"domainLookupStart":155.7999997138977,"fetchStart":155.7999997138977,"redirectEnd":0,"redirectStart":0,"requestStart":155.7999997138977,"responseEnd":289,"responseStart":289,"secureConnectionStart":155.7999997138977},{"duration":133.5,"initiatorType":"script","name":"https://issues.oasis-open.org/s/cda37faab827dbdf305de8efe8282062-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/8.0.5/_/download/batch/com.atlassian.auiplugin:split_aui.pattern.label/com.atlassian.auiplugin:split_aui.pattern.label.js?locale=en-US","startTime":156,"connectEnd":156,"connectStart":156,"domainLookupEnd":156,"domainLookupStart":156,"fetchStart":156,"redirectEnd":0,"redirectStart":0,"requestStart":156,"responseEnd":289.5,"responseStart":289.5,"secureConnectionStart":156},{"duration":248.69999980926514,"initiatorType":"link","name":"https://issues.oasis-open.org/s/07245784f53abc49bad9d9d4d36c577a-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/cadc4f20cc5c138dee060d42cf85f220/_/download/contextbatch/css/jira.global.look-and-feel,-_super/batch.css","startTime":156.19999980926514,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":156.19999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":404.8999996185303,"responseStart":0,"secureConnectionStart":0},{"duration":133.80000019073486,"initiatorType":"script","name":"https://issues.oasis-open.org/rest/api/1.0/shortcuts/803004/a29179d70fa8562374ee16707692af77/shortcuts.js?context=issuenavigation&context=issueaction","startTime":156.39999961853027,"connectEnd":156.39999961853027,"connectStart":156.39999961853027,"domainLookupEnd":156.39999961853027,"domainLookupStart":156.39999961853027,"fetchStart":156.39999961853027,"redirectEnd":0,"redirectStart":0,"requestStart":156.39999961853027,"responseEnd":290.19999980926514,"responseStart":290.19999980926514,"secureConnectionStart":156.39999961853027},{"duration":218.09999990463257,"initiatorType":"link","name":"https://issues.oasis-open.org/s/f77fd89aa211a76b20e9b0e63564383c-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/4a9288299d147101bf66484f4be48925/_/download/contextbatch/css/com.atlassian.jira.projects.sidebar.init,-_super,-jira.view.issue,-project.issue.navigator/batch.css?jira.create.linked.issue=true&richediton=true","startTime":187,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":187,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":405.09999990463257,"responseStart":0,"secureConnectionStart":0},{"duration":104.09999990463257,"initiatorType":"script","name":"https://issues.oasis-open.org/s/41525c48ddceeb9b11e54085268fc285-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/4a9288299d147101bf66484f4be48925/_/download/contextbatch/js/com.atlassian.jira.projects.sidebar.init,-_super,-jira.view.issue,-project.issue.navigator/batch.js?jira.create.linked.issue=true&locale=en-US&richediton=true","startTime":187.19999980926514,"connectEnd":187.19999980926514,"connectStart":187.19999980926514,"domainLookupEnd":187.19999980926514,"domainLookupStart":187.19999980926514,"fetchStart":187.19999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":187.19999980926514,"responseEnd":291.2999997138977,"responseStart":291.2999997138977,"secureConnectionStart":187.19999980926514},{"duration":231,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:bigpipe-js/jira.webresources:bigpipe-js.js","startTime":197.59999990463257,"connectEnd":197.59999990463257,"connectStart":197.59999990463257,"domainLookupEnd":197.59999990463257,"domainLookupStart":197.59999990463257,"fetchStart":197.59999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":197.59999990463257,"responseEnd":428.59999990463257,"responseStart":428.59999990463257,"secureConnectionStart":197.59999990463257},{"duration":218.7999997138977,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:bigpipe-init/jira.webresources:bigpipe-init.js","startTime":220,"connectEnd":220,"connectStart":220,"domainLookupEnd":220,"domainLookupStart":220,"fetchStart":220,"redirectEnd":0,"redirectStart":0,"requestStart":220,"responseEnd":438.7999997138977,"responseStart":438.7999997138977,"secureConnectionStart":220},{"duration":18.90000009536743,"initiatorType":"xmlhttprequest","name":"https://issues.oasis-open.org/rest/webResources/1.0/resources","startTime":440.69999980926514,"connectEnd":440.69999980926514,"connectStart":440.69999980926514,"domainLookupEnd":440.69999980926514,"domainLookupStart":440.69999980926514,"fetchStart":440.69999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":440.69999980926514,"responseEnd":459.59999990463257,"responseStart":459.59999990463257,"secureConnectionStart":440.69999980926514},{"duration":59.799999713897705,"initiatorType":"link","name":"https://issues.oasis-open.org/s/aeb03806f52375e9f16c6e7cfc116a1e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/0f62074d64a5f8b40a9c54a9164c6288/_/download/contextbatch/css/jira.rich.editor.api,jira.project.sidebar,jira.rich.editor,-_super,-jira.view.issue,-jira.global,-atl.general,-com.atlassian.jira.projects.sidebar.init,-project.issue.navigator/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&richediton=true","startTime":514.5,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":514.5,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":574.2999997138977,"responseStart":0,"secureConnectionStart":0},{"duration":55.09999990463257,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/be9ff0efea54a6453d2ac60b92912a09/_/download/contextbatch/js/browser-metrics-plugin.contrib,-_super,-project.issue.navigator,-jira.view.issue,-atl.general/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&richediton=true","startTime":516.5,"connectEnd":516.5,"connectStart":516.5,"domainLookupEnd":516.5,"domainLookupStart":516.5,"fetchStart":516.5,"redirectEnd":0,"redirectStart":0,"requestStart":516.5,"responseEnd":571.5999999046326,"responseStart":571.5999999046326,"secureConnectionStart":516.5},{"duration":61.40000009536743,"initiatorType":"script","name":"https://issues.oasis-open.org/s/fae9f5fde9b05432c72bed202556f5fb-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/0f62074d64a5f8b40a9c54a9164c6288/_/download/contextbatch/js/jira.rich.editor.api,jira.project.sidebar,jira.rich.editor,-_super,-jira.view.issue,-jira.global,-atl.general,-com.atlassian.jira.projects.sidebar.init,-project.issue.navigator/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en-US&richediton=true","startTime":516.8999996185303,"connectEnd":516.8999996185303,"connectStart":516.8999996185303,"domainLookupEnd":516.8999996185303,"domainLookupStart":516.8999996185303,"fetchStart":516.8999996185303,"redirectEnd":0,"redirectStart":0,"requestStart":516.8999996185303,"responseEnd":578.2999997138977,"responseStart":578.2999997138977,"secureConnectionStart":516.8999996185303},{"duration":71.2000002861023,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/4.0.25/_/download/resources/com.atlassian.jira.plugins.jira-editor-plugin:tinymce/tinymce.js?batch=false","startTime":517.2999997138977,"connectEnd":517.2999997138977,"connectStart":517.2999997138977,"domainLookupEnd":517.2999997138977,"domainLookupStart":517.2999997138977,"fetchStart":517.2999997138977,"redirectEnd":0,"redirectStart":0,"requestStart":517.2999997138977,"responseEnd":588.5,"responseStart":588.5,"secureConnectionStart":517.2999997138977},{"duration":72.40000009536743,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/4.0.25/_/download/resources/com.atlassian.jira.plugins.jira-editor-plugin:tinymce/tinymce-amd.js?batch=false","startTime":517.5999999046326,"connectEnd":517.5999999046326,"connectStart":517.5999999046326,"domainLookupEnd":517.5999999046326,"domainLookupStart":517.5999999046326,"fetchStart":517.5999999046326,"redirectEnd":0,"redirectStart":0,"requestStart":517.5999999046326,"responseEnd":590,"responseStart":590,"secureConnectionStart":517.5999999046326},{"duration":72.5,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/4.0.25/_/download/resources/com.atlassian.jira.plugins.jira-editor-plugin:tinymce/themes/modern/theme.js?batch=false","startTime":518,"connectEnd":518,"connectStart":518,"domainLookupEnd":518,"domainLookupStart":518,"fetchStart":518,"redirectEnd":0,"redirectStart":0,"requestStart":518,"responseEnd":590.5,"responseStart":590.5,"secureConnectionStart":518}],"threshold":1000,"fetchStart":0,"domainLookupStart":50,"domainLookupEnd":50,"connectStart":50,"connectEnd":99,"secureConnectionStart":74,"requestStart":99,"responseStart":148,"responseEnd":219,"domLoading":152,"domInteractive":813,"domContentLoadedEventStart":813,"domContentLoadedEventEnd":888,"domComplete":956,"loadEventStart":956,"loadEventEnd":959,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[],"measures":[],"correlationId":"c31fffdd7d0577","effectiveType":"4g","downlink":10,"rtt":0,"serverDuration":93,"dbReadsTimeInMs":11,"dbConnsTimeInMs":14,"applicationHash":"4d4040e0714d65b7fffa4801569d014c0b16eaa9","experiments":[]}}
I don't think this works; this says that I can pass any arbitrary expression, but doesn't say how that expression is interpreted. Does this mean I can pass any expression to any function, or do we need to have a way to define that a function takes an expression?
How would we differentiate between passing the value of the expression (as we do with firstMemberExpression today) and passing the expression itself? For example, how do I differentiate between passing the value for revenue versus the expression revenue?