[GitHub] [calcite] neoremind commented on pull request #1996: [CALCITE-4034] Implement a MySQL InnoDB adapter

2020-08-17 Thread GitBox


neoremind commented on pull request #1996:
URL: https://github.com/apache/calcite/pull/1996#issuecomment-674720876


   I have refactored some of the code to use the new API (in 1.25.0), to create 
and parameterized innodb planner rules. Please refer to 
https://issues.apache.org/jira/browse/CALCITE-3923.



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.

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




[GitHub] [calcite] neoremind commented on pull request #1996: [CALCITE-4034] Implement a MySQL InnoDB adapter

2020-08-17 Thread GitBox


neoremind commented on pull request #1996:
URL: https://github.com/apache/calcite/pull/1996#issuecomment-674738512


   @XuQianJin-Stars I have addressed the comments from Julian (discussion in 
JIRA), and made the latest code compatible with 1.25.0, the binary files are 
not a concern anymore. Are there any other works to be done for this PR? I 'd 
very much like to push forward the work. Many thanks!



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.

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




[GitHub] [calcite] neoremind commented on pull request #1996: [CALCITE-4034] Implement a MySQL InnoDB adapter

2020-06-01 Thread GitBox


neoremind commented on pull request #1996:
URL: https://github.com/apache/calcite/pull/1996#issuecomment-636909734


   @XuQianJin-Stars many thanks 😃 



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.

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




[GitHub] [calcite] neoremind commented on pull request #1996: [CALCITE-4034] Implement a MySQL InnoDB adapter

2020-06-04 Thread GitBox


neoremind commented on pull request #1996:
URL: https://github.com/apache/calcite/pull/1996#issuecomment-638970225


   @XuQianJin-Stars I have rebased master, did some refinement and updated 
`innodb_adapter.md`, for how the adapter works, please refer to 
`innodb_adapter.md`, I think this doc explains most of the design and use cases.



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.

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




[GitHub] [calcite] neoremind commented on pull request #1996: [CALCITE-4034] Implement a MySQL InnoDB adapter

2020-06-09 Thread GitBox


neoremind commented on pull request #1996:
URL: https://github.com/apache/calcite/pull/1996#issuecomment-641320784


   @XuQianJin-Stars No hurry, take your time, thanks very much!



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.

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




[GitHub] [calcite] neoremind commented on pull request #1996: [CALCITE-4034] Implement a MySQL InnoDB adapter

2020-06-29 Thread GitBox


neoremind commented on pull request #1996:
URL: https://github.com/apache/calcite/pull/1996#issuecomment-651476622


   @zinking Thanks for reviewing! Could you give me some testing SQL examples 
and maybe explain the meaning behind this?



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.

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




[GitHub] [calcite] neoremind commented on pull request #1996: [CALCITE-4034] Implement a MySQL InnoDB adapter

2020-06-30 Thread GitBox


neoremind commented on pull request #1996:
URL: https://github.com/apache/calcite/pull/1996#issuecomment-651833186


   In MySQL 5.6, `COMPACT` is the default row format. After MySQL 5.7 (include 
8.0), `DYNAMIC` is the default row format. The two are the most popular row 
formats.  
   
   For `COMPRESSED`, it is not supported yet. Users who cares about storage 
size rather than CPU load might choose this format. But IMHO, most MySQL users 
do not specify row format when creating table.
   
   For `FIXED` row format, it is rarely used. Refer to 
https://dev.mysql.com/doc/refman/5.7/en/create-table.html
   ```
   ROW_FORMAT=FIXED is not supported. If ROW_FORMAT=FIXED is specified while 
innodb_strict_mode is disabled, InnoDB issues a warning and assumes 
ROW_FORMAT=DYNAMIC. If ROW_FORMAT=FIXED is specified while innodb_strict_mode 
is enabled, which is the default, InnoDB returns an error.
   ```
   
   For `REDUNDANT` row format, it is an very old format before MySQL 5.1. 
   
   For `extra`, there is no such row format. Valid row formats are {DEFAULT | 
DYNAMIC | FIXED | COMPRESSED | REDUNDANT | COMPACT}
   
   To conclude, the adapter supports `COMPACT` and `DYNAMIC` format which are 
most commonly used nowadays. I can add explanations in `Limitation` section. 



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.

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




[GitHub] [calcite] neoremind commented on pull request #1996: [CALCITE-4034] Implement a MySQL InnoDB adapter

2020-07-01 Thread GitBox


neoremind commented on pull request #1996:
URL: https://github.com/apache/calcite/pull/1996#issuecomment-652330139


   @XuQianJin-Stars I have addressed the comments above.
   
   For the question: *What is the production usage scenario of this MySQL 
InnoDB Java Reader?*
   Calcite's InnoDB adapter allows user to query the InnoDB data based on ibd 
files directly as illustrated below. `innodb-java-reader` provides some basic 
storage APIs, for example, `queryByPrimaryKey`, `queryAll` and `queryBySk`, 
etc. With this adapter, user is able to query through SQL, and the internal 
embedded execution engine can work pretty well under most cases.
   
   ```
 SQL Query 
  | |
 /   \
   -- --
  | | 
  v v
 MySQL Server
   +---+   +--+
   | SQL/Parser/Optimizer..|   |Calcite innodb adapter|   
   +---+   +--+
   +---+++ 
   | InnoDB Storage Engine || innodb-java-reader |
   +---+++
   
   -File System
   
++  +-+
| .ibd files | ...  | |InnoDB Data files
++  +-+ 
   
   ```
   
   The by-pass querying capability can benefit the following scenarios:
   1. Query by offloading mysql-server process, even without mysql-server 
running. Backup MySQL without disturbing mysql-server process, this is a good 
alternative to dump data besides mysql-dump and `mysql -e` command.
   2. InnoDB data file can be distributed to other storage. Based on this 
adapter, users can transform as what ever they wanted, for example, 
transforming data to columnar format (ORC, Parquet) for OLAP engines; dumping 
data to heterogeneous NewSQL systems, so that Data Lake analytics can leverage 
this. Although real-time is hard to achieve because we only get a snapshot of 
the table, it is still useful in Lambda architecture.



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.

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