GitHub user chenlica created a discussion: PlanStore (from old wiki)

>From the page https://github.com/apache/texera/wiki/PlanStore (may be dangling)

====


Author(s): [Seungjin Lee](https://github.com/sweetest), [Kishore 
Narendran](https://github.com/kishore-narendran)

Reviewer(s): [Chen Li](https://github.com/chenlica) ** REVIEWED **

## Synopsys

Implement a plan store for pre-defined plans. It manages plans using a table 
called `plan`. Plan records, and the JSON strings that describe these plans are 
stored in the table. The purpose is to use stored plans to make it easier for 
users to formulate queries using the GUI, and will be eventually used also to 
store query plans from the `TextQL` interface.

## Status
As of 02/24/2017: **UPDATED**
As of 12/16/2016: **FINISHED**

## Modules

```
edu.uci.ics.texera.planstore
```

## Related Issues

https://github.com/Texera/texera/issues/256

## Description

A table called `plan` is used in this module. The table has three attributes; 
`name`, `description`, and `planJson`, all of which are self-explanatory except 
`planJson`. The `planJson` attribute is the logical plan stored as a JSON 
string. This is how the `texera-web` module receives query plans. The 
description for how this JSON should look can be found in [this wiki 
page](https://github.com/Texera/texera/wiki/Operator-property-specification). 
This module deals with managing plan records and storing the Query Plans as 
JSON strings. 

Set of public methods in this module is as follows.
* void getInstance() : get the singleton instance of a plan store.
* void createPlanStore() : create and initialize a plan store.
* void destroyPlanStore() : delete both the table and the directory used in 
this module.
* IDField addPlan(String planName, String description, String logicalPlanJson) 
: add a plan with the given name. All the arguments must be non-null.
* ITuple getPlan(String planName) : get a plan record by the given name.
* IDataReader getPlanIterator() : get a plan iterator to retrieve all the plan 
records stored.
* void deletePlan(String planName) : delete a plan by the given name.
* void updatePlanDescription(String planName, String description) : update the 
description of a plan by the given name.
* void updatePlan(String planName, String logicalPlanJson) : update the logical 
plan JSON string of a plan by the given name.
* void updatePlan(String planName, String description, String logicalPlanJson) 
: update both the plan object and the description of a plan by the given name

## Texera Web API endpoints

| HTTP Method | URL | Description |
| ----------- | --- | ----------- |
| **POST** |`/planstore` | Adding a plan to the `PlanStore` |
| **GET** | `/planstore` | Getting all the query plans in the `PlanStore` |
| **GET** | `/planstore/{plan_name}` | Getting the query plan associated with 
the URL parameter `plan_name` in the `PlanStore` | 
| **PUT** | `/planstore/{plan_name}` | Updating the query plan associated with 
the URL parameter `plan_name` with the information presented in the body of the 
request |
| **DELETE** | `/planstore/{plan_name}` | Deleting the query plan associated 
with the URL parameter `plan_name` in the `PlanStore` | 

## TODOs

* Integrate this module with `texera-gui`.

GitHub link: https://github.com/apache/texera/discussions/3979

----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to: 
[email protected]

Reply via email to