Various index count and aggregate fixes

Remove projects from count(keyed-limit(project(index)))
  A missing case from a switch statement meant projects weren't
  stripped when there was a keyed limit on the index read.

Reduce the generated code size for an index count/exists
  The numValid(size, ptr) member was never called for an index, so default
  it to throwing an exception in the base class, and clean up numValid(ptr)
  code.

CHOOSEN(LIMIT(index-read))
  The choosen was not being combined within the compound indexread if there
  was a limit.  It is however valid to do so since the choosen is done last.
  (A limit cannot be combined when there is an existing choosen.)
  This was unfortunate because it was frustrating  another optimization.
  count(index-read) > n being converted to count(choosen(index-read,n+1)) > n
  (This is temporarily retained, but will be removed in a subsequent commit).

IF(count(x) > 0, x, y) optimization
  Currently the intention is to perform a count-index on x before reading x.
  However if x contains a limit,skip it is going to need to read the entire
  result, so don't perform the count separately.

Don't generate count(index) if there is a skip limit

Optimize count(x) > 0 to exists(x)
  Instead of (count(x) > 0) becoming count(choosen(x, 1)) > 0 it is now
  transformed to exists(x) - which is either as efficient, or more
  efficient as the count representation.

Remove no_notexists since never created

Terminate hthor exists aggregate activity early

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
gh-1997 Fix usability issues for User Permission view

Existing user permission page has two usability issues.
(1) multiple permission tables are displayed in one page
which makes the page difficult to read. (2) for each
permission table (permission group), there is an Add
button which allows to add more permission to that group.
The page shows the Add button and the reource list even
though no more permission can be added for some resources.
This fix only shows the first permission table and the
expend links for other tables. This fix also filters out
the resources from the resource list if no more permission
can be added. If the resource list is empty, the Add
button will not be displayed for that permission table.

Signed-off-by: Kevin Wang <kevin.wang@lexisnexis.com>
Revised based on review

Signed-off-by: Kevin Wang <kevin.wang@lexisnexis.com>
Ensure GLOBAL(cluster) uses a constant expression

Fixes a core when a variable cluster name is used as the second
parameter of GLOBAL(action, <cluster>).

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
Clean up unused variables and code

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
Fix potential problems with dynamic cluster names

Dynamic cluster names (second parameter to GLOBAL) aren't currently
supported.  These fixes would allow them to work.  There are still
potential problems that dynamic cluster names wouldn't be added to the
workunit so they are still disallowed.

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
Add example file to regression suite

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
Refactor how eclcc scans directories

A minor refactoring of how eclcc scans directories, to avoid an extra scan that
can be (a little) expensive when scanning remote or container directories such
as git repositories.

Hopefully the code is also a little cleaner and easier to follow now too, at
least in my opinion...

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Merge pull request #2138 from ghalliday/globalcrash

Fix potential problems with dynamic cluster names

Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Merge pull request #2140 from richardkchapman/hqlcollect-refactor

Refactor how eclcc scans directories

Reviewed-by: Gavin Halliday <ghalliday@hpccsystems.com>
gh-1988 - exit non-grouped existaggregate early

For a non-grouped TAKexistsaggregate, once the 1st record is read, there's
not need to read rest of input

Signed-off-by: Jake Smith <jake.smith@lexisnexis.com>
Clearer variable name

Signed-off-by: Jake Smith <jake.smith@lexisnexis.com>
Merge pull request #2144 from jakesmith/gh-1988

gh-1988 - exit non-grouped existaggregate early

Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Merge pull request #1988 from ghalliday/countexists

Various index count and aggregate fixes

Reviewed-By: Jake Smith <jake.smith@lexisnexis.com>
Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Merge pull request #2012 from wangkx/gh1997

gh-1997 Fix usability issues for User Permission view

Reviewed-By: Anthony Fishbeck <anthony.fishbeck@lexisnexis.com>
Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>