investigate/convert to Calcite's SchemaPlus way of reading calcite models instea...

Open
#586 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
45/100
Issue type
Refactor
Clarity
Mostly clear
Activity status
Quiet
Tech stack
java
Domain
database

Research direction

Start with wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/calcite/utils/ModelParser.java and the referenced model.json resource. Investigate Calcite's SchemaPlus model-reading approach and compare it with the current ObjectMapper-based parsing and configuration path. Done means the parser uses the SchemaPlus approach instead of manually handling JSON, with the existing model sources still supported.

Written by the indexing model from the issue text.

Description

todo

investigate/convert to Calcite's SchemaPlus way of reading calcite models instead of manually handling JSON

https://github.com/apache/incubator-wayang/blob/9d7ecc49ae91f1bb93bded435310e53513bdd28f/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/calcite/utils/ModelParser.java#L34


package org.apache.wayang.api.sql.calcite.utils;

import org.apache.wayang.core.api.Configuration;
import org.json.simple.parser.ParseException;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.Iterator;
import java.util.Objects;

/* 
 * TODO: investigate/convert to Calcite's SchemaPlus way of reading calcite models instead of manually handling JSON
 */
public class ModelParser {
    private final Configuration configuration;
    private final JsonNode json;

    public ModelParser() throws IOException, ParseException {
        final String jsonString = Files
                .readString(new File("wayang-api/wayang-api-sql/src/main/resources/model.json").toPath());
        final ObjectMapper objectMapper = new ObjectMapper();

        this.json = objectMapper.readTree(jsonString);
        this.configuration = null;
    }

    public ModelParser(final Configuration configuration) throws IOException, ParseException {
        final String calciteModel = "{\"calcite\":" + configuration.getStringProperty("wayang.calcite.model")
                + ",\"separator\":\";\"}";
        final ObjectMapper objectMapper = new ObjectMapper();

        this.json = objectMapper.readTree(calciteModel);
        this.configuration = configuration;
    }

    /**

42ae52181df51b4758af79cc1688e807c1e634b0

Dominant language
Java
Stars
274
Forks
141
Avg merge
5d 16h
Merged PRs (30d)
4

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from apache/wayang

All issues in apache/wayang

Similar issues

More Java issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.