Mon Nov 29, 2021 5:49 am
Login Register Lost Password? Contact Us


Queries on Roxie

Topics around the use of the JDBC driver for HPCC Systems

Mon Feb 11, 2013 1:38 pm Change Time Zone

Hello,

I have sprayed a csv file via an ECL code and the logical name is .::subfile::cwcd_sub1 (the name is deceiving - it is NOT a sub/superfile but a normal logical file :D )

I'm using the HPCCDriverTest.java provided along with the HPCC-JDBC driver. I have only replaced the parameters and the logical file name :

Code: Select all
package org.hpccsystems.jdbcdriver;

import java.sql.Driver;import java.sql.DriverManager;
import java.sql.DriverPropertyInfo;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;

import org.hpccsystems.jdbcdriver.HPCCConnection;
import org.hpccsystems.jdbcdriver.HPCCDatabaseMetaData;
import org.hpccsystems.jdbcdriver.HPCCDriver;
import org.hpccsystems.jdbcdriver.HPCCJDBCUtils;
import org.hpccsystems.jdbcdriver.HPCCPreparedStatement;
import org.hpccsystems.jdbcdriver.HPCCResultSet;
import org.hpccsystems.jdbcdriver.HPCCStatement;

public class HPCCDriverTest {
   static private HPCCDriver driver;

   static {
      driver = new HPCCDriver();
      try {
         DriverPropertyInfo[] info = driver.getPropertyInfo("", null);

         /*
          * System.out .println(
          * "-----------------Driver Properties----------------------------------"
          * );
          */
         /*
          * for (int i = 0; i < info.length; i++) System.out.println("\t" +
          * info[i].name + ": " + info[i].description); System.out .println(
          * "\n--------------------------------------------------------------------"
          * );
          */
      } catch (SQLException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
   }

   private static boolean testLazyLoading(Properties conninfo) {
      boolean success = true;
      try {
         conninfo.put("LazyLoad", "true");
         HPCCConnection connection = (HPCCConnection) driver.connect("",
               conninfo);

         System.out
               .println("No query nor file loading should have occured yet.");

         ResultSet procs = connection.getMetaData().getProcedures(null,
               null, null);

         System.out
               .println("Queries should be cached now. No files should be cached yet.");

         System.out.println("procs found: ");
         while (procs.next()) {
            System.out.println(" " + procs.getString("PROCEDURE_NAME"));
         }

         ResultSet tables = connection.getMetaData().getTables(null, null,
               "%", new String[] { "" });

         System.out.println("Tables found: ");
         while (tables.next()) {
            System.out.println(" " + tables.getString("TABLE_NAME")
                  + " Remarks: \'" + tables.getString("REMARKS") + "\'");
         }

      } catch (Exception e) {
         e.printStackTrace();
         System.out.println(e.getMessage());
         success = false;
      }
      return success;
   }

   private static boolean createStandAloneDataMetadata(Properties conninfo) {
      boolean success = true;
      try {
         HPCCDatabaseMetaData dbmetadata = new HPCCDatabaseMetaData(conninfo);
         success = getDatabaseInfo(dbmetadata);
      } catch (Exception e) {
         e.printStackTrace();
         System.out.println(e.getMessage());
         success = false;
      }
      return success;
   }

   private static HPCCConnection connectViaProps(Properties conninfo) {
      HPCCConnection connection = null;
      try {
         connection = (HPCCConnection) driver.connect("", conninfo);
      } catch (Exception e) {
      }
      return connection;
   }

   private static HPCCConnection connectViaUrl(String conninfo) {
      HPCCConnection connection = null;
      try {
         connection = (HPCCConnection) driver.connect(conninfo, null);
      } catch (Exception e) {
      }
      return connection;
   }

   @SuppressWarnings("unused")
   private static boolean printouttable(HPCCConnection connection,
         String tablename) {
      boolean success = true;
      try {
         ResultSet table = connection.getMetaData().getTables(null, null,
               tablename, null);

         while (table.next())
            System.out.println("\t" + table.getString("TABLE_NAME"));
      } catch (Exception e) {
         success = false;
      }
      return success;
   }

   @SuppressWarnings("unused")
   private static boolean printoutExportedKeys(HPCCConnection connection) {
      boolean success = true;
      try {
         ResultSet keys = connection.getMetaData().getExportedKeys(null,
               null, null);

         // while (table.next())
         // System.out.println("\t" + table.getString("TABLE_NAME"));
      } catch (Exception e) {
         success = false;
      }
      return success;
   }

   @SuppressWarnings("unused")
   private static boolean printouttables(HPCCConnection connection) {
      boolean success = true;
      try {
         ResultSet tables = connection.getMetaData().getTables(null, null,
               "%", null);

         System.out.println("Tables found: ");
         while (tables.next())
            System.out.println("\t" + tables.getString("TABLE_NAME"));
      } catch (Exception e) {
         success = false;
      }
      return success;
   }

   @SuppressWarnings("unused")
   private static boolean printouttablecols(HPCCConnection connection,
         String tablename) {
      boolean success = true;
      try {
         ResultSet tablecols = connection.getMetaData().getColumns(null,
               null, tablename, "%");

         System.out.println("Table cols found: ");
         while (tablecols.next())
            System.out.println("\t" + tablecols.getString("TABLE_NAME")
                  + "::" + tablecols.getString("COLUMN_NAME") + "( "
                  + tablecols.getString("TYPE_NAME") + " )");
      } catch (Exception e) {
         success = false;
      }
      return success;
   }

   private static boolean printoutalltablescols(HPCCConnection connection) {
      boolean success = true;
      try {
         ResultSet tablecols = connection.getMetaData().getColumns(null,
               null, "%", "%");

         System.out.println("Table cols found: ");
         while (tablecols.next())
            System.out.println("\t" + tablecols.getString("TABLE_NAME")
                  + "::" + tablecols.getString("COLUMN_NAME") + "( "
                  + tablecols.getString("TYPE_NAME") + " )");
      } catch (Exception e) {
         success = false;
      }
      return success;
   }

   @SuppressWarnings("unused")
   private static boolean printoutprocs(HPCCConnection connection) {
      boolean success = true;
      try {
         ResultSet procs = connection.getMetaData().getProcedures(null,
               null, null);

         System.out.println("procs found: ");
         while (procs.next())
            System.out.println("\t" + procs.getString("PROCEDURE_NAME"));

      } catch (Exception e) {
         success = false;
      }
      return success;
   }

   private static boolean printouttypeinfo(HPCCConnection connection) {
      boolean success = true;
      try {
         ResultSet types = connection.getMetaData().getTypeInfo();

         System.out.println("ECL Types: ");
         int colcount = types.getMetaData().getColumnCount();

         for (int i = 1; i <= colcount; i++) {
            System.out.print("[*****"
                  + types.getMetaData().getColumnName(i) + "*****]");
         }
         System.out.println("");

         while (types.next()) {
            for (int i = 1; i <= colcount; i++) {
               System.out.print("[ " + types.getObject(i) + " ]");
            }
            System.out.println();
         }
      } catch (Exception e) {
         success = false;
      }
      return success;
   }

   @SuppressWarnings("unused")
   private static boolean printoutproccols(HPCCConnection connection) {
      boolean success = true;
      try {
         ResultSet proccols = connection.getMetaData().getProcedureColumns(
               null, null, null, null);

         System.out.println("procs cols found: ");
         while (proccols.next())
            System.out.println("\t" + proccols.getString("PROCEDURE_NAME")
                  + proccols.getString("PROCEDURE_NAME") + "::"
                  + proccols.getString("COLUMN_NAME") + " ("
                  + proccols.getInt("COLUMN_TYPE") + ")");

      } catch (Exception e) {
         success = false;
      }
      return success;
   }

   private static PreparedStatement createPrepStatement(
         HPCCConnection hpccconnection, String SQL) throws Exception {
      if (hpccconnection == null)
         throw new Exception("Could not connect with properties object");

      return hpccconnection.prepareStatement(SQL);
   }

   private static boolean reusePrepStatement(PreparedStatement p) {
      boolean success = true;
      try {
         HPCCResultSet qrs = (HPCCResultSet) ((HPCCPreparedStatement) p)
               .executeQuery();

         ResultSetMetaData meta = qrs.getMetaData();
         System.out.println();

         int colcount = meta.getColumnCount();
         for (int i = 1; i <= colcount; i++) {
            System.out.print("[*****" + meta.getColumnName(i) + "*****]");
         }
         System.out.println("");

         while (qrs.next()) {
            System.out.println();
            for (int i = 1; i <= colcount; i++) {
               System.out.print("[ " + qrs.getObject(i) + " ]");
            }
         }
         System.out.println("\nTotal Records found: " + qrs.getRowCount());
      } catch (Exception e) {
         System.err.println(e.getMessage());
         success = false;
      }
      return success;
   }

   public static boolean testClosePrepStatementUse(Properties conninfo) {
      boolean success = true;
      try {
         HPCCConnection connectionprops = connectViaProps(conninfo);
         if (connectionprops == null)
            throw new Exception("Could not connect with properties object");

         String SQL = "select tbl.* from Superfile::ClientWebCrawlDataBaseFile tbl where User_ID='294766'";
         HPCCPreparedStatement p = (HPCCPreparedStatement) createPrepStatement(
               connectionprops, SQL);

         p.close();
         p.execute();
      } catch (Exception e) {
         System.err.println(e.getMessage());
         success = false;
      }
      return success;
   }

   public static boolean testPrepStatementReuse(Properties conninfo) {
      boolean success = true;
      try {
         HPCCConnection connectionprops = connectViaProps(conninfo);
         if (connectionprops == null)
            throw new Exception("Could not connect with properties object");

         String SQL = "select tbl.* from Superfile::ClientWebCrawlDataBaseFile tbl where User_ID='294766'";
         HPCCPreparedStatement p = (HPCCPreparedStatement) createPrepStatement(
               connectionprops, SQL);

         for (int i = 33445; i < 33448; i++) {
            p.clearParameters();
            p.setString(1, "'" + Integer.toString(i, 10) + "'");
            success &= reusePrepStatement(p);
         }

         // what?
         SQL = "call myroxie::fetchpeoplebyzipservice(?)";

         p = (HPCCPreparedStatement) createPrepStatement(connectionprops,
               SQL);

         for (int i = 33445; i < 33448; i++) {
            p.clearParameters();
            p.setString(1, Integer.toString(i, 10));
            success &= reusePrepStatement(p);
         }
      } catch (Exception e) {
         System.err.println(e.getMessage());
         success = false;
      }
      return success;

   }

   public static boolean testPrepStatementReuseBadQuery(Properties conninfo) {
      boolean success = true;
      try {
         HPCCConnection connectionprops = connectViaProps(conninfo);
         if (connectionprops == null)
            throw new Exception("Could not connect with properties object");

         String SQL = "call bogusSPname()";
         HPCCPreparedStatement p = null;
         try {
            p = (HPCCPreparedStatement) createPrepStatement(
                  connectionprops, SQL);
         } catch (Exception e) {
            System.out.println("Ignoring expected exception: "
                  + e.getLocalizedMessage());
         }

         p.executeQuery();

      } catch (Exception e) {
         System.err.println(e.getMessage());
         success = false;
      }
      return success;
   }

   private static void executeFreeHandSQL(Properties conninfo, String SQL,
         List<String> params, boolean expectPass, int minResults,
         String testName) {
      boolean success = true;
      try {
         HPCCConnection connectionprops = connectViaProps(conninfo);
         if (connectionprops == null)
            throw new Exception("Could not connect with properties object");

         PreparedStatement p = connectionprops.prepareStatement(SQL);
         p.clearParameters();

         for (int i = 0; i < params.size(); i++) {
            p.setObject(i + 1, params.get(i));
         }

         HPCCResultSet qrs = (HPCCResultSet) ((HPCCPreparedStatement) p)
               .executeQuery();

         ResultSetMetaData meta = qrs.getMetaData();
         System.out.println();

         int colcount = meta.getColumnCount();
         int resultcount = qrs.getRowCount();

         if (resultcount > 0) {
            for (int i = 1; i <= colcount; i++) {
               System.out.print("[*****" + meta.getColumnName(i)
                     + "*****]");
            }
            System.out.println("");
            for (int i = 1; i <= colcount; i++) {
               System.out.print("[^^^^^" + meta.getColumnLabel(i)
                     + "^^^^^]");
            }
            System.out.println();
            for (int i = 1; i <= meta.getColumnCount(); i++) {
               System.out.print("[+++++"
                     + HPCCJDBCUtils.convertSQLtype2JavaClassName(meta
                           .getColumnType(i)) + "+++++]");
            }

            while (qrs.next()) {
               System.out.println();
               for (int i = 1; i <= colcount; i++) {
                  System.out.print("[ " + qrs.getObject(i) + " ]");
               }
            }
         }

         System.out.println("\nTotal Records found: " + resultcount);

         success = (resultcount >= minResults);
      } catch (Exception e) {
         System.err.println(e.getMessage());
         success = false;
      }

      if (!success && expectPass)
         throw new RuntimeException(testName + " - FAILED!");
      else if (success && !expectPass)
         throw new RuntimeException(testName + " - UNEXPECTEDLY PASSED!");
   }

   private static boolean testSelect1(HPCCConnection connection) {
      boolean success = true;
      try {
         PreparedStatement p = connection
               .prepareStatement("Select 1 AS ONE");

         HPCCResultSet qrs = (HPCCResultSet) ((HPCCPreparedStatement) p)
               .executeQuery();

         System.out.println("---------Testing Select 1---------------");

         while (qrs.next()) {
            if (qrs.getInt(1) != 1)
               success = false;
         }

         System.out.println("\tTest Success: " + success);
      } catch (Exception e) {
         System.err.println(e.getMessage());
         success = false;
      }
      return success;
   }

   private static boolean getDatabaseInfo(HPCCConnection conn) {
      try {
         return getDatabaseInfo((HPCCDatabaseMetaData) conn.getMetaData());
      } catch (SQLException e) {
         e.printStackTrace();
         return false;
      }
   }

   private static boolean getDatabaseInfo(HPCCDatabaseMetaData dbmetadata) {
      boolean success = true;
      try {
         String hpccname = dbmetadata.getDatabaseProductName();
         String hpccprodver = dbmetadata.getDatabaseProductVersion();
         int major = dbmetadata.getDatabaseMajorVersion();
         int minor = dbmetadata.getDatabaseMinorVersion();
         String sqlkeywords = dbmetadata.getSQLKeywords();

         System.out.println("HPCC System Info:");
         System.out.println("\tProduct Name: " + hpccname);
         System.out.println("\tProduct Version: " + hpccprodver);
         System.out.println("\tProduct Major: " + major);
         System.out.println("\tProduct Minor: " + minor);
         System.out.println("\tDriver Name: " + dbmetadata.getDriverName());
         System.out.println("\tDriver Major: "
               + dbmetadata.getDriverMajorVersion());
         System.out.println("\tDriver Minor: "
               + dbmetadata.getDriverMinorVersion());
         System.out.println("\tSQL Key Words: " + sqlkeywords);
      } catch (Exception e) {
         System.out.println(e.getMessage());
         success = false;
      }
      return success;
   }

   public static synchronized boolean printOutResultSet(
         HPCCResultSet resultset, long threadid) {
      System.out.println("Servicing thread id: " + threadid);

      int padvalue = 20;
      boolean isSuccess = true;
      try {
         ResultSetMetaData meta = resultset.getMetaData();

         System.out.println("*****Printing column names*****");

         int colcount = meta.getColumnCount();
         colcount = 2;
         for (int i = 1; i <= colcount; i++) {
            String colname = meta.getColumnName(i);
            System.out.print("[");

            for (int y = 0; y < (colname.length() >= padvalue ? 0
                  : (padvalue - colname.length()) / 2); y++)
               System.out.print(" ");
            System.out.print(colname);

            for (int y = 0; y < (colname.length() >= padvalue ? 0
                  : (padvalue - colname.length()) / 2); y++)
               System.out.print(" ");

            System.out.print("]");
         }
         System.out.println("*****Printing column labels*****");

         for (int i = 1; i <= colcount; i++) {
            String collabel = meta.getColumnLabel(i);
            System.out.print("[");

            for (int y = 0; y < (collabel.length() >= padvalue ? 0
                  : (padvalue - collabel.length()) / 2); y++)
               System.out.print("^");
            System.out.print(collabel);

            for (int y = 0; y < (collabel.length() >= padvalue ? 0
                  : (padvalue - collabel.length()) / 2); y++)
               System.out.print("^");

            System.out.print("]");
         }
         System.out.println("*****Printing column types*****");

         for (int i = 1; i <= colcount; i++) {
            String coltype = HPCCJDBCUtils
                  .convertSQLtype2JavaClassName(meta.getColumnType(i));
            System.out.print("[");

            for (int y = 0; y < (coltype.length() >= padvalue ? 0
                  : (padvalue - coltype.length()) / 2); y++)
               System.out.print(" ");
            System.out.print(coltype);

            for (int y = 0; y < (coltype.length() >= padvalue ? 0
                  : (padvalue - coltype.length()) / 2); y++)
               System.out.print(" ");

            System.out.print("]");
         }

         while (resultset.next()) {
            System.out.println();
            for (int i = 1; i <= colcount; i++) {
               String result = (String) resultset.getObject(i);
               System.out.print("[");

               for (int y = 0; y < (result.length() >= padvalue ? 0
                     : padvalue - result.length()); y++)
                  System.out.print(" ");
               System.out.print(result);
               System.out.print("]");
            }
         }

         System.out.println("\nTotal Records found: "
               + resultset.getRowCount());
      } catch (Exception e) {
         System.out.println(e.getMessage());
         isSuccess = false;
      }
      return isSuccess;
   }

   public static void main(String[] args) {

      org.hpccsystems.jdbcdriver.HPCCDriverTest dt = new org.hpccsystems.jdbcdriver.HPCCDriverTest();
      try {
         System.out
               .println("********************************************************************");
         System.out.println("HPCC JDBC Test Package Usage:");
         System.out.println(" Connection Parameters: paramname==paramvalue");
         System.out.println(" eg. ServerAddress==192.168.124.128");
         System.out
               .println(" Prepared Statement param value: \"param\"==paramvalue");
         System.out.println(" eg. param==\'33445\'");
         System.out.println();
         System.out.println(" By default full test is executed.");
         System.out.println(" To execute free hand sql:");
         System.out.println(" freehandsql==<SQL STATEMENT>");
         System.out
               .println(" eg. freehandsql==\"select * from tablename where zip=? limit 100\"");
         System.out.println();
         System.out
               .println("********************************************************************\n");

         Properties info = new Properties();
         List<String> params = new ArrayList<String>();

         Driver ldriver = DriverManager.getDriver("jdbc:hpcc");

         System.out.println("*****ldriver : " + ldriver);

         if (!(ldriver instanceof HPCCDriver))
            throw new RuntimeException(
                  "Driver fetched with 'jdbc:hpcc' url is not of HPCCDriver type");
         if (!driver.acceptsURL("jdbc:hpcc"))
            throw new RuntimeException(
                  "Valid lower case JDBC URL test failed");
         if (!driver.acceptsURL("JDBC:hpcc"))
            throw new RuntimeException(
                  "Valid mixed case JDBC URL test1 failed");
         if (!driver.acceptsURL("JDBC:HPCC"))
            throw new RuntimeException(
                  "Valid upper case JDBC URL test failed");
         if (!driver.acceptsURL("jdbc:HPCC"))
            throw new RuntimeException(
                  "Valid mixed case JDBC URL test2 failed");
         if (!driver.acceptsURL("jDbC:hPcC"))
            throw new RuntimeException(
                  "Valid camel case JDBC URL test2 failed");

         if (!driver.acceptsURL("jdbc:hpcc;"))
            throw new RuntimeException(
                  "Valid seperator JDBC URL test failed");
         if (!driver.acceptsURL("jdbc:hpcc;prop1=val1;prop2=val2"))
            throw new RuntimeException(
                  "Valid properties JDBC URL semicolon test failed");
         if (!driver.acceptsURL("jdbc:hpcc:prop1=val1:prop2=val2"))
            throw new RuntimeException(
                  "Valid properties JDBC URL colon test failed");
         if (!driver.acceptsURL("jdbc:hpcc:"))
            throw new RuntimeException(
                  "Valid seperator JDBC URL test passed");
         if (driver.acceptsURL("jdbc : hpcc"))
            throw new RuntimeException(
                  "Invalid spaces JDBC URL test passed");
         if (!driver.acceptsURL("jdbc:hpcc:prop1=val1;prop2=val2"))
            throw new RuntimeException("Valid JDBC URL test failed");
         if (driver.acceptsURL(" jdbc:hpcc"))
            throw new RuntimeException(
                  "Invalid spaces JDBC URL test2 passed");
         if (driver.acceptsURL("Garbage"))
            throw new RuntimeException(
                  "Invalid garbage JDBC URL test passed");
         if (driver.acceptsURL("url:jdbc:hpcc"))
            throw new RuntimeException(
                  "Invalid prefix JDBC URL test passed");
         if (driver.acceptsURL(""))
            throw new RuntimeException("Invalid empty JDBC URL test passed");
         if (driver.acceptsURL(" "))
            throw new RuntimeException(
                  "Invalid singlespace JDBC URL test passed");
         if (driver.acceptsURL(null))
            throw new RuntimeException("Invalid null JDBC URL test passed");

         if (args.length <= 0) {
            info.put("ServerAddress", "10.101.2.170"); // your HPCC address
                                             // here
            info.put("LazyLoad", "true");
            info.put("TraceToFile", "false");
            info.put("TraceLevel", "boguslevel");
            info.put("ReadTimeoutMilli", "30000"); // we have a couple of
                                          // long running queries
            info.put("TargetCluster", "roxie"); // queries will run on
                                       // this
                                       // HPCC target cluster
            info.put("QuerySet", "roxie"); // published HPCC queries will run
                                    // from this queryset
            info.put("WsECLWatchPort", "8010"); // Target HPCC configured to
                                       // run WsECLWatch on this
                                       // port
            // info.put("WsECLDirectPort", "8008"); // Target HPCC
            // configured
            // to run WsECLDirect on
            // this port
            info.put("EclResultLimit", "ALL"); // I want all records
                                       // returned
            info.put("PageSize", "20"); // GetTables and GetProcs will only
                                 // return 20 entries
            dt.queryHPCC("1", info);

         }
      } catch (Exception e) {
         e.printStackTrace();
         System.out.println(e.getMessage());
      }

      System.out
            .println("\nHPCC Driver completed as expected - Verify results.");
   }

   public Properties useDefaultCluster() {
      Properties info = new Properties();
      try {
         System.out
               .println("********************************************************************");
         System.out.println("HPCC JDBC Test Package Usage:");
         System.out.println(" Connection Parameters: paramname==paramvalue");
         System.out.println(" eg. ServerAddress==192.168.124.128");
         System.out
               .println(" Prepared Statement param value: \"param\"==paramvalue");
         System.out.println(" eg. param==\'33445\'");
         System.out.println();
         System.out.println(" By default full test is executed.");
         System.out.println(" To execute free hand sql:");
         System.out.println(" freehandsql==<SQL STATEMENT>");
         System.out
               .println(" eg. freehandsql==\"select * from tablename where zip=? limit 100\"");
         System.out.println();
         System.out
               .println("********************************************************************\n");

         List<String> params = new ArrayList<String>();

         Driver ldriver = DriverManager.getDriver("jdbc:hpcc");

         System.out.println("*****ldriver : " + ldriver);

         if (!(ldriver instanceof HPCCDriver))
            throw new RuntimeException(
                  "Driver fetched with 'jdbc:hpcc' url is not of HPCCDriver type");
         if (!driver.acceptsURL("jdbc:hpcc"))
            throw new RuntimeException(
                  "Valid lower case JDBC URL test failed");
         if (!driver.acceptsURL("JDBC:hpcc"))
            throw new RuntimeException(
                  "Valid mixed case JDBC URL test1 failed");
         if (!driver.acceptsURL("JDBC:HPCC"))
            throw new RuntimeException(
                  "Valid upper case JDBC URL test failed");
         if (!driver.acceptsURL("jdbc:HPCC"))
            throw new RuntimeException(
                  "Valid mixed case JDBC URL test2 failed");
         if (!driver.acceptsURL("jDbC:hPcC"))
            throw new RuntimeException(
                  "Valid camel case JDBC URL test2 failed");

         if (!driver.acceptsURL("jdbc:hpcc;"))
            throw new RuntimeException(
                  "Valid seperator JDBC URL test failed");
         if (!driver.acceptsURL("jdbc:hpcc;prop1=val1;prop2=val2"))
            throw new RuntimeException(
                  "Valid properties JDBC URL semicolon test failed");
         if (!driver.acceptsURL("jdbc:hpcc:prop1=val1:prop2=val2"))
            throw new RuntimeException(
                  "Valid properties JDBC URL colon test failed");
         if (!driver.acceptsURL("jdbc:hpcc:"))
            throw new RuntimeException(
                  "Valid seperator JDBC URL test passed");
         if (driver.acceptsURL("jdbc : hpcc"))
            throw new RuntimeException(
                  "Invalid spaces JDBC URL test passed");
         if (!driver.acceptsURL("jdbc:hpcc:prop1=val1;prop2=val2"))
            throw new RuntimeException("Valid JDBC URL test failed");
         if (driver.acceptsURL(" jdbc:hpcc"))
            throw new RuntimeException(
                  "Invalid spaces JDBC URL test2 passed");
         if (driver.acceptsURL("Garbage"))
            throw new RuntimeException(
                  "Invalid garbage JDBC URL test passed");
         if (driver.acceptsURL("url:jdbc:hpcc"))
            throw new RuntimeException(
                  "Invalid prefix JDBC URL test passed");
         if (driver.acceptsURL(""))
            throw new RuntimeException("Invalid empty JDBC URL test passed");
         if (driver.acceptsURL(" "))
            throw new RuntimeException(
                  "Invalid singlespace JDBC URL test passed");
         if (driver.acceptsURL(null))
            throw new RuntimeException("Invalid null JDBC URL test passed");

         info.put("ServerAddress", "10.101.2.170"); // your HPCC address
                                          // here
         info.put("LazyLoad", "true");
         info.put("TraceToFile", "false");
         info.put("TraceLevel", "boguslevel");
         info.put("ReadTimeoutMilli", "30000"); // we have a couple of
                                       // long running queries
         info.put("ConnectTimeoutMilli", "30000");
         info.put("TargetCluster", "roxie"); // queries will run on
                                    // this
                                    // HPCC target cluster
         info.put("QuerySet", "roxie"); // published HPCC queries will run
                                 // from this queryset
         info.put("WsECLWatchPort", "8010"); // Target HPCC configured to
                                    // run WsECLWatch on this
                                    // port
         // info.put("WsECLDirectPort", "8008"); // Target HPCC
         // configured
         // to run WsECLDirect on
         // this port
         info.put("EclResultLimit", "ALL"); // I want all records
                                    // returned
         info.put("PageSize", "20"); // GetTables and GetProcs will only
                              // return 20 entries
         System.out
               .println("\nHPCC Driver completed as expected - Verify results.");
      } catch (Exception re) {
         re.printStackTrace();
      }

      return info;
   }

   public void queryHPCC(String i, Properties info) {
      System.out.println("For loop running for : " + i);
      HPCCConnection connectionprops = connectViaProps(info);
      if (connectionprops == null)
         throw new RuntimeException(
               "Could not connect with properties object");

      HPCCStatement stmt = null;
      try {
         stmt = (HPCCStatement) connectionprops.createStatement();
      } catch (SQLException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
      // java.util.Date date= new java.util.Date();
      // System.out.println("Before Timestamp is: "+new
      // Timestamp(date.getTime()));
      System.out.println("Before Timestamp for " + i + " is: "
            + new Date(System.currentTimeMillis()));

      String stmtsql = "select tbl.* from .::subfile::cwcd_sub1 tbl ";// where
      // User_ID='293705'";

      try {
         if (stmt.execute(stmtsql)) {
            HPCCResultSet res1 = (HPCCResultSet) stmt.executeQuery(stmtsql);
            System.out.println("**********result : " + res1.getRowCount());
            if (res1.getRowCount() > 0) {

               // System.out.println(res1.getString(1));

            }

         } else
            throw new RuntimeException("HPCCStatement test failed.");
      } catch (SQLException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }

      finally {
         try {
            stmt.close();
            connectionprops.close();
         } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
         }
      }
      System.out.println("After Timestamp is: "
            + new Date(System.currentTimeMillis()));
   }

}


In the above code, when I use :
Code: Select all
info.put("TargetCluster", "thor");
info.put("QuerySet", "thor");


the output is proper.

When I use :

Code: Select all
info.put("TargetCluster", "roxie");
info.put("QuerySet", "roxie");


I get an exception:

Code: Select all
2013/02/11 07:05:14.672 - HPCC JDBC Driver registered.
********************************************************************
HPCC JDBC Test Package Usage:
Connection Parameters: paramname==paramvalue
eg. ServerAddress==192.168.124.128
Prepared Statement param value: "param"==paramvalue
eg. param=='33445'

By default full test is executed.
To execute free hand sql:
freehandsql==<SQL STATEMENT>
eg. freehandsql=="select * from tablename where zip=? limit 100"

********************************************************************

*****ldriver : org.hpccsystems.jdbcdriver.HPCCDriver@901887
For loop running for : 1
2013/02/11 07:05:14.688 - HPCCConnection jdbc url:
2013/02/11 07:05:14.688 - Couldn't determine log level, will log at default level: INFO
2013/02/11 07:05:14.688 - HPCCDriver::connect10.101.2.170
2013/02/11 07:05:14.688 - HPCCDatabaseMetaData ServerAddress: 10.101.2.170 TargetCluster: roxie eclwatch: http://10.101.2.170:8010
2013/02/11 07:05:14.688 - HPCCDatabaseMetaData Fetching HPCC INFO: http://10.101.2.170:8010/WsSMC/Activity?rawxml_
2013/02/11 07:05:14.985 - HPCC file and published query info not pre-fetched (LazyLoad enabled)
2013/02/11 07:05:14.985 - HPCCDatabaseMetaData initialized
2013/02/11 07:05:14.985 - HPCCConnection initialized - server: 10.101.2.170
2013/02/11 07:05:14.985 - HPCCConnection: createStatement(  )
2013/02/11 07:05:15.000 - HPCCStatementConstructor(conn)
Before Timestamp for 1 is: Mon Feb 11 19:05:15 IST 2013
2013/02/11 07:05:15.000 - HPCCStatementAttempting to process sql query: select tbl.* from .::subfile::cwcd_sub1 tbl
2013/02/11 07:05:15.000 - INCOMING SQL: select tbl.* from .::subfile::cwcd_sub1 tbl
2013/02/11 07:05:15.000 - Fetching file information: http://10.101.2.170:8010/WsDfu/DFUQuery?LogicalName=.::SUBFILE::CWCD_SUB1&rawxml_&filetype=Logical Files and Superfiles
2013/02/11 07:05:15.188 - NOT USING INDEX!
2013/02/11 07:05:15.188 - HPCC URL created: http://10.101.2.170:8010/EclDirect/RunEcl?Submit&cluster=roxie
2013/02/11 07:05:15.203 - HPCCStatement: execute()
2013/02/11 07:05:15.203 -    Attempting to process sql query: select tbl.* from .::subfile::cwcd_sub1 tbl
2013/02/11 07:05:15.203 - HPCCStatement: executeQuery()
2013/02/11 07:05:15.203 -    Attempting to process sql query: select tbl.* from .::subfile::cwcd_sub1 tbl
2013/02/11 07:05:15.203 - Executing ECL: &eclText=
import std;
TblDS0RecDef := RECORD varstring controller_id; varstring user_id; varstring url_link; varstring url_content; real8 url_sentiment; varstring url_date; integer8 unique_search_id; integer8 insertid; varstring statusid; varstring search_pattern; varstring word_ignored; varstring search_date; varstring detected_language; END;
TblDS0 := DATASET('~.::subfile::cwcd_sub1', TblDS0RecDef,FLAT);
SelectStruct := RECORD
varstring url_content := TblDS0.url_content;
varstring search_pattern := TblDS0.search_pattern;
real8 url_sentiment := TblDS0.url_sentiment;
integer8 unique_search_id := TblDS0.unique_search_id;
varstring statusid := TblDS0.statusid;
varstring url_link := TblDS0.url_link;
varstring user_id := TblDS0.user_id;
varstring url_date := TblDS0.url_date;
varstring controller_id := TblDS0.controller_id;
varstring word_ignored := TblDS0.word_ignored;
varstring detected_language := TblDS0.detected_language;
varstring search_date := TblDS0.search_date;
integer8 insertid := TblDS0.insertid;
END;
DSTable := TABLE( TblDS0, SelectStruct );
OUTPUT(CHOOSEN(DSTable,ALL),NAMED('JDBCSelectQueryResult'));

2013/02/11 07:05:17.547 - Total elapsed http request/response time in milliseconds: 2344
2013/02/11 07:05:17.547 - Parsing results...
java.sql.SQLException: java.lang.Exception: HPCCJDBC: Error in response: 'Query W20120812-214700 is suspended because IPropertyTree: unsupported xpath syntax used
XPath Exception:
in xpath = .::subfile::cwcd_sub1
           ^'
   at org.hpccsystems.jdbcdriver.ECLEngine.executeSelect(ECLEngine.java:930)
   at org.hpccsystems.jdbcdriver.ECLEngine.execute(ECLEngine.java:787)
   at org.hpccsystems.jdbcdriver.HPCCStatement.executeHPCCQuery(HPCCStatement.java:113)
   at org.hpccsystems.jdbcdriver.HPCCStatement.execute(HPCCStatement.java:255)
   at org.hpccsystems.jdbcdriver.HPCCStatement.execute(HPCCStatement.java:245)
   at org.hpccsystems.jdbcdriver.HPCCDriverTest.queryHPCC(HPCCDriverTest.java:849)
   at org.hpccsystems.jdbcdriver.HPCCDriverTest.main(HPCCDriverTest.java:700)
After Timestamp is: Mon Feb 11 19:05:17 IST 2013

HPCC Driver completed as expected - Verify results.


Even when I invoke the 'executeFreeHandSQL(...)' method, I'm getting the same error.

What is the issue exactly?
kaliyugantagonist
 
Posts: 43
Joined: Mon Jul 23, 2012 11:23 am

Tue Feb 12, 2013 12:59 pm Change Time Zone

The issue seems to be that Roxie does not like the file name starting with “.” even though it is handled fine in hthor, and thor. We are looking into it, but try changing the filename to something else for now.

Regards,

Bob
bforeman
Community Advisory Board Member
Community Advisory Board Member
 
Posts: 1005
Joined: Wed Jun 29, 2011 7:13 pm


Return to Java Tools

Who is online

Users browsing this forum: No registered users and 1 guest

cron