[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [taler-schemafuzz] branch master updated: Working on the Ne
From: |
gnunet |
Subject: |
[GNUnet-SVN] [taler-schemafuzz] branch master updated: Working on the New value being used as PK constraint issue. Almost there. |
Date: |
Tue, 05 Jun 2018 16:37:50 +0200 |
This is an automated email from the git hooks/post-receive script.
erwan-ulrich pushed a commit to branch master
in repository schemafuzz.
The following commit(s) were added to refs/heads/master by this push:
new b848c8a Working on the New value being used as PK constraint issue.
Almost there.
b848c8a is described below
commit b848c8af6e7b3119b20ded990db5c0d6fa56071e
Author: Feideus <address@hidden>
AuthorDate: Tue Jun 5 16:37:42 2018 +0200
Working on the New value being used as PK constraint issue. Almost there.
---
src/main/java/org/schemaspy/DBFuzzer.java | 4 +-
.../java/org/schemaspy/model/GenericTreeNode.java | 91 +++++++++++-----------
2 files changed, 49 insertions(+), 46 deletions(-)
diff --git a/src/main/java/org/schemaspy/DBFuzzer.java
b/src/main/java/org/schemaspy/DBFuzzer.java
index 1a5f24e..05cdaba 100644
--- a/src/main/java/org/schemaspy/DBFuzzer.java
+++ b/src/main/java/org/schemaspy/DBFuzzer.java
@@ -81,7 +81,7 @@ public class DBFuzzer
int maxDepth =
Integer.parseInt(analyzer.getCommandLineArguments().getMaxDepth());
int mark = 0;
//adding CASCADE to all foreign key tableColumns.
- settingTemporaryCascade(false); // need to drop and recreate database
+ //settingTemporaryCascade(false); // need to drop and recreate database
LOGGER.info("Starting Database Fuzzing");
@@ -170,7 +170,7 @@ public class DBFuzzer
System.out.println("success");
printMutationTree();
- removeTemporaryCascade();
+ //removeTemporaryCascade();
return returnStatus;
}
diff --git a/src/main/java/org/schemaspy/model/GenericTreeNode.java
b/src/main/java/org/schemaspy/model/GenericTreeNode.java
index d76b396..183fd1a 100644
--- a/src/main/java/org/schemaspy/model/GenericTreeNode.java
+++ b/src/main/java/org/schemaspy/model/GenericTreeNode.java
@@ -348,13 +348,16 @@ public class GenericTreeNode {
public boolean inject(SqlService sqlService,Database db, boolean undo)
{
-
+ String theQuery = "";
if (undo)
System.out.println("UNDOING");
else
System.out.println("INJECT");
- String theQuery = updateQueryBuilderWrapper(undo,db,sqlService);
+ if(checkIfHasFk(db))
+ theQuery = updateQueryBuilderWrapper(undo,db,sqlService);
+ else
+ theQuery = updateQueryBuilder(undo,db,sqlService);
try
{
Statement stmt = sqlService.getConnection().createStatement();
@@ -671,62 +674,62 @@ public class GenericTreeNode {
public String updateQueryBuilderWrapper(boolean undo,Database db,
SqlService sqlService)
{
String theQuery = "";
- boolean hasFk =
db.getLesForeignKeys().containsKey(chosenChange.getParentTableColumn().getTable().getName().toUpperCase());
- if(hasFk)
- {
theQuery = "START TRANSACTION; SET CONSTRAINTS ALL DEFERRED;";
- for(ForeignKeyConstraint fk :
db.getLesForeignKeys().get(chosenChange.getParentTableColumn().getTable().getName().toUpperCase()))
- {
- for(TableColumn tb : fk.getParentColumns())
+ Collection<ForeignKeyConstraint> tmp2 =
db.getLesForeignKeys().get(chosenChange.getParentTableColumn().getTable().getName().toUpperCase());
+ for (ForeignKeyConstraint fk :
db.getLesForeignKeys().get(chosenChange.getParentTableColumn().getTable().getName().toUpperCase()))
{
- String semiQuery = "SELECT * FROM "+tb.getTable()+" WHERE
"+tb.getName()+"=";
- if
(chosenChange.getParentTableColumn().getTypeName().equals("varchar")
- ||
chosenChange.getParentTableColumn().getTypeName().equals("bool")
- ||
chosenChange.getParentTableColumn().getTypeName().equals("timestamp")
- ||
chosenChange.getParentTableColumn().getTypeName().equals("date")
- ||
chosenChange.getParentTableColumn().getTypeName().equals("_text")
- ||
chosenChange.getParentTableColumn().getTypeName().equals("text")
- ||
chosenChange.getParentTableColumn().getTypeName().equals("fulltext"))
- semiQuery = semiQuery +"'
"+chosenChange.getOldValue()+" '";
- else
- semiQuery = semiQuery +chosenChange.getOldValue();
-
- QueryResponseParser qrp;
- QueryResponse response=null;
- try {
- Statement stmt =
sqlService.getConnection().createStatement();
- ResultSet res = stmt.executeQuery(semiQuery);
- qrp = new QueryResponseParser();
- ArrayList<Row> rows = new
ArrayList<Row>(qrp.parse(res,tb.getTable()).getRows());
- response = new QueryResponse(rows,rows.size());
- }
- catch(Exception e)
+ for (TableColumn tb : fk.getChildColumns())
{
- e.printStackTrace();
- }
+ String semiQuery = "SELECT * FROM " + tb.getTable() +
" WHERE " + tb.getName() + "=";
+ if
(chosenChange.getParentTableColumn().getTypeName().equals("varchar")
+ ||
chosenChange.getParentTableColumn().getTypeName().equals("bool")
+ ||
chosenChange.getParentTableColumn().getTypeName().equals("timestamp")
+ ||
chosenChange.getParentTableColumn().getTypeName().equals("date")
+ ||
chosenChange.getParentTableColumn().getTypeName().equals("_text")
+ ||
chosenChange.getParentTableColumn().getTypeName().equals("text")
+ ||
chosenChange.getParentTableColumn().getTypeName().equals("fulltext"))
+ semiQuery = semiQuery + "' " +
chosenChange.getNewValue() + " ' ORDER BY RANDOM() LIMIT 1";
+ else
+ semiQuery = semiQuery +
chosenChange.getNewValue()+" ORDER BY RANDOM() LIMIT 1";
+
+ QueryResponseParser qrp;
+ QueryResponse response = null;
+ try {
+ Statement stmt =
sqlService.getConnection().createStatement();
+ ResultSet res = stmt.executeQuery(semiQuery);
+ qrp = new QueryResponseParser();
+ ArrayList<Row> rows = new
ArrayList<Row>(qrp.parse(res, tb.getTable()).getRows());
+ response = new QueryResponse(rows, rows.size());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
- if(response != null)
- {
- for (int i = 0; i < response.getNbRows(); i++)
- {
- GenericTreeNode tmp = new
GenericTreeNode(response.getRows().get(i),0,new
SingleChange(chosenChange.getParentTableColumn(),this,chosenChange.getOldValue(),chosenChange.getNewValue()));
- theQuery = theQuery +
tmp.updateQueryBuilder(false,db,sqlService);
+ if (response != null) {
+ if (response.getNbRows() == 0) {
+ for (int i = 0; i < response.getNbRows(); i++)
{
+ //select all rows with oldValue. change to
newValue for all of them
+ GenericTreeNode tmp = new
GenericTreeNode(response.getRows().get(i), 0, new
SingleChange(chosenChange.getParentTableColumn(), this,
chosenChange.getOldValue(), chosenChange.getNewValue()));
+ theQuery = theQuery +
tmp.updateQueryBuilder(false, db, sqlService);
+ }
+ }
}
}
}
- }
- }
theQuery = theQuery + updateQueryBuilder(undo,db,sqlService);
+ theQuery = theQuery + " ; COMMIT TRANSACTION;";
- if(hasFk)
- {
- theQuery = theQuery + " ; COMMIT TRANSACTION;";
- }
System.out.println("Total query = "+theQuery);
return theQuery;
}
+ public boolean checkIfHasFk(Database db)
+ {
+
if(db.getLesForeignKeys().get(chosenChange.getParentTableColumn().getTable().getName().toUpperCase()).size()
> 0)
+ return true;
+ return false;
+ }
+
}
--
To stop receiving notification emails like this one, please contact
address@hidden
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] [taler-schemafuzz] branch master updated: Working on the New value being used as PK constraint issue. Almost there.,
gnunet <=