Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HPCC-17651 Add --fastsyntax to delay expansion of functions #10013

Merged
merged 2 commits into from
May 23, 2017

Conversation

ghalliday
Copy link
Member

@ghalliday ghalliday commented May 18, 2017

Signed-off-by: Gavin Halliday gavin.halliday@lexisnexis.com

Type of change:

  • This change is a bug fix (non-breaking change which fixes an issue).
  • This change is a new feature (non-breaking change which adds functionality).
  • This change is a breaking change (fix or feature that will cause existing behavior to change).
  • This change alters the query API (existing queries will have to be recompiled)

Checklist:

  • My code follows the code style of this project.
    • My code does not create any new warnings from compiler, build system, or lint.
  • The commit message is properly formatted and free of typos.
    • The commit message title makes sense in a changelog, by itself.
    • The commit is signed.
  • My change requires a change to the documentation.
    • I have updated the documentation accordingly, or...
    • I have created a JIRA ticket to update the documentation.
    • Any new interfaces or exported functions are appropriately commented.
  • I have read the CONTRIBUTORS document.
  • The change has been fully tested:
    • I have added tests to cover my changes.
    • All new and existing tests passed.
    • I have checked that this change does not introduce memory leaks.
    • I have used Valgrind or similar tools to check for potential issues.
  • I have given due consideration to all of the following potential concerns:
    • Scalability
    • Performance
    • Security
    • Thread-safety
    • Premature optimization
    • Existing deployed queries will not be broken
    • This change fixes the problem, not just the symptom
    • The target branch of this pull request is appropriate for such a change.
  • There are no similar instances of the same problem that should be addressed
    • I have addressed them here
    • I have raised JIRA issues to address them separately
  • This is a user interface / front-end modification
    • I have tested my changes in multiple modern browers
    • The component(s) render as expected

Testing:

Run compile regression suites (without specifiying --fastsyntax). Only difference is some warnings about input dataset not being sorted are suppressed (a good thing). Many examples also work with --fastsyntax option enabled, but a work in progress (see issue16711 for details).

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
@hpcc-jirabot
Copy link

@ghalliday
Copy link
Member Author

@richardkchapman this is a first PR which adds the option, but when the option is enabled it still fails on a large number of examples. Should I also add it to the help text or include that in 16711? Assigning for shamser to review for the moment.
@shamser please review

Copy link
Contributor

@shamser shamser left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ghalliday Code reviewed: not a sure about a few things. please can you clarify.

@@ -6327,6 +6337,7 @@ IHqlExpression *HqlGram::bindParameters(const attribute & errpos, IHqlExpression
if (requireLateBind(function, actuals))
{
IHqlExpression * ret = NULL;
const bool expandCallsWhenBound = true;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ghalliday Is this local expandCallsWhenBound supposed to be set here? If so, the next IF section (lines 6330-6340) wil not be executed.

@@ -6598,6 +6609,7 @@ IHqlExpression * HqlGram::checkParameter(const attribute * errpos, IHqlExpressio
formalType = formalType->queryChildType();
if (!formalType->assignableFrom(actualType->queryPromotedType()))
{

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ghalliday Formatting...extra blank line.

@@ -1970,7 +1971,7 @@ IHqlExpression * NewHqlTransformer::transformCall(IHqlExpression * expr)
bool same = transformChildren(body, args);
if (same && (oldFuncdef == newFuncdef))
return LINK(expr);
OwnedHqlExpr newCall = createBoundFunction(NULL, newFuncdef, args, NULL, DEFAULT_EXPAND_CALL);
OwnedHqlExpr newCall = createBoundFunction(NULL, newFuncdef, args, NULL, false);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ghalliday This isn't using the delay expansion flag... should it?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

think it is correct. If no_call is being transformed it should remain as a no_call.

@@ -2911,7 +2911,7 @@ IHqlExpression * ImplicitProjectTransformer::createTransformed(IHqlExpression *
OwnedHqlExpr newBody = replaceChild(body, 0, newBodyCode);
OwnedHqlExpr newFuncdef = replaceChild(funcdef, 0, newBody);
unwindChildren(args, expr, 0);
transformed.setown(createBoundFunction(NULL, newFuncdef, args, NULL, DEFAULT_EXPAND_CALL));
transformed.setown(createBoundFunction(NULL, newFuncdef, args, NULL, false));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ghalliday This isn't using the delay expansion flag... should it?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no, I think it is correct. If no_call has made it through to here it should stay as a no_call.

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
@ghalliday
Copy link
Member Author

@shamser see commit and comments

@HPCCSmoketest
Copy link
Contributor

Automated Smoketest: ✅
Sha: f5b3a4a
Build: success
Build: success
ECL Watch: Rebuilding Site

errors warnings build time
0 65 94.356 seconds

Install hpccsystems-platform-community_6.3.0-trunk0.el7.x86_64.rpm
HPCC Start: OK

Unit tests result:

Test total passed failed errors timeout
unittest 93 93 0 0 0
wutoolTest(Dali) 19 19 0 0 0
wutoolTest(Cassandra) 19 19 0 0 0

Regression test result:

phase total pass fail
setup (hthor) 10 10 0
setup (thor) 10 10 0
setup (roxie) 10 10 0
test (hthor) 728 728 0
test (thor) 622 622 0
test (roxie) 749 749 0

HPCC Stop: OK
HPCC Uninstall: OK

Copy link
Contributor

@shamser shamser left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@richardkchapman Code reviewed ok

@richardkchapman richardkchapman merged commit 5e86be4 into hpcc-systems:candidate-6.4.0 May 23, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants