Remove potential double // in dllserver records

Noticed while looking at what might be needed for gh-2684 that some
dll entries in dali had double // in the locations. I don't think
this is likely to have any ill effect.

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Reimplement the way child queries are commoned up.

This is a reasonably substantial change.  It is partially complete, but
sufficiently good to be released and used as a building block for
further work.

The main change is in the code that spots multiple dataset operations
that will require a child query to be generated to execute them, and
combine them into a single child query so that any shared code is
only evalauted once.

The new transformer has the following stages
a) track which expressions are conditional/unconditional
b) work out which expressions are candidates for commoning up
c) calculate where those commoned up expressions should be evaluated
d) what if() conditions are needed to protect the canidate expressions
if they are executed all together?
e) What are the final conclusions on which candidates to combine.

One difference is that the transformer now creates a graph node to
represent the child query (no_childquery) instead of directly building
the child query.
This helps prepares the way for a long term goal of performing all tree
transformations up front before we start to generate any code.  There
are still other things that prevent that, but this was a key issue.

Associated changes include refactoring of the transformer that
works out whether something is conditional.  Disassociating the unique
id that represents a graph from the activity id of the graph,
supporting no_compound in more places (although not actually needed for
these changes).

In future I would hope to also combine some conditional child graphs
but that will require problems in other areas to be fixed first.
gh-2706 Ability to verify same queries are on all roxie nodes

Add code to calculate a hash representing the currently loaded package/
query combinations in a roxie.

Return hash in response to control:state and control:reload queries

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Clone record count information onto the graph results

This allows the code generator to better track the number of records,
and remove some tests on too many records being assigned.

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
More minor optimations to child query code

* Common up child queries in branches of conditional actions.  (These
  can be generated internally within a transform.)

* Introduce the code to allow the child graph to be added at the latest
  point in the graph.

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
Address some of the issues from the code review

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
Fix invalid assert assertex(required < choosenLimit)

If a choosen limit was specified on a dataset field (a fairly rare
construct) an internal assert was being reported if the number of
rows added matched the maximum instead of exceeding it.

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
Fix handling of impure conditions and case/map

Previously expressions inside a CASE/MAP weren't treated as conditional
leading to graphs being commoned up that shouldn't have been.

Similarly expressions with impure guard conditions can't be hoisted
because duplicating the condition would result in a different value.

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
Merge pull request #2711 from richardkchapman/roxie-version-gh-2706

gh-2706 Ability to verify same queries are on all roxie nodes

Reviewed-by: Gavin Halliday <ghalliday@hpccsystems.com>
Mac Package name wrong + rpath issue.

Package name had a "_" which should be a "-"
rpath's need to be fixed for third party dylibs linking to other
thirdparty dylibs

Signed-off-by: Gordon Smith <gordon.smith@lexisnexis.com>
Merge pull request #2719 from ghalliday/choosenlimit

Fix invalid assert assertex(required < choosenLimit)

Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Merge pull request #2717 from GordonSmith/MAC_PACK

Mac Package Name + RPATH issue.

Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Merge pull request #2710 from ghalliday/conditionals

Reimplement the way child queries are commoned up.

Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Merge pull request #2702 from richardkchapman/roxie-query-cleanup-gh-2684

Remove potential double // in dllserver records

Reviewed-by: Gavin Halliday <ghalliday@hpccsystems.com>
update to options of ECLCC
Fix scoping issues with #GETDATATYPE

A slighlty obscure operator #GETDATATYPE was broken by refactoring
since legacy version 702.  Fixes #1647.

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
Missing file from pull commit #0def97c73ad3d104e5eb0b153f9429b8a86e1c0d

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
Merge pull request #2723 from ghalliday/hqlcppds

Missing file from pull commit #0def97c73ad3d104e5eb0b153f9429b8a86e1c0d

Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Merge pull request #2722 from g-pan/ClientToolsUpdate1

update to options of ECLCC

Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
gh-2712, avoid lock on add/del subfiles in DFU

This is a temporary solution until a proper fix can be done.

The short-term proper fix in to allow caching on inactive
transactions via a flag (that should also deprecate the
TempTransaction object in FileServices).

The long-term proper fix is to finally make all access to
the DFS from a single entry point, ie. DFSAccess.