Skip to content

Commit 3c1a6b4

Browse files
committed
Adapt already existing structure to support new changes
1 parent a4adda0 commit 3c1a6b4

6 files changed

Lines changed: 64 additions & 10 deletions

File tree

src/main/java/org/polypheny/simpleclient/executor/JdbcExecutor.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,9 @@ protected void executeInsertListAsPreparedBatch( List<BatchableInsert> queryList
254254
case ARRAY_REAL:
255255
preparedStatement.setArray( entry.getKey(), connection.createArrayOf( "REAL", (Object[]) entry.getValue().right ) );
256256
break;
257+
case ARRAY_BOOLEAN:
258+
preparedStatement.setArray( entry.getKey(), connection.createArrayOf( "BOOLEAN", (Object[]) entry.getValue().right) );
259+
break;
257260
case BYTE_ARRAY:
258261
preparedStatement.setBytes( entry.getKey(), (byte[]) entry.getValue().right );
259262
break;

src/main/java/org/polypheny/simpleclient/query/Query.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public Query( boolean expectResultSet ) {
5252
}
5353

5454

55-
public enum DataTypes {INTEGER, VARCHAR, TIMESTAMP, DATE, ARRAY_INT, ARRAY_REAL, BYTE_ARRAY, FILE}
55+
public enum DataTypes {INTEGER, VARCHAR, TIMESTAMP, DATE, ARRAY_INT, ARRAY_REAL, ARRAY_BOOLEAN, BYTE_ARRAY, FILE}
5656

5757

5858
public abstract String getSql();

src/main/java/org/polypheny/simpleclient/scenario/vectorbench/DataGenerator.java

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,10 @@
3232
import org.polypheny.simpleclient.executor.ExecutorException;
3333
import org.polypheny.simpleclient.main.ProgressReporter;
3434
import org.polypheny.simpleclient.query.BatchableInsert;
35-
import org.polypheny.simpleclient.scenario.vectorbench.queryBuilder.InsertIntFeature;
36-
import org.polypheny.simpleclient.scenario.vectorbench.queryBuilder.InsertMetadata;
37-
import org.polypheny.simpleclient.scenario.vectorbench.queryBuilder.InsertRealFeature;
35+
import org.polypheny.simpleclient.scenario.vectorbench.queryBuilder.insertion.InsertBooleanFeature;
36+
import org.polypheny.simpleclient.scenario.vectorbench.queryBuilder.insertion.InsertIntFeature;
37+
import org.polypheny.simpleclient.scenario.vectorbench.queryBuilder.insertion.InsertMetadata;
38+
import org.polypheny.simpleclient.scenario.vectorbench.queryBuilder.insertion.InsertRealFeature;
3839

3940

4041
@Slf4j
@@ -98,6 +99,20 @@ void generateRealFeatures() throws ExecutorException {
9899
}
99100

100101

102+
void generateBooleanFeatures() throws ExecutorException {
103+
InsertBooleanFeature queryBuilder = new InsertBooleanFeature( config.randomSeedInsert, config.dimensionFeatureVectors );
104+
for ( int i = 0; i < config.numberOfEntries; i++ ) {
105+
if ( aborted ) {
106+
break;
107+
}
108+
109+
addToInsertList( queryBuilder.getNewQuery() );
110+
}
111+
112+
executeInsertList();
113+
}
114+
115+
101116
private void addToInsertList( BatchableInsert query ) throws ExecutorException {
102117
batchList.add( query );
103118
if ( batchList.size() >= config.batchSizeInserts ) {

src/main/java/org/polypheny/simpleclient/scenario/vectorbench/VectorBench.java

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,13 @@
4141
import org.polypheny.simpleclient.query.QueryBuilder;
4242
import org.polypheny.simpleclient.query.QueryListEntry;
4343
import org.polypheny.simpleclient.scenario.PolyphenyScenario;
44-
import org.polypheny.simpleclient.scenario.vectorbench.queryBuilder.CreateIntFeature;
45-
import org.polypheny.simpleclient.scenario.vectorbench.queryBuilder.CreateMetadata;
46-
import org.polypheny.simpleclient.scenario.vectorbench.queryBuilder.CreateRealFeature;
44+
import org.polypheny.simpleclient.scenario.vectorbench.queryBuilder.SimpleKnnBooleanFeature;
45+
import org.polypheny.simpleclient.scenario.vectorbench.queryBuilder.SimpleKnnBooleanFeatureFiltered;
46+
import org.polypheny.simpleclient.scenario.vectorbench.queryBuilder.SimpleKnnRealFeatureFiltered;
47+
import org.polypheny.simpleclient.scenario.vectorbench.queryBuilder.creation.CreateBooleanFeature;
48+
import org.polypheny.simpleclient.scenario.vectorbench.queryBuilder.creation.CreateIntFeature;
49+
import org.polypheny.simpleclient.scenario.vectorbench.queryBuilder.creation.CreateMetadata;
50+
import org.polypheny.simpleclient.scenario.vectorbench.queryBuilder.creation.CreateRealFeature;
4751
import org.polypheny.simpleclient.scenario.vectorbench.queryBuilder.MetadataKnnIntFeature;
4852
import org.polypheny.simpleclient.scenario.vectorbench.queryBuilder.MetadataKnnRealCrossJoin;
4953
import org.polypheny.simpleclient.scenario.vectorbench.queryBuilder.MetadataKnnRealFeature;
@@ -87,7 +91,9 @@ public void createSchema( DatabaseInstance databaseInstance, boolean includingKe
8791
executor = executorFactory.createExecutorInstance();
8892
executor.executeQuery( (new CreateMetadata( config.dataStoreMetadata )).getNewQuery() );
8993
executor.executeQuery( (new CreateIntFeature( config.dataStoreFeature , config.dimensionFeatureVectors )).getNewQuery() );
90-
executor.executeQuery( (new CreateRealFeature( config.dataStoreFeature , config.dimensionFeatureVectors )).getNewQuery() );} catch (ExecutorException e ) {
94+
executor.executeQuery( (new CreateRealFeature( config.dataStoreFeature , config.dimensionFeatureVectors )).getNewQuery() );
95+
executor.executeQuery( (new CreateBooleanFeature( config.dataStoreFeature, config.dimensionFeatureVectors )).getNewQuery() );
96+
} catch (ExecutorException e ) {
9197
throw new RuntimeException( "Exception while creating schema", e );
9298
} finally {
9399
commitAndCloseExecutor( executor );
@@ -105,6 +111,7 @@ public void generateData( DatabaseInstance databaseInstance, ProgressReporter pr
105111
dataGenerator.generateMetadata();
106112
dataGenerator.generateIntFeatures();
107113
dataGenerator.generateRealFeatures();
114+
dataGenerator.generateBooleanFeatures();
108115
} catch ( ExecutorException e ) {
109116
throw new RuntimeException( "Exception while generating data", e );
110117
} finally {
@@ -125,7 +132,10 @@ public long execute( ProgressReporter progressReporter, CsvWriter csvWriter, Fil
125132
addNumberOfTimes( queryList, new MetadataKnnIntFeature( config.randomSeedQuery, config.dimensionFeatureVectors, config.limitKnnQueries, config.distanceNorm ), config.numberOfMetadataKnnIntFeatureQueries );
126133
addNumberOfTimes( queryList, new MetadataKnnRealFeature( config.randomSeedQuery, config.dimensionFeatureVectors, config.limitKnnQueries, config.distanceNorm ), config.numberOfMetadataKnnRealFeatureQueries );
127134
addNumberOfTimes( queryList, new SimpleKnnRealCrossJoin( config.randomSeedQuery, config.dimensionFeatureVectors, config.limitKnnQueries, config.distanceNorm ), config.numberOfSimpleKnnRealCrossJoinQueries );
128-
addNumberOfTimes( queryList, new MetadataKnnRealCrossJoin( config.randomSeedQuery, config.dimensionFeatureVectors, config.limitKnnQueries, config.distanceNorm ), config.numberOfMetadataKnnRealCrossJoinQueries );
135+
addNumberOfTimes( queryList, new SimpleKnnRealFeatureFiltered( config.randomSeedQuery, config.dimensionFeatureVectors, config.limitKnnQueries, config.distanceNorm, "cat_A" ), config.numberOfSimpleKnnRealFeatureFilteredQueries );
136+
addNumberOfTimes( queryList, new SimpleKnnBooleanFeature( config.randomSeedQuery, config.dimensionFeatureVectors, config.limitKnnQueries, config.booleanDistanceNorm ), config.numberOfSimpleKnnBooleanFeatureQueries );
137+
addNumberOfTimes( queryList, new SimpleKnnBooleanFeatureFiltered( config.randomSeedQuery, config.dimensionFeatureVectors, config.limitKnnQueries, config.booleanDistanceNorm, "cat_A" ), config.numberOfSimpleKnnBooleanFeatureFilteredQueries );
138+
129139

130140
return commonExecute( queryList, progressReporter, outputDirectory, numberOfThreads, Query::getSql, () -> executorFactory.createExecutorInstance( csvWriter ), new Random() );
131141
}
@@ -145,6 +155,9 @@ public void warmUp( ProgressReporter progressReporter ) {
145155
MetadataKnnRealFeature metadataKnnRealFeature = new MetadataKnnRealFeature( config.randomSeedQuery, config.dimensionFeatureVectors, config.limitKnnQueries, config.distanceNorm );
146156
MetadataKnnRealCrossJoin metadataKnnCrossJoin = new MetadataKnnRealCrossJoin( config.randomSeedQuery, config.dimensionFeatureVectors, config.limitKnnQueries, config.distanceNorm );
147157
SimpleKnnRealCrossJoin simpleKnnCrossJoin = new SimpleKnnRealCrossJoin( config.randomSeedQuery, config.dimensionFeatureVectors, config.limitKnnQueries, config.distanceNorm );
158+
SimpleKnnRealFeatureFiltered simpleKnnRealFeatureFiltered = new SimpleKnnRealFeatureFiltered( config.randomSeedQuery, config.dimensionFeatureVectors, config.limitKnnQueries, config.distanceNorm, "cat_A" );
159+
SimpleKnnBooleanFeature simpleKnnBooleanFeature = new SimpleKnnBooleanFeature( config.randomSeedQuery, config.dimensionFeatureVectors, config.limitKnnQueries, config.booleanDistanceNorm );
160+
SimpleKnnBooleanFeatureFiltered simpleKnnBooleanFeatureFiltered = new SimpleKnnBooleanFeatureFiltered( config.randomSeedQuery, config.dimensionFeatureVectors, config.limitKnnQueries, config.booleanDistanceNorm, "cat_A" );
148161

149162

150163
for ( int i = 0; i < config.numberOfWarmUpIterations; i++ ) {
@@ -179,6 +192,15 @@ public void warmUp( ProgressReporter progressReporter ) {
179192
if ( config.numberOfSimpleKnnRealCrossJoinQueries > 0 ) {
180193
executor.executeQuery( simpleKnnCrossJoin.getNewQuery() );
181194
}
195+
if ( config.numberOfSimpleKnnRealFeatureFilteredQueries > 0 ) {
196+
executor.executeQuery( simpleKnnRealFeatureFiltered.getNewQuery() );
197+
}
198+
if ( config.numberOfSimpleKnnBooleanFeatureQueries > 0 ) {
199+
executor.executeQuery( simpleKnnBooleanFeature.getNewQuery() );
200+
}
201+
if ( config.numberOfSimpleKnnRealFeatureFilteredQueries > 0 ) {
202+
executor.executeQuery( simpleKnnBooleanFeatureFiltered.getNewQuery() );
203+
}
182204
} catch ( ExecutorException e ) {
183205
throw new RuntimeException( "Error while executing warm-up queries", e );
184206
} finally {

src/main/java/org/polypheny/simpleclient/scenario/vectorbench/VectorBenchConfig.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,15 @@ public class VectorBenchConfig extends AbstractConfig {
5555
public int numberOfMetadataKnnRealFeatureQueries;
5656
public int numberOfSimpleKnnRealCrossJoinQueries;
5757
public int numberOfMetadataKnnRealCrossJoinQueries;
58+
public int numberOfSimpleKnnRealFeatureFilteredQueries;
59+
public int numberOfSimpleKnnBooleanFeatureQueries;
60+
public int numberOfSimpleKnnBooleanFeatureFilteredQueries;
61+
5862
// public final int numberOfCombinedQueries;
5963

6064
public int limitKnnQueries;
6165
public String distanceNorm;
66+
public String booleanDistanceNorm;
6267

6368

6469
public VectorBenchConfig(Properties properties, int multiplier ) {
@@ -98,8 +103,12 @@ public VectorBenchConfig(Properties properties, int multiplier ) {
98103
numberOfMetadataKnnRealFeatureQueries = getIntProperty( properties, "numberOfMetadataKnnRealFeatureQueries" ) * multiplier;
99104
numberOfSimpleKnnRealCrossJoinQueries = getIntProperty( properties, "numberOfSimpleKnnRealCrossJoinQueries" ) * multiplier;
100105
numberOfMetadataKnnRealCrossJoinQueries = getIntProperty( properties, "numberOfMetadataKnnRealCrossJoinQueries" ) * multiplier;
106+
numberOfSimpleKnnRealFeatureFilteredQueries = getIntProperty( properties, "numberOfSimpleKnnRealFeatureFilteredQueries" ) * multiplier;
107+
numberOfSimpleKnnBooleanFeatureQueries = getIntProperty( properties, "numberOfSimpleKnnBooleanFeatureQueries" ) * multiplier;
108+
numberOfSimpleKnnBooleanFeatureFilteredQueries = getIntProperty( properties, "numberOfSimpleKnnBooleanFeatureFilteredQueries" ) * multiplier;
101109
limitKnnQueries = getIntProperty( properties, "limitKnnQueries" );
102110
distanceNorm = getStringProperty( properties, "distanceNorm" );
111+
booleanDistanceNorm = getStringProperty( properties, "booleanDistanceNorm" );
103112
}
104113

105114

src/main/resources/org/polypheny/simpleclient/scenario/vectorbench/vector.properties

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
scenario = "vectorBench"
22

3-
dataStoreFeature = postgresbench
3+
dataStoreFeature = postgresql1
44
dataStoreMeta = hsqldb
55

66
numberOfThreads = 4
@@ -27,7 +27,12 @@ numberOfMetadataKnnIntFeatureQueries = 0
2727
numberOfMetadataKnnRealFeatureQueries = 0
2828
numberOfSimpleKnnRealCrossJoinQueries = 10
2929
numberOfMetadataKnnRealCrossJoinQueries = 10
30+
numberOfSimpleKnnRealFeatureFilteredQueries = 10
31+
numberOfSimpleKnnBooleanFeatureFilteredQueries = 10
32+
numberOfSimpleKnnBooleanFeatureQueries = 10
33+
3034

3135
limitKnnQueries = 10
3236
distanceNorm = COSINE
37+
booleanDistanceNorm = HAMMING
3338

0 commit comments

Comments
 (0)