GithubHelp home page GithubHelp logo

qr-hint's Introduction

qr-hint

This repository contains the source code for qr-hint, as well as a full version of the paper (same main body with extra appendix).

Note

  1. There is a typo in Lemma 5.1 in the submitted version of the paper (the viability check should be equivalence between two formula as stated at the beginning of section 5). This typo is corrected in the full version under this repository. We sincerely apologize for any inconvenience and confusion.
  2. Please do not look into global_var_beers.py, global_var_dblp.py, and global_var_tpc.py as they are importing a Java library (sqlanalyzer.jar) developed by the authors, and the Java package contains information that might leak authors' identity.
  3. The Quine-McCluskey implementations are borrowed from this GitHub repo as well as this repo. The maintainers of these repositories are not affiliated with the authors of the paper in any way.

Setup

To run the demo code, please make sure you have a running PostgreSQL database with a user named "postgres" (should be default) and password "postgres". If you are using Docker, please feel free to check out what we have prepared under db directory. It is a classical beers database instance (same one as the running example in the paper).

Some system pre-requisites:

  1. Python 3.8 or above, remember to install all libraries in requirements.txt.
  2. Java JDK 11 or later, as we are using Apache Calcite.
  3. Jupyter notebook for demo.

Demo

Feel free to open Testing.ipynb with Jupyter Notebook to see the demo example. You can also play with it a little more. Note that when you write queries, make sure the first letter of all table names must be capitalized, otherwise it might cause errors in the program.

The most robust or bug-free part is testing WHERE, in which we try to cover a lot of corner cases and it is the most important component.

If you would like to see the experiments scripts, they are under qr-hint-code/tpc-h-test. num-pred-test corresponds to the runtime test for number of predicates, and num-rs-test corresponds to the accuracy test where multiple errors are injected. If you would like to run it yourself, make sure you do the following:

  1. In PostgreSQL, create a database called tpc.
  2. Create tables using the commands in tpc-h-test/create.sql.
  3. In query_info.py, comment out the import of global_var_beers and comment in the import of global_var_tpc.

qr-hint's People

Contributors

yihaoh avatar

Stargazers

Kevinsouth avatar Haoran Ding avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.