[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [taler-schemafuzz] branch master updated: First drop for fk
From: |
gnunet |
Subject: |
[GNUnet-SVN] [taler-schemafuzz] branch master updated: First drop for fk handling (high crash probability) |
Date: |
Mon, 04 Jun 2018 16:10:15 +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 bb23b73 First drop for fk handling (high crash probability)
bb23b73 is described below
commit bb23b7381beba9aca0cf12240d980e1f794827ee
Author: Feideus <address@hidden>
AuthorDate: Mon Jun 4 16:10:07 2018 +0200
First drop for fk handling (high crash probability)
---
.../java/org/schemaspy/model/GenericTreeNode.java | 64 ++++++++++++++++++++--
1 file changed, 58 insertions(+), 6 deletions(-)
diff --git a/src/main/java/org/schemaspy/model/GenericTreeNode.java
b/src/main/java/org/schemaspy/model/GenericTreeNode.java
index 579d645..f193c3f 100644
--- a/src/main/java/org/schemaspy/model/GenericTreeNode.java
+++ b/src/main/java/org/schemaspy/model/GenericTreeNode.java
@@ -1,10 +1,8 @@
package org.schemaspy.model;
-import java.sql.PreparedStatement;
+import java.io.IOException;
+import java.sql.*;
-import java.sql.ResultSet;
-import java.sql.Statement;
-import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.ArrayList;
@@ -350,12 +348,13 @@ public class GenericTreeNode {
public boolean inject(SqlService sqlService,Database db, boolean undo)
{
+
if (undo)
System.out.println("UNDOING");
else
System.out.println("INJECT");
- String theQuery = updateQueryBuilder(undo);
+ String theQuery = updateQueryBuilderWrapper(undo,db,sqlService);
try
{
Statement stmt = sqlService.getConnection().createStatement();
@@ -389,7 +388,7 @@ public class GenericTreeNode {
}
}
- public String updateQueryBuilder(boolean undo) //undo variable tells if
the function should build Inject string or Undo string
+ public String updateQueryBuilder(boolean undo,Database db, SqlService
sqlService) //undo variable tells if the function should build Inject string or
Undo string
{
String theQuery;
@@ -665,4 +664,57 @@ public class GenericTreeNode {
return FirstApperanceOf(mutation.getParent());
}
+
+ public String updateQueryBuilderWrapper(boolean undo,Database db,
SqlService sqlService)
+ {
+ String theQuery = "";
+ boolean hasFk =
db.getLesForeignKeys().containsKey(chosenChange.getParentTableColumn().getName());
+
+ if(hasFk)
+ {
+ theQuery = "START TRANSACTION; SET CONSTRAINTS ALL DEFERRED;";
+
+ for(ForeignKeyConstraint fk :
db.getLesForeignKeys().get(chosenChange.getParentTableColumn().getName()))
+ {
+ ArrayList<TableColumn> allChildrenAndParents = new
ArrayList<TableColumn>();
+ allChildrenAndParents.addAll(fk.getChildColumns());
+ allChildrenAndParents.addAll(fk.getParentColumns());
+
+ for(TableColumn tb : allChildrenAndParents)
+ {
+ String semiQuery = "SELECT * FROM "+tb.getTable()+" WHERE
"+tb.getName()+"="+chosenChange.getOldValue();
+ QueryResponseParser qrp;
+ QueryResponse response = null ;
+ try {
+ Statement stmt =
sqlService.getConnection().createStatement();
+ ResultSet res = stmt.executeQuery(semiQuery);
+ qrp = new QueryResponseParser();
+ response = qrp.parse(res,tb.getTable());
+ }
+ 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);
+ }
+ }
+ }
+ }
+ }
+
+ theQuery = theQuery + updateQueryBuilder(undo,db,sqlService);
+
+ if(hasFk)
+ {
+ theQuery = theQuery + " ; COMMIT TRANSACTION;";
+ }
+ return theQuery;
+ }
+
}
--
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: First drop for fk handling (high crash probability),
gnunet <=