davisusanibar opened a new issue, #176:
URL: https://github.com/apache/arrow-java/issues/176

   ### Describe the bug, including details regarding any error messages, 
version, and platform.
   
   Trying to run Java Substrait demo into Windows OS and seeing this error 
response:
   
   ```
   java.lang.RuntimeException: Failed to parse memory address from string 
value. Error: stol argument out of range
        at 
org.apache.arrow.dataset.substrait.JniWrapper.executeSerializedPlan(Native 
Method)
        at 
org.apache.arrow.dataset.substrait.AceroSubstraitConsumer.execute(AceroSubstraitConsumer.java:119)
        at 
org.apache.arrow.dataset.substrait.AceroSubstraitConsumer.runQuery(AceroSubstraitConsumer.java:90)
   ```
   
   ```Java
   .. testcode::
   
       import com.google.common.collect.ImmutableList;
       import io.substrait.isthmus.SqlToSubstrait;
       import io.substrait.proto.Plan;
       import org.apache.arrow.dataset.file.FileFormat;
       import org.apache.arrow.dataset.file.FileSystemDatasetFactory;
       import org.apache.arrow.dataset.jni.NativeMemoryPool;
       import org.apache.arrow.dataset.scanner.ScanOptions;
       import org.apache.arrow.dataset.scanner.Scanner;
       import org.apache.arrow.dataset.source.Dataset;
       import org.apache.arrow.dataset.source.DatasetFactory;
       import org.apache.arrow.dataset.substrait.AceroSubstraitConsumer;
       import org.apache.arrow.memory.BufferAllocator;
       import org.apache.arrow.memory.RootAllocator;
       import org.apache.arrow.vector.ipc.ArrowReader;
       import org.apache.calcite.sql.parser.SqlParseException;
   
       import java.nio.ByteBuffer;
       import java.util.HashMap;
       import java.util.Map;
   
       static Plan queryTableNationJoinCustomer() throws SqlParseException {
           String sql = "SELECT n.n_name, COUNT(*) AS NUMBER_CUSTOMER FROM 
NATION n JOIN CUSTOMER c " +
               "ON n.n_nationkey = c.c_nationkey WHERE n.n_nationkey = 17 " +
               "GROUP BY n.n_name";
           String nation = "CREATE TABLE NATION (N_NATIONKEY BIGINT NOT NULL, " 
+
               "N_NAME CHAR(25), N_REGIONKEY BIGINT NOT NULL, N_COMMENT 
VARCHAR(152))";
           String customer = "CREATE TABLE CUSTOMER (C_CUSTKEY BIGINT NOT NULL, 
" +
               "C_NAME VARCHAR(25), C_ADDRESS VARCHAR(40), C_NATIONKEY BIGINT 
NOT NULL, " +
               "C_PHONE CHAR(15), C_ACCTBAL DECIMAL, C_MKTSEGMENT CHAR(10), " +
               "C_COMMENT VARCHAR(117) )";
           SqlToSubstrait sqlToSubstrait = new SqlToSubstrait();
           Plan plan = sqlToSubstrait.execute(sql,
               ImmutableList.of(nation, customer));
           return plan;
       }
   
       static void queryTwoDatasetsThruSubstraitPlanDefinition() {
           String uriNation = "file:" + System.getProperty("user.dir") + 
"/thirdpartydeps/tpch/nation.parquet";
           String uriCustomer = "file:" + System.getProperty("user.dir") + 
"/thirdpartydeps/tpch/customer.parquet";
           ScanOptions options = new ScanOptions(/*batchSize*/ 32768);
           try (
               BufferAllocator allocator = new RootAllocator();
               DatasetFactory datasetFactory = new FileSystemDatasetFactory(
                   allocator, NativeMemoryPool.getDefault(),
                   FileFormat.PARQUET, uriNation);
               Dataset dataset = datasetFactory.finish();
               Scanner scanner = dataset.newScan(options);
               ArrowReader readerNation = scanner.scanBatches();
               DatasetFactory datasetFactoryCustomer = new 
FileSystemDatasetFactory(
                   allocator, NativeMemoryPool.getDefault(),
                   FileFormat.PARQUET, uriCustomer);
               Dataset datasetCustomer = datasetFactoryCustomer.finish();
               Scanner scannerCustomer = datasetCustomer.newScan(options);
               ArrowReader readerCustomer = scannerCustomer.scanBatches()
           ) {
               // map table to reader
               Map<String, ArrowReader> mapTableToArrowReader = new HashMap<>();
               mapTableToArrowReader.put("NATION", readerNation);
               mapTableToArrowReader.put("CUSTOMER", readerCustomer);
               // get binary plan
               Plan plan = queryTableNationJoinCustomer();
               ByteBuffer substraitPlan = ByteBuffer.allocateDirect(
                   plan.toByteArray().length);
               substraitPlan.put(plan.toByteArray());
               // run query
               try (ArrowReader arrowReader = new AceroSubstraitConsumer(
                   allocator).runQuery(
                   substraitPlan,
                   mapTableToArrowReader
               )) {
                   while (arrowReader.loadNextBatch()) {
                       
System.out.print(arrowReader.getVectorSchemaRoot().contentToTSVString());
                   }
               }
           } catch (Exception e) {
               e.printStackTrace();
           }
       }
   
       queryTwoDatasetsThruSubstraitPlanDefinition();
   
   .. testoutput::
   
       N_NAME    NUMBER_CUSTOMER
       PERU    573
   ```
   
   
   
   ### Component(s)
   
   Java


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@arrow.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to