text: /*
   * Licensed to the Apache Software Foundation (ASF) under one or more
   * contributor license agreements.  See the NOTICE file distributed with
   * this work for additional information regarding copyright ownership.
   * The ASF licenses this file to You under the Apache License, Version 2.0
   * (the "License"); you may not use this file except in compliance with
   * the License.  You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  #pragma once
  
  #ifndef GEODE_INTEGRATION_TEST_QUERYSTRINGS_H_
  #define GEODE_INTEGRATION_TEST_QUERYSTRINGS_H_
  
  #include <utility>
  #include <string>
  
  namespace testData {
  
  const int RS_ARRAY_SIZE = 40;
  const int RSP_ARRAY_SIZE = 13;
  const int RSOPL_ARRAY_SIZE =
      5;  // result set sizes for queries returned via ObjectPartList
  const int SS_ARRAY_SIZE = 36;
  const int SSP_ARRAY_SIZE = 17;
  const int SSOPL_ARRAY_SIZE =
      4;  // struct set sizes for queries returned via ObjectPartList
  const int RQ_ARRAY_SIZE = 21;  // for region.query() API queries
  const int CQRS_ARRAY_SIZE = 24;
  
  const int MAX_QRY_LENGTH = 512;
  enum queryCategory {
    singleRegion = 0,
    multiRegion,
    operators,
    constants,
    functions,
    collectionOps,
    keywords,
    regionInterface,
    nestedQueries,
    importAndSelect,
    canonicalization,
    unsupported,
    queryAndIndexing,
    misc,
    regionQuery,
    qcEnd /*to mark the end of enum*/
  } qcType;
  
  class QueryStrings {
   public:
    QueryStrings(queryCategory pcategory, std::string pquery,
                 bool pisLargeResultset = false)
        : _query(std::move(pquery)),
          category(pcategory),
  
          haveLargeResultset(pisLargeResultset) {}
  
    static int RSsize() { return RS_ARRAY_SIZE; };
    static int RSPsize() { return RSP_ARRAY_SIZE; };
    static int RSOPLsize() { return RSOPL_ARRAY_SIZE; };
    static int SSsize() { return SS_ARRAY_SIZE; };
    static int SSPsize() { return SSP_ARRAY_SIZE; };
    static int SSOPLsize() { return SSOPL_ARRAY_SIZE; };
    static int RQsize() { return RQ_ARRAY_SIZE; };
    static int CQRSsize() { return CQRS_ARRAY_SIZE; };
    const std::string& query() const { return _query; };
  
   public:
    std::string _query;
    queryCategory category;
    bool haveLargeResultset;
  
   private:
    QueryStrings();
    // QueryStrings(QueryStrings&);
    QueryStrings* operator=(QueryStrings&);
  };
  
  #define QRY(category, query) QueryStrings(category, query)
  
  // for large resultset
  #define LQRY(category, query) QueryStrings(category, query, true)
  
  const QueryStrings resultsetQueries[RS_ARRAY_SIZE] = {
      // 0 idx
      QRY(singleRegion, "select distinct * from /Portfolios port"),
      QRY(singleRegion, "select distinct pkid from /Portfolios")
  
      // 2 idx
      ,
      LQRY(multiRegion,
           "select distinct port from /Portfolios port, "
           "port.Positions.values"),
      QRY(multiRegion,
          "select distinct pf from /Portfolios pf , pf.positions.values "
          "pos where pos.getSecId = 'IBM' and NOT pf.isActive"),
      LQRY(multiRegion,
           "Select distinct pf from /Portfolios pf, /Portfolios2, "
           "/Portfolios3 where pf.isActive = TRUE"),
      LQRY(multiRegion,
           "select distinct pos from /Portfolios, /Portfolios/Positions "
           "pos")
  
      // 6 idx
      ,
      QRY(operators, "select distinct * from /Portfolios where ID =  2"),
      QRY(operators, "select distinct * from /Portfolios where ID != 2"),
      LQRY(multiRegion,
           "select distinct port from /Portfolios port , /Positions pos "
           "where pos.secId in (select distinct pos.secId from "
           "port.positions.values pos)")
  
      // 9 idx
      ,
      QRY(constants, "select distinct * from /Portfolios where ID = nullptr"),
      QRY(constants, "select distinct * from /Portfolios where ID = UNDEFINED"),
      QRY(constants, "select distinct * from /Portfolios where nullptr"),
      QRY(constants, "select distinct * from /Portfolios where UNDEFINED"),
      QRY(constants, "select distinct * from /Portfolios where TRUE"),
      QRY(constants, "select distinct * from /Portfolios where 1=1"),
      QRY(constants, "select distinct * from /Portfolios where 'a'<>'a'"),
      QRY(constants,
          "select distinct port from /Portfolios port, "
          "port.Positions.values where FALSE"),
      QRY(constants,
          "select distinct port from /Portfolios port, "
          "port.Positions.values where UNDEFINED = 1"),
      QRY(constants,
          "select distinct port from /Portfolios port where "
          "IS_UNDEFINED(UNDEFINED)")
  
      // 19 idx
      ,
      QRY(functions,
          "select distinct * from /Portfolios port where "
          "IS_DEFINED(TRUE)"),
      QRY(functions,
          "select distinct * from /Portfolios port where "
          "IS_UNDEFINED(ID)"),
      LQRY(functions,
           "select distinct this.value from /Portfolios.entrySet this "
           "where element(select distinct * from /Portfolios.keySet p_k "
           "where p_k = this.key ) = 'port1-3' and this.value.status = "
           "'inactive'"),
      QRY(functions, "select distinct nvl(nullptr, 'foundNull') from /Portfolios")
      //, QRY(functions   , "select distinct nvl('notNull', 'foundNull')
      //= 'notNull' from /Portfolios" )
      ,
      QRY(functions,
          "select distinct nvl('notNull', 'foundNull') from /Portfolios"),
      QRY(functions,
          "select distinct * from /Portfolios pf where "
          "nvl(pf.position2,'foundNull') = 'foundNull'"),
      QRY(functions,
          "select distinct nvl(pf.position2, 'inProjection') from "
          "/Portfolios pf where nvl(pf.position2,'foundNull') = "
          "'foundNull'")  // constant
  
      // 26 idx
      ,
      QRY(regionInterface,
          "select distinct * from /Portfolios.keys where toString = "
          "'port1-1'")  // constant
      ,
      QRY(regionInterface,
          "select distinct * from /Portfolios.values where ID = 1"),
      QRY(regionInterface,
          "select distinct value from /Portfolios.entries where value.ID "
          "= 1 and key = 'port1-1'")  // constant
      ,
      LQRY(regionInterface,
           "select distinct * from /Portfolios.keySet where toString = "
           "'port1-1'")  // constant
      ,
      LQRY(regionInterface,
           "select distinct key from /Portfolios.entrySet , "
           "value.positions.values   where value.ID = 1 and key = "
           "'port1-1'")  // constant
  
      // 31 idx
      ,
      QRY(nestedQueries,
          "select distinct * from /Portfolios WHERE NOT(SELECT DISTINCT "
          "* FROM positions.values p WHERE p.secId = 'IBM').isEmpty"),
      LQRY(nestedQueries,
           "select distinct x.value from /Portfolios.entrySet x where "
           "x.value.status = ELEMENT(select distinct p.value from "
           "/Portfolios.entrySet p where x.key = p.key).status"),
      LQRY(nestedQueries,
           "select distinct * from /Portfolios x where status = "
           "ELEMENT(select distinct p_k.value from /Portfolios.entrySet "
           "p_k where p_k.key = 'port1-1').status"),
      LQRY(nestedQueries,
           "select distinct p from /Portfolios p, (select distinct * "
           "from /Portfolios x, x.positions as myPos) where "
           "myPos.value.secId = 'YHOO'")
  
      // 35 idx
      ,
      LQRY(importAndSelect,
           "import javaobject.Position;"
           " select distinct secId FROM /Portfolios,  positions.values "
           "pos TYPE Position WHERE ID > 0 ")
  
      // 36 idx
      ,
      QRY(unsupported,
          "element(select distinct * from /Portfolios where ID "
          "<=3).status"),
      QRY(unsupported,
          "select distinct * from /Portfolios.subregions(false) where "
          "remove('5')!= null")
      //, QRY(unsupported, "element(select distinct * from /Portfolios
      // where ID =1).status")
      //, QRY(unsupported, "select distinct * from nullptr")
      //, QRY(unsupported, "select distinct * from UNDEFINED")
  
      ,
      LQRY(misc,
           "select distinct * from /Portfolios WHERE NOT (select "
           "distinct * from positions.values p WHERE p.secId = "
           "'IBM').isEmpty"),
      QRY(misc,
          "select distinct to_date('21/10/07','dd/mm/yy') from "
          "/Portfolios")
  
      // 42 idx -- scalar result queries
      //, QRY(constants, "select /Portfolios.size from set(0)")
      //, QRY(constants, "/Portfolios.size")
      //, QRY(constants, "(select * from /Portfolios).size")
  };  // end of resultsetQueries
  
  const int resultsetRowCounts[RS_ARRAY_SIZE] = {
      20, 20, 20, 1, 10, 20, 1, 19, 20, 0, 0, 0, 0,  20, 20, 0,  0, 0, 20, 20,
      0,  1,  1,  1, 10, 1,  1, 1,  1,  1, 1, 2, 20, 10, 20, 10, 0, 0, 2,  1};
  
  const int constantExpectedRowsRS[12] = {1,  21, 22, 23, 25, 26,
                                          28, 29, 30, 35, 39, 42};
  
  const QueryStrings resultsetparamQueries[RSP_ARRAY_SIZE] = {
      // 0 idx
      QRY(operators, "select distinct * from /Portfolios where ID =  $1"),
      QRY(operators, "select distinct * from /Portfolios where ID != $1")
  
      // 2 idx
      ,
      QRY(constants, "select distinct * from /Portfolios where $1=$2"),
      QRY(constants, "select distinct * from /Portfolios where $1<>$2"),
      QRY(constants,
          "select distinct port from /Portfolios port, port.Positions.values "
          "where UNDEFINED = $1")
  
      // 5 idx
      ,
      LQRY(functions,
           "select distinct this.value from /Portfolios.entrySet this where "
           "element(select distinct * from /Portfolios.keySet p_k where p_k = "
           "this.key ) = $1 and this.value.status = $2"),
      QRY(functions,
          "select distinct * from /Portfolios pf where nvl(pf.position2,$1) = "
          "$2"),
      QRY(functions,
          "select distinct nvl(pf.position2, $1) from /Portfolios pf where "
          "nvl(pf.position2,$2) = $3")
  
      // 8 idx
      ,
      QRY(regionInterface,
          "select distinct * from /Portfolios.keys where toString = $1"),
      QRY(regionInterface,
          "select distinct * from /Portfolios.values where ID = $1"),
      QRY(regionInterface,
          "select distinct value from /Portfolios.entries where value.ID = $1 "
          "and key = $2"),
      LQRY(regionInterface,
           "select distinct * from /Portfolios.keySet where toString = $1"),
      LQRY(regionInterface,
           "select distinct key from /Portfolios.entrySet , "
           "value.positions.values   where value.ID = $1 and key = $2")};
  
  const int noofQueryParam[] = {1, 1, 2, 2, 1, 2, 2, 3, 1, 1, 2, 1, 2};
  
  const char queryparamSet[13][3][15] = {
      {"2"},
      {"2"},
      {"1", "1"},
      {"a", "a"},
      {"1"},
      {"port1-3", "inactive"},
      {"foundNull", "foundNull"},
      {"inProjection", "foundNull", "foundNull"},
      {"port1-1"},
      {"1"},
      {"1", "port1-1"},
      {"port1-1"},
      {"1", "port1-1"}};
  
  const int resultsetRowCountsPQ[RSP_ARRAY_SIZE] = {1, 19, 20, 0, 0, 1, 10,
                                                    1, 1,  1,  1, 1, 1};
  
  const int constantExpectedRowsPQRS[6] = {5, 7, 8, 10, 11, 12};
  
  const QueryStrings resultsetQueriesOPL[RSOPL_ARRAY_SIZE] =
      {  // queries returning result sets via ObjectPartList
         // 0 idx
          QRY(singleRegion, "select * from /Portfolios2"),
          QRY(singleRegion, "select * from /Portfolios2 limit 5"),
          QRY(singleRegion, "select count(*) from /Portfolios2"),
          QRY(singleRegion, "select ALL * from /Portfolios2"),
          QRY(singleRegion, "select * from /Portfolios2.values")};
  
  const int resultsetRowCountsOPL[RSOPL_ARRAY_SIZE] = {20, 5, 1, 20, 20};
  
  const QueryStrings structsetQueriesOPL[SSOPL_ARRAY_SIZE] = {
      // 0 idx
      QRY(multiRegion, "select * from /Portfolios2, /Portfolios3"),
      QRY(multiRegion, "select * from /Portfolios2, /Portfolios3 limit 5"),
      QRY(multiRegion, "select ALL * from /Portfolios2 p2, /Portfolios3 p3"),
      QRY(multiRegion, "select * from /Portfolios2.values, /Portfolios3.values")};
  
  const int structsetRowCountsOPL[SSOPL_ARRAY_SIZE] = {400, 5, 400, 400};
  
  const int structsetFieldCountsOPL[SSOPL_ARRAY_SIZE] = {2, 2, 2, 2};
  
  const QueryStrings structsetQueries[SS_ARRAY_SIZE] = {
      // 0 idx
      QRY(singleRegion,
          "select distinct ID, pkid, position1, position2, getType, status from "
          "/Portfolios")
  
      // 1 idx
      ,
      QRY(multiRegion,
          "select distinct ptf,pos from (select distinct * from /Portfolios ptf, "
          "positions.values pos) outp where outp.pos.secId = 'IBM'"),
      QRY(multiRegion,
          "select distinct ptf,pos from (select distinct * from ptf IN "
          "/Portfolios, pos IN positions.values) where pos.secId = 'IBM'")
      // to be enabled, QRY(multiRegion , "select distinct * from (select distinct
      // ptf.ID, pos AS myPos from /Portfolios ptf, positions.values pos) ")
      /*to be removed */,
      QRY(multiRegion,
          "select distinct myPos, ID from (select distinct pos AS myPos, ID: "
          "ptf.ID from /Portfolios ptf, positions.values pos) ")
      // need to see later , QRY(multiRegion , "select distinct * from (select
      // distinct * from /Portfolios ptf, positions pos) p where
      // p.get('pos').value.secId = 'IBM'")
      ,
      QRY(multiRegion,
          "select distinct secId, getSharesOutstanding from /Positions")
  
      // 5 idx
      ,
      QRY(constants,
          "select distinct id, positions from /Portfolios where ID = nullptr"),
      QRY(constants,
          "select distinct pkid, getPk() from /Portfolios where ID = UNDEFINED"),
      QRY(constants,
          "select distinct getPositions, getPositions from /Portfolios where "
          "TRUE"),
      QRY(constants,
          "select distinct id, status from /Portfolios where UNDEFINED"),
      QRY(constants,
          "select distinct getPositions, ID, status, pkid from /Portfolios where "
          "TRUE"),
      QRY(constants,
          "select distinct ID, pkid, getType from /Portfolios where 1=1"),
      QRY(constants,
          "select distinct ID, pkid, names from /Portfolios where 'a'<>'a'"),
      QRY(constants,
          "select distinct port.ID, port.status, port.names from /Portfolios "
          "port, port.Positions.values where TRUE"),
      QRY(constants,
          "select distinct port.ID, port.pkid, port.names from /Portfolios port, "
          "port.Positions.values where UNDEFINED = 1"),
      QRY(constants,
          "select distinct port.ID, port.pkid, port.getType from /Portfolios "
          "port where IS_UNDEFINED(UNDEFINED)")
  
      // 15 idx
      ,
      QRY(functions,
          "select distinct port.ID, port.status from /Portfolios port where "
          "IS_DEFINED(TRUE)"),
      QRY(functions,
          "select distinct port.ID, port.status from /Portfolios port where "
          "IS_UNDEFINED(ID)"),
      LQRY(functions,
           "select distinct oP.ID, oP.status, oP.getType from /Portfolios oP "
           "where element(select distinct p.ID, p.status, p.getType from "
           "/Portfolios p where p.ID = oP.ID).status = 'inactive'"),
      QRY(functions,
          "select distinct nvl(nullptr, 'foundNull')='foundNull', 'dummy Col' "
          "from "
          "/Portfolios"),
      QRY(functions,
          "select distinct nvl('notNull', 'foundNull') as NtNul , 'dummy Col' as "
          "Dumbo from /Portfolios"),
      QRY(functions,
          "select distinct pf.ID, pf.status, pf.getType from /Portfolios pf "
          "where nvl(pf.position2,'foundNull') = 'foundNull'"),
      QRY(functions,
          "select distinct nvl(pf.position2, 'inProjection'), 'dummy Col' from "
          "/Portfolios pf where nvl(pf.position2,'foundNull') = 'foundNull'")
  
      // 22 idx
      ,
      LQRY(regionInterface,
           "select distinct keys, v.key, v.value.ID, v.value.toString from "
           "/Portfolios.keys keys, /Portfolios.entrySet v where v.value.toString "
           "in (select distinct p.toString from /Portfolios p where p.ID = "
           "v.value.ID) and keys = v.key"),
      LQRY(regionInterface,
           "select distinct ID, pkid, names, position2.secId from "
           "/Portfolios.values where nvl(position2,'nopes') != 'nopes' and ID > "
           "1"),
      QRY(regionInterface,
          "select distinct key, value.ID, value.pkid from /Portfolios.entries "
          "where value.ID = 1 and key in Set('port1-1')"),
      LQRY(regionInterface,
           "select distinct key, secType, secId, underlyer, cnt from "
           "/Portfolios.entrySet , value.positions.values   where value.ID = 10 "
           "and key = 'port1-10'"),
      LQRY(regionInterface,
           "select distinct k, value.ID, value from /Portfolios.keySet k, "
           "(select distinct value from /Portfolios.entrySet) value where "
           "k.toString = 'port1-1'")
  
      // 27 idx
      ,
      QRY(nestedQueries,
          "select distinct x.ID, x.status, x.getType, myPos.value.secType, "
          "myPos.value.secId as security from (select distinct * from "
          "/Portfolios x, x.positions as myPos)"),
      LQRY(nestedQueries,
           "select distinct derivedProjAttrbts, key: p.key, id: p.value.ID  from "
           "/Portfolios.entries p, (select distinct x.ID, x.status, x.getType, "
           "myPos.secId from /Portfolios x, x.positions.values as myPos) "
           "derivedProjAttrbts where p.value.ID = derivedProjAttrbts.ID and "
           "derivedProjAttrbts.secId = 'IBM'"),
      LQRY(nestedQueries,
           "select distinct eP.key, eP.value from /Portfolios.entrySet eP, "
           "/Portfolios/Positions pos where pos.secId in (select distinct "
           "portPos.value.secId from (select distinct * from eP.value.positions) "
           "portPos)"),
      LQRY(nestedQueries,
           "select distinct pos.secId, pos.getSharesOutstanding from "
           "/Portfolios/Positions pos where pos.getSharesOutstanding in (select "
           "distinct inPos.getSharesOutstanding from /Positions inPos where "
           "inPos.secId = pos.secId)")
  
      // 31 idx
      //, QRY(canonicalization, "Select distinct pos.ID, security from
      /// Portfolios.getPositions pos, pos.secId security where length > 1 and
      // pos.ID > 0")
      ,
      QRY(canonicalization, "Select distinct ID, position1  from /Portfolios")
  
      // 32 idx
      ,
      QRY(unsupported,
          "select element(select distinct * from /Portfolios where ID "
          "<=1).status = 'active'"),
      QRY(unsupported,
          "select distinct * from /Portfolios.subregions(false) where "
          "remove('5')!= null"),
      LQRY(misc,
           "select distinct key: key, iD: entry.value.ID, secId: posnVal.secId  "
           "from /Portfolios.entries entry, entry.value.positions.values posnVal "
           "WHERE entry.value.getType = 'type0' AND posnVal.secId = 'YHOO'")
  //, QRY(misc        , "select distinct to_date('01/01/3000','mm/dd/yyyy'),
  // to_date('01/01/1900','mm/dd/yyyy').toGMTString(),
  // to_date('10/10/2020','mm/dd/yyyy').toLocaleString(),
  // to_date('10/10/2020','mm/dd/yyyy') from /Portfolios")
  #if !defined(WIN32)
          ,
      QRY(misc,
          "select distinct to_date('01/19/2038 03:848 AM','mm/dd/yyyy hh:sss a') "
          "as twoeighty, to_date('01/19/2038','mm/dd/yyyy'), to_date('12/14/1901 "
          "00:2753 PM','mm/dd/yyyy hh:ssss a') from /Portfolios")
  #else
      // Windows does not support 'a' format
      ,
      QRY(misc,
          "select distinct to_date('01/19/2038 03:848 AM','mm/dd/yyyy hh:sss') "
          "as twoeighty, to_date('01/19/2038','mm/dd/yyyy'), to_date('12/14/1901 "
          "00:2753 AM','mm/dd/yyyy hh:ssss') from /Portfolios")
  #endif
  };  // end of structsetQueries
  
  const size_t structsetRowCounts[SS_ARRAY_SIZE] = {
      20, 2, 2,  20, 20, 0, 0, 20, 0,  20, 20, 0,  20, 0,  20, 20, 0, 10,
      1,  1, 10, 1,  20, 9, 1, 1,  20, 20, 2,  20, 20, 20, 0,  1,  1, 1};
  
  const int32_t structsetFieldCounts[SS_ARRAY_SIZE] = {
      6, 2, 2, 2, 2, 0, 0, 2, 0, 4, 3, 0, 3, 0, 3, 2, 0, 3,
      2, 2, 3, 2, 4, 4, 3, 5, 3, 5, 3, 2, 2, 2, 0, 3, 3, 3};
  
  const int constantExpectedRowsSS[17] = {4,  10, 12, 13, 14, 15, 17, 18, 19,
                                          20, 21, 23, 24, 25, 27, 30, 35};
  
  const QueryStrings structsetParamQueries[SSP_ARRAY_SIZE] = {
      // 0 idx
      QRY(multiRegion,
          "select distinct ptf,pos from (select distinct * from /Portfolios ptf, "
          "positions.values pos) outp where outp.pos.secId = $1")
  
      // 1 idx
      ,
      QRY(multiRegion,
          "select distinct ptf,pos from (select distinct * from ptf IN "
          "/Portfolios, pos IN positions.values) where pos.secId = $1"),
      QRY(constants,
          "select distinct ID, pkid, getType from /Portfolios where $1 = $2"),
      QRY(constants,
          "select distinct ID, pkid, names from /Portfolios where $1 <> $2")
  
      // 4 idx
      ,
      QRY(constants,
          "select distinct port.ID, port.pkid, port.names from /Portfolios port, "
          "port.Positions.values where UNDEFINED = $1"),
      LQRY(functions,
           "select distinct oP.ID, oP.status, oP.getType from /Portfolios oP "
           "where element(select distinct p.ID, p.status, p.getType from "
           "/Portfolios p where p.ID = oP.ID).status = $1"),
      QRY(functions,
          "select distinct nvl(nullptr, $1)=$2, 'dummy Col' from /Portfolios"),
      QRY(functions,
          "select distinct nvl($1, $2) as NtNul , $3 as Dumbo from /Portfolios"),
      QRY(functions,
          "select distinct pf.ID, pf.status, pf.getType from /Portfolios pf "
          "where nvl(pf.position2,$1) = $2"),
      QRY(functions,
          "select distinct nvl(pf.position2, $1), $2 from /Portfolios pf where "
          "nvl(pf.position2, $3) = $4")
  
      // 10 idx
      ,
      LQRY(regionInterface,
           "select distinct ID, pkid, names, position2.secId from "
           "/Portfolios.values where nvl(position2, $1) != $1 and ID > $2"),
      QRY(regionInterface,
          "select distinct key, value.ID, value.pkid from /Portfolios.entries "
          "where value.ID = $1 and key in Set($2)"),
      LQRY(regionInterface,
           "select distinct key, secType, secId, underlyer, cnt from "
           "/Portfolios.entrySet , value.positions.values   where value.ID = $1 "
           "and key = $2"),
      LQRY(regionInterface,
           "select distinct k, value.ID, value from /Portfolios.keySet k, "
           "(select distinct value from /Portfolios.entrySet) value where "
           "k.toString = $1")
  
      // 14 idx
      ,
      LQRY(nestedQueries,
           "select distinct derivedProjAttrbts, key: p.key, id: p.value.ID  from "
           "/Portfolios.entries p, (select distinct x.ID, x.status, x.getType, "
           "myPos.secId from /Portfolios x, x.positions.values as myPos) "
           "derivedProjAttrbts where p.value.ID = derivedProjAttrbts.ID and "
           "derivedProjAttrbts.secId = $1"),
      QRY(unsupported,
          "select element(select distinct * from /Portfolios where ID <= "
          "$1).status = $2"),
      LQRY(misc,
           "select distinct key: key, iD: entry.value.ID, secId: posnVal.secId  "
           "from /Portfolios.entries entry, entry.value.positions.values posnVal "
           "WHERE entry.value.getType = $1 AND posnVal.secId = $2")};
  
  const int numSSQueryParam[] = {1, 1, 2, 2, 1, 1, 2, 3, 2,
                                 4, 2, 2, 2, 1, 1, 2, 2};
  
  const char queryparamSetSS[17][4][15] = {
      {"IBM"},
      {"IBM"},
      {"1", "1"},
      {"a", "a"},
      {"1"},
      {"inactive"},
      {"foundNull", "foundNull"},
      {"notNull", "foundNull", "dummy Col"},
      {"foundNull", "foundNull"},
      {"inProjection", "dummy Col", "foundNull", "foundNull"},
      {"nopes", "1"},
      {"1", "port1-1"},
      {"10", "port1-10"},
      {"port1-1"},
      {"IBM"},
      {"1", "active"},
      {"type0", "YHOO"}};
  
  const int structsetRowCountsPQ[SSP_ARRAY_SIZE] = {2, 2, 20, 0, 0,  10, 1, 1, 10,
                                                    1, 9, 1,  1, 20, 2,  0, 1};
  
  const int structsetFieldCountsPQ[SSP_ARRAY_SIZE] = {2, 2, 3, 0, 0, 3, 2, 2, 3,
                                                      2, 4, 3, 5, 3, 3, 0, 3};
  
  const int constantExpectedRowsSSPQ[10] = {2, 4, 5, 6, 7, 8, 9, 10, 11, 12};
  
  const QueryStrings regionQueries[RQ_ARRAY_SIZE] =
      {  // intended to be run on the /Portfolios region.query API
         // 0 idx
          QRY(regionQuery, "ID = 2"),
          QRY(regionQuery, "ID != 2"),
          QRY(regionQuery, "ID = nullptr"),
          QRY(unsupported, "ID = UNDEFINED")
          // 4 idx
          ,
          QRY(regionQuery, "nullptr"),
          QRY(regionQuery, "UNDEFINED"),
          QRY(regionQuery, "UNDEFINED = 1"),
          QRY(regionQuery, "IS_UNDEFINED(UNDEFINED)"),
          QRY(regionQuery, "IS_DEFINED(TRUE)"),
          QRY(regionQuery, "IS_UNDEFINED(ID)"),
          QRY(regionQuery, "TRUE"),
          QRY(regionQuery, "FALSE"),
          QRY(regionQuery, "1=1"),
          QRY(regionQuery, "'a' <> 'a'")
          // 14 idx
          ,
          QRY(regionQuery, "toString = 'port1-1'"),
          QRY(regionQuery,
              "NOT (SELECT DISTINCT * FROM positions.values p WHERE p.secId = "
              "'IBM').isEmpty"),
          QRY(regionQuery,
              "status = ELEMENT(select distinct p_k.value from "
              "/Portfolios.entrySet p_k where p_k.key = 'port1-1').status")
          // 17 idx
          ,
          QRY(regionQuery,
              "select distinct port from /Portfolios port , /Positions pos where "
              "pos.secId in (select distinct pos.secId from "
              "port.positions.values pos)"),
          QRY(regionQuery,
              "select distinct pos.secId, pos.sharesOutstanding from "
              "/Portfolios/Positions pos where pos.sharesOutstanding in (select "
              "distinct inPos.sharesOutstanding from /Positions inPos where "
              "inPos.secId = pos.secId)")
          // 19 idx
          ,
          QRY(unsupported, "bad predicate"),
          QRY(unsupported,
              "select element(select distinct * from /Portfolios where ID "
              "<=1).status = 'active'")};  // end of regionQueries
  
  const size_t regionQueryRowCounts[RQ_ARRAY_SIZE] =
      {  // results sizes for regionQuery
          1, 19, 0, 0, 0, 0, 0, 20, 20, 0, 20, 0, 20, 0, 0, 2, 10, 20, 20, 0, 0};
  const QueryStrings cqResultsetQueries[CQRS_ARRAY_SIZE] = {
      // 0 idx
      QRY(singleRegion, "select * from /Portfolios port")
      // 1 idx
      ,
      QRY(operators, "select  * from /Portfolios where ID =  2"),
      QRY(operators, "select  * from /Portfolios where ID != 2")
  
      // 3 idx
      ,
      QRY(constants, "select  * from /Portfolios where ID = nullptr"),
      QRY(constants, "select  * from /Portfolios where ID = UNDEFINED"),
      QRY(constants, "select  * from /Portfolios where nullptr"),
      QRY(constants, "select  * from /Portfolios where UNDEFINED"),
      QRY(constants, "select  * from /Portfolios where TRUE"),
      QRY(constants, "select  * from /Portfolios where 1=1"),
      QRY(constants, "select  * from /Portfolios where 'a'<>'a'")
  
      // 10 idx
      ,
      QRY(functions, "select  * from /Portfolios port where IS_DEFINED(TRUE)"),
      QRY(functions, "select  * from /Portfolios port where IS_UNDEFINED(ID)"),
      LQRY(nestedQueries,
           "select  this.value from /Portfolios.entrySet this where "
           "element(select  * from /Portfolios.keySet p_k where p_k = this.key ) "
           "= 'port1-3' and this.value.status = 'inactive'"),
      QRY(functions,
          "select  * from /Portfolios pf where nvl(pf.position2,'foundNull') = "
          "'foundNull'")
  
      // 14 idx
      ,
      QRY(functions,
          "select  * from /Portfolios WHERE NOT(SELECT DISTINCT * FROM "
          "positions.values p WHERE p.secId = 'IBM').isEmpty"),
      LQRY(nestedQueries,
           "select  x.value from /Portfolios.entrySet x where x.value.status = "
           "ELEMENT(select  p.value from /Portfolios.entrySet p where x.key = "
           "p.key).status"),
      LQRY(nestedQueries,
           "select  * from /Portfolios x where status = ELEMENT(select  "
           "p_k.value from /Portfolios.entrySet p_k where p_k.key = "
           "'port1-1').status"),
      LQRY(nestedQueries,
           "select  p from /Portfolios p, (select  * from /Portfolios x, "
           "x.positions as myPos) where myPos.value.secId = 'YHOO'")
  
      // 35 idx
      ,
      LQRY(importAndSelect,
           "import javaobject.Position;"
           " select  secId FROM /Portfolios,  positions.values pos TYPE Position "
           "WHERE ID > 0 ")
  
      // 36 idx
      ,
      QRY(unsupported, "element(select  * from /Portfolios where ID <=3).status"),
      QRY(unsupported,
          "select  * from /Portfolios.subregions(false) where remove('5')!= null")
      //, QRY(unsupported, "element(select  * from /Portfolios where ID
      //=1).status")
      ,
      QRY(unsupported, "select  * from nullptr"),
      QRY(unsupported, "select  * from UNDEFINED"),
      LQRY(misc,
           "select  * from /Portfolios WHERE NOT (select  * from "
           "positions.values p WHERE p.secId = 'IBM').isEmpty")};
  
  const int cqResultsetRowCounts[CQRS_ARRAY_SIZE] = {20, 1,  19, 0, 0, 0,  0, 20,
                                                     20, 0,  20, 0, 1, 10, 2, 20,
                                                     10, 20, 10, 0, 0, 0,  0, 2};
  
  const int constantExpectedRowsCQRS[1] = {35};
  
  }  // namespace testData
  
  #endif  // GEODE_INTEGRATION_TEST_QUERYSTRINGS_H_
  