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

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

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

    https://github.com/apache/drill/pull/752#discussion_r102362622
  
    --- Diff: 
exec/java-exec/src/main/java/org/apache/drill/exec/store/mock/MockStorageEngine.java
 ---
    @@ -109,7 +121,37 @@ public MockSchema(MockStorageEngine engine) {
     
         @Override
         public Table getTable(String name) {
    -      Pattern p = Pattern.compile("(\\w+)_(\\d+)(k|m)?", 
Pattern.CASE_INSENSITIVE);
    +      if (name.toLowerCase().endsWith(".json") ) {
    +        return getConfigFile(name);
    +      } else {
    +        return getDirectTable(name);
    +      }
    +    }
    +
    +    private Table getConfigFile(String name) {
    +      final URL url = Resources.getResource(name);
    +      if (url == null) {
    +        throw new IllegalArgumentException(
    +            "Unable to find mock table config file " + name);
    +      }
    +      MockTableDef mockTableDefn;
    +      try {
    +        String json = Resources.toString(url, Charsets.UTF_8);
    +        final ObjectMapper mapper = new ObjectMapper();
    +        mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, 
true);
    +        mockTableDefn = mapper.readValue(json, MockTableDef.class);
    +      } catch (JsonParseException e) {
    +        throw new IllegalArgumentException( "Unable to parse mock table 
definition file: " + name, e );
    +      } catch (JsonMappingException e) {
    +        throw new IllegalArgumentException( "Unable to Jackson deserialize 
mock table definition file: " + name, e );
    +      } catch (IOException e) {
    +        throw new IllegalArgumentException( "Unable to read mock table 
definition file: " + name, e );
    +      }
    +      return new DynamicDrillTable(engine, this.name, 
mockTableDefn.getEntries() );
    --- End diff --
    
    Please remove extra space before last` )`. there are few other places too 
like line 169 in this file, line 199 (MockTableDef.java), etc.


> Allow "extended" mock tables access from SQL queries
> ----------------------------------------------------
>
>                 Key: DRILL-5258
>                 URL: https://issues.apache.org/jira/browse/DRILL-5258
>             Project: Apache Drill
>          Issue Type: Improvement
>    Affects Versions: 1.10
>            Reporter: Paul Rogers
>            Assignee: Paul Rogers
>            Priority: Minor
>             Fix For: 1.10
>
>
> DRILL-5152 provided a simple way to generate sample data in SQL using a new, 
> simplified version of the mock data generator. This approach is very 
> convenient, but is inherently limited. For example, the limited syntax 
> available in SQL does not encoding much information about columns such as 
> repeat count, data generator or so on. The simple SQL approach does not allow 
> generating multiple groups of data.
> However, all these features are present in the original mock data source via 
> a special JSON configuration file. Previously, only physical plans could 
> access that extended syntax.
> This ticket requests a SQL interface to the extended mock data source:
> {code}
> SELECT * FROM `mock`.`example/mock-options.json`
> {code}
> Mock data source options are always stored as a JSON file. Since the existing 
> mock data generator for SQL never uses JSON files, a simple rule is that if 
> the table name ends in ".json" then it is a specification, else the 
> information is encoded in table and column names.
> The format of the data generation syntax is documented in the mock data 
> source classes.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to