[ 
https://issues.apache.org/jira/browse/DRILL-4047?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15007391#comment-15007391
 ] 

ASF GitHub Bot commented on DRILL-4047:
---------------------------------------

Github user julienledem commented on a diff in the pull request:

    https://github.com/apache/drill/pull/246#discussion_r44987917
  
    --- Diff: 
exec/java-exec/src/test/java/org/apache/drill/TestSelectWithOption.java ---
    @@ -0,0 +1,203 @@
    +/**
    + * 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.
    + */
    +package org.apache.drill;
    +
    +import static java.lang.String.format;
    +import static org.apache.drill.TestBuilder.listOf;
    +
    +import java.io.File;
    +import java.io.FileWriter;
    +import java.io.IOException;
    +
    +import org.apache.drill.exec.store.dfs.WorkspaceSchemaFactory;
    +import org.junit.Ignore;
    +import org.junit.Test;
    +
    +public class TestSelectWithOption extends BaseTestQuery {
    +  private static final org.slf4j.Logger logger = 
org.slf4j.LoggerFactory.getLogger(WorkspaceSchemaFactory.class);
    +
    +  private File genCSVFile(String name, String... rows) throws IOException {
    +    File file = new File(format("target/%s_%s.csv", 
this.getClass().getName(), name));
    +    try (FileWriter fw = new FileWriter(file)) {
    +      for (int i = 0; i < rows.length; i++) {
    +        fw.append(rows[i] + "\n");
    +      }
    +    }
    +    return file;
    +  }
    +
    +  private String genCSVTable(String name, String... rows) throws 
IOException {
    +    File f = genCSVFile(name, rows);
    +    return format("dfs.`${WORKING_PATH}/%s`", f.getPath());
    +  }
    +
    +  private void testWithResult(String query, Object... expectedResult) 
throws Exception {
    +    TestBuilder builder = testBuilder()
    +        .sqlQuery(query)
    +        .ordered()
    +        .baselineColumns("columns");
    +    for (Object o : expectedResult) {
    +      builder = builder.baselineValues(o);
    +    }
    +    builder.build().run();
    +  }
    +
    +  @Test
    +  public void testTextFieldDelimiter() throws Exception {
    +    String tableName = genCSVTable("testTextFieldDelimiter",
    +        "\"b\"|\"0\"",
    +        "\"b\"|\"1\"",
    +        "\"b\"|\"2\"");
    +
    +    String queryTemplate =
    +        "select columns from table(%s (type => 'TeXT', fieldDelimiter => 
'%s'))";
    +    testWithResult(format(queryTemplate, tableName, ","),
    +        listOf("b\"|\"0"),
    +        listOf("b\"|\"1"),
    +        listOf("b\"|\"2")
    +      );
    +    testWithResult(format(queryTemplate, tableName, "|"),
    +        listOf("b", "0"),
    +        listOf("b", "1"),
    +        listOf("b", "2")
    +      );
    +  }
    +
    +  @Test @Ignore // It does not look like lineDelimiter is working
    +  public void testTextLineDelimiter() throws Exception {
    +    String tableName = genCSVTable("testTextLineDelimiter",
    +        "\"b\"|\"0\"",
    +        "\"b\"|\"1\"",
    +        "\"b\"|\"2\"");
    +
    +    testWithResult(format("select columns from table(%s(type => 'TeXT', 
lineDelimiter => '|'))", tableName),
    +        listOf("\"b\""),
    +        listOf("\"0\"", "\"b\""),
    +        listOf("\"1\"", "\"b\""),
    +        listOf("\"2\"")
    +      );
    +  }
    +
    +  @Test
    +  public void testTextQuote() throws Exception {
    +    String tableName = genCSVTable("testTextQuote",
    +        "\"b\"|\"0\"",
    +        "\"b\"|\"1\"",
    +        "\"b\"|\"2\"");
    +
    +    testWithResult(format("select columns from table(%s(type => 'TeXT', 
fieldDelimiter => '|', quote => '@'))", tableName),
    +        listOf("\"b\"", "\"0\""),
    +        listOf("\"b\"", "\"1\""),
    +        listOf("\"b\"", "\"2\"")
    +        );
    +
    +    String quoteTableName = genCSVTable("testTextQuote2",
    +        "@b@|@0@",
    +        "@b$@c@|@1@");
    +    // It seems that a parameter can not be called "escape"
    +    testWithResult(format("select columns from table(%s(`escape` => '$', 
type => 'TeXT', fieldDelimiter => '|', quote => '@'))", quoteTableName),
    +        listOf("b", "0"),
    +        listOf("b$@c", "1") // shouldn't $ be removed here?
    +        );
    +  }
    +
    +  @Test
    +  public void testTextComment() throws Exception {
    +      String commentTableName = genCSVTable("testTextComment",
    +          "b|0",
    +          "@ this is a comment",
    +          "b|1");
    +      testWithResult(format("select columns from table(%s(type => 'TeXT', 
fieldDelimiter => '|', comment => '@'))", commentTableName),
    +          listOf("b", "0"),
    +          listOf("b", "1")
    +          );
    +  }
    +
    +  @Test
    +  public void testTextHeader() throws Exception {
    +    String headerTableName = genCSVTable("testTextHeader",
    +        "b|a",
    +        "b|0",
    +        "b|1");
    +    testWithResult(format("select columns from table(%s(type => 'TeXT', 
fieldDelimiter => '|', skipFirstLine => true))", headerTableName),
    +        listOf("b", "0"),
    +        listOf("b", "1")
    +        );
    +
    +    testBuilder()
    +        .sqlQuery(format("select a, b from table(%s(type => 'TeXT', 
fieldDelimiter => '|', extractHeader => true))", headerTableName))
    +        .ordered()
    +        .baselineColumns("b", "a")
    +        .baselineValues("b", "0")
    +        .baselineValues("b", "1")
    +        .build().run();
    +  }
    +
    +  @Test
    +  public void testVariationsCSV() throws Exception {
    +    String csvTableName = genCSVTable("testVariationsCSV",
    +        "a,b",
    +        "c|d");
    +    // Using the defaults in TextFormatConfig (the field delimiter is 
neither "," not "|")
    +    String[] csvQueries = {
    +//        format("select columns from %s ('TeXT')", csvTableName),
    +//        format("select columns from %s('TeXT')", csvTableName),
    +        format("select columns from table(%s ('TeXT'))", csvTableName),
    --- End diff --
    
    no, but the point was to use a capitalization that is not used anywhere in 
the code to make sure this was case insensitive. I can vary the spelling but I 
thought this was sufficient.


> Select with options
> -------------------
>
>                 Key: DRILL-4047
>                 URL: https://issues.apache.org/jira/browse/DRILL-4047
>             Project: Apache Drill
>          Issue Type: Improvement
>          Components: Execution - Relational Operators
>            Reporter: Julien Le Dem
>            Assignee: Julien Le Dem
>
> Add a mechanism to pass parameters down to the StoragePlugin when writing a 
> Select statement.
> Some discussion here:
> http://mail-archives.apache.org/mod_mbox/drill-dev/201510.mbox/%3CCAO%2Bvc4AcGK3%2B3QYvQV1-xPPdpG3Tc%2BfG%3D0xDGEUPrhd6ktHv5Q%40mail.gmail.com%3E
> http://mail-archives.apache.org/mod_mbox/drill-dev/201511.mbox/%3ccao+vc4clzylvjevisfjqtcyxb-zsmfy4bqrm-jhbidwzgqf...@mail.gmail.com%3E



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to