Skip to content

Add support for Presto - common classes#884

Merged
mrigger merged 1 commit intosqlancer:mainfrom
axiomq:presto-common-classes-updates
Aug 24, 2023
Merged

Add support for Presto - common classes#884
mrigger merged 1 commit intosqlancer:mainfrom
axiomq:presto-common-classes-updates

Conversation

@branimir-vujicic
Copy link
Copy Markdown
Contributor

To implement support for Presto some changes in common classes are required.

Changes in common classes:

  1. class sqlancer.MainOptions - added global parameters :
  • canonicalizeString (boolean) - presto doesn't support JDBC queries with ";" at the end of the statement
  • compareResultsContent (boolean) - comparing the content of VARBINARY columns fails
  1. class sqlancer.ComparatorHelper - compare results based on parameter
    boolean compare = state.getOptions().compareResultsContent();
    if (compare && !firstHashSet.equals(secondHashSet)) {
  1. sqlancer.common.query.SQLancerResultSet - added method:
    public String getType(int i) throws SQLException {
    return rs.getMetaData().getColumnTypeName(i);
    }
  1. sqlancer.common.query.SQLQueryAdapter : added constructor
    public SQLQueryAdapter(String query, ExpectedErrors expectedErrors,
        boolean couldAffectSchema, boolean canonicalizeString) {

Copy link
Copy Markdown
Contributor

@mrigger mrigger left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The changes look good in general. Thanks a lot! Could you have a look at my two minor comments to see whether they make sense?

To implement support for Presto some changes in common
classes are required.

## Changes in common classes:
1. class sqlancer.MainOptions - added global parameters :
 * canonicalizeString (boolean) - presto doesn't support JDBC
     queries with ";" at the end of statement
 * compareResultsContent (boolean) - comparing content of
     VARBINARY columns fails

2. class sqlancer.ComparatorHelper - compare result based on parameter

```
    boolean compare = state.getOptions().compareResultsContent();
    if (compare && !firstHashSet.equals(secondHashSet)) {
```

3. sqlancer.common.query.SQLancerResultSet - added method:

```
    public String getType(int i) throws SQLException {
    return rs.getMetaData().getColumnTypeName(i);
    }
```

4. sqlancer.common.query.SQLQueryAdapter : added constructor

```
    public SQLQueryAdapter(String query, ExpectedErrors expectedErrors,
        boolean couldAffectSchema, boolean canonicalizeString) {

```
Copy link
Copy Markdown
Contributor

@mrigger mrigger left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks!

@mrigger mrigger merged commit f852f8c into sqlancer:main Aug 24, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants