Compare commits

...

4 Commits

Author SHA1 Message Date
vyu-talend
5e7fc98dc8 Fix(TDI-32477):Dynamic column includes the part of columns 2019-07-29 17:13:32 +08:00
vyu-talend
ec71042f02 Fix(TDI-32477):Enable when the type is Dynamic 2019-07-24 14:33:04 +08:00
vyu-talend
b3f5b32f71 Fix(TDI-32477):Always lowercase column's name and table in Postgresql 2019-07-24 14:33:03 +08:00
vyu-talend
bc27eb5a90 Fix(TDI-32477):Always lowercase column's name of postgres when create
table
2019-07-24 14:33:01 +08:00
5 changed files with 39 additions and 7 deletions

View File

@@ -70,6 +70,8 @@ skeleton="../templates/db_output_bulk.skeleton"
String dieOnError = ElementParameterParser.getValue(node, "__DIE_ON_ERROR__"); String dieOnError = ElementParameterParser.getValue(node, "__DIE_ON_ERROR__");
boolean convertToLowercase = ("true").equals(ElementParameterParser.getValue(node, "__CONVERT_COLUMN_TABLE_TO_LOWERCASE__"));
String rejectConnName = null; String rejectConnName = null;
List<? extends IConnection> rejectConns = node.getOutgoingConnections("REJECT"); List<? extends IConnection> rejectConns = node.getOutgoingConnections("REJECT");
if(rejectConns != null && rejectConns.size() > 0) { if(rejectConns != null && rejectConns.size() > 0) {
@@ -98,6 +100,18 @@ List<Column> stmtStructure = null;
if(columnList != null && columnList.size() > 0) { if(columnList != null && columnList.size() > 0) {
stmtStructure = getManager(dbmsId, cid).createColumnList(columnList, useFieldOptions, fieldOptions, addCols); stmtStructure = getManager(dbmsId, cid).createColumnList(columnList, useFieldOptions, fieldOptions, addCols);
isDynamic = isDynamic && !getManager(dbmsId, cid).isDynamicColumnReplaced(); isDynamic = isDynamic && !getManager(dbmsId, cid).isDynamicColumnReplaced();
if(convertToLowercase){
for(Column column : stmtStructure) {
if(column.isReplaced()) {
for (Column replacedColumn : column.getReplacement()) {
replacedColumn.setColumnName(replacedColumn.getColumnName().toLowerCase());
}
} else if(!column.isDynamic()){
column.setColumnName(column.getColumnName().toLowerCase());
}
}
}
} }
%> %>
@@ -116,9 +130,9 @@ if(("true").equals(useExistingConn)) {
String tableName_<%=cid%> = null; String tableName_<%=cid%> = null;
if(dbschema_<%=cid%> == null || dbschema_<%=cid%>.trim().length() == 0) { if(dbschema_<%=cid%> == null || dbschema_<%=cid%>.trim().length() == 0) {
tableName_<%=cid%> = <%=table%>; tableName_<%=cid%> = (<%=table%>)<%=convertToLowercase ? ".toLowerCase()" : ""%>;
} else { } else {
tableName_<%=cid%> = dbschema_<%=cid%> + "\".\"" + <%=table%>; tableName_<%=cid%> = dbschema_<%=cid%> + "\".\"" + (<%=table%>)<%=convertToLowercase ? ".toLowerCase()" : ""%>;
} }
<% <%

View File

@@ -393,6 +393,14 @@
<DEFAULT>false</DEFAULT> <DEFAULT>false</DEFAULT>
</PARAMETER> </PARAMETER>
<PARAMETER
NAME="CONVERT_COLUMN_TABLE_TO_LOWERCASE"
FIELD="CHECK"
NUM_ROW="25"
>
<DEFAULT>false</DEFAULT>
</PARAMETER>
<PARAMETER <PARAMETER
NAME="USE_BATCH_SIZE" NAME="USE_BATCH_SIZE"
FIELD="CHECK" FIELD="CHECK"

View File

@@ -50,6 +50,8 @@ skeleton="../templates/db_output_bulk.skeleton"
boolean useBatchSize = ("true").equals(ElementParameterParser.getValue(node,"__USE_BATCH_SIZE__")); boolean useBatchSize = ("true").equals(ElementParameterParser.getValue(node,"__USE_BATCH_SIZE__"));
String batchSize=ElementParameterParser.getValue(node,"__BATCH_SIZE__"); String batchSize=ElementParameterParser.getValue(node,"__BATCH_SIZE__");
boolean convertToLowercase = ("true").equals(ElementParameterParser.getValue(node, "__CONVERT_COLUMN_TABLE_TO_LOWERCASE__"));
//feature:22704 //feature:22704
boolean savePoint = ("true").equals(ElementParameterParser.getValue(node,"__SAVE_POINT__")); boolean savePoint = ("true").equals(ElementParameterParser.getValue(node,"__SAVE_POINT__"));
boolean showSavePoint = false; boolean showSavePoint = false;
@@ -156,11 +158,16 @@ skeleton="../templates/db_output_bulk.skeleton"
if(conns_dynamic!=null && conns_dynamic.size()>0){ if(conns_dynamic!=null && conns_dynamic.size()>0){
IConnection conn = conns_dynamic.get(0); IConnection conn = conns_dynamic.get(0);
if(!("".equals(insertColName.toString()))) { if(!("".equals(insertColName.toString()))) {
String insertColNameStr = null;
if(convertToLowercase)
insertColNameStr = insertColName.toString().toLowerCase();
else
insertColNameStr = insertColName.toString();
%> %>
String insert_<%=cid%> = "INSERT INTO \"" + tableName_<%=cid%> + "\" (<%=insertColName.toString()%>, "+DynamicUtils.getInsertIntoStmtColumnsList(<%=conn.getName()%>.<%=getDynamicColumn()%>, "<%=dbmsId %>")+") VALUES (<%=insertValueStmt.toString()%>, "+DynamicUtils.getInsertIntoStmtValuesList(<%=conn.getName()%>.<%=getDynamicColumn()%>)+")"; String insert_<%=cid%> = "INSERT INTO \"" + tableName_<%=cid%> + "\" (<%=insertColNameStr%>, "+DynamicUtils.getInsertIntoStmtColumnsList(<%=conn.getName()%>.<%=getDynamicColumn()%>, "<%=dbmsId %>")<%if(convertToLowercase){%>.toLowerCase()<%}%>+") VALUES (<%=insertValueStmt.toString()%>, "+DynamicUtils.getInsertIntoStmtValuesList(<%=conn.getName()%>.<%=getDynamicColumn()%>)+")";
<% } else { <% } else {
%> %>
String insert_<%=cid%> = "INSERT INTO \"" + tableName_<%=cid%> + "\" ("+DynamicUtils.getInsertIntoStmtColumnsList(<%=conn.getName()%>.<%=getDynamicColumn()%>, "<%=dbmsId %>")+") VALUES ("+DynamicUtils.getInsertIntoStmtValuesList(<%=conn.getName()%>.<%=getDynamicColumn()%>)+")"; String insert_<%=cid%> = "INSERT INTO \"" + tableName_<%=cid%> + "\" ("+DynamicUtils.getInsertIntoStmtColumnsList(<%=conn.getName()%>.<%=getDynamicColumn()%>, "<%=dbmsId %>")<%if(convertToLowercase){%>.toLowerCase()<%}%>+") VALUES ("+DynamicUtils.getInsertIntoStmtValuesList(<%=conn.getName()%>.<%=getDynamicColumn()%>)+")";
<% <%
} }
} }

View File

@@ -99,3 +99,5 @@ SPECIFY_DATASOURCE_ALIAS.NAME=Specify a data source alias
DATASOURCE.NAME=Data source DATASOURCE.NAME=Data source
DATASOURCE_ALIAS.NAME=Data source alias DATASOURCE_ALIAS.NAME=Data source alias
PROPERTIES.NAME=Additional JDBC Parameters PROPERTIES.NAME=Additional JDBC Parameters
CONVERT_COLUMN_TABLE_TO_LOWERCASE.NAME=Convert columns and table to lowercase

View File

@@ -5,6 +5,7 @@
Boolean isParallelize ="true".equalsIgnoreCase(ElementParameterParser.getValue(node, "__PARALLELIZE__")); Boolean isParallelize ="true".equalsIgnoreCase(ElementParameterParser.getValue(node, "__PARALLELIZE__"));
String dbms=ElementParameterParser.getValue(node, "__MAPPING__"); String dbms=ElementParameterParser.getValue(node, "__MAPPING__");
boolean convertToUppercase_tableAction = "true".equalsIgnoreCase(ElementParameterParser.getValue(node, "__CONVERT_COLUMN_TABLE_TO_UPPERCASE__")); boolean convertToUppercase_tableAction = "true".equalsIgnoreCase(ElementParameterParser.getValue(node, "__CONVERT_COLUMN_TABLE_TO_UPPERCASE__"));
boolean convertToLowercase_tableAction = "true".equalsIgnoreCase(ElementParameterParser.getValue(node, "__CONVERT_COLUMN_TABLE_TO_LOWERCASE__"));
if (!isParallelize) { if (!isParallelize) {
//end issue 0010346 Parallelization crash with "Drop table if exists and create" //end issue 0010346 Parallelization crash with "Drop table if exists and create"
@@ -222,7 +223,7 @@ if (!isParallelize) {
while(rsTable_<%=cid%>.next()) { while(rsTable_<%=cid%>.next()) {
String table_<%=cid%> = rsTable_<%=cid%>.getString("TABLE_NAME"); String table_<%=cid%> = rsTable_<%=cid%>.getString("TABLE_NAME");
String schema_<%=cid%> = rsTable_<%=cid%>.getString("TABLE_SCHEM"); String schema_<%=cid%> = rsTable_<%=cid%>.getString("TABLE_SCHEM");
if(table_<%=cid%>.equals<%if(!tableNameCaseSensitive){%>IgnoreCase<%}%>(<%=table%>) if(table_<%=cid%>.equals<%if(!tableNameCaseSensitive){%>IgnoreCase<%}%>(<%=table%><%if(convertToLowercase_tableAction){%>.toLowerCase()<%}%>)
&& (schema_<%=cid%>.equals<%if(!tableNameCaseSensitive){%>IgnoreCase<%}%>(dbschema_<%=cid%>) || ((dbschema_<%=cid%> ==null || dbschema_<%=cid%>.trim().length() ==0) && defaultSchema_<%=cid%>.equals<%if(!tableNameCaseSensitive){%>IgnoreCase<%}%>(schema_<%=cid%>)))) { && (schema_<%=cid%>.equals<%if(!tableNameCaseSensitive){%>IgnoreCase<%}%>(dbschema_<%=cid%>) || ((dbschema_<%=cid%> ==null || dbschema_<%=cid%>.trim().length() ==0) && defaultSchema_<%=cid%>.equals<%if(!tableNameCaseSensitive){%>IgnoreCase<%}%>(schema_<%=cid%>)))) {
whetherExist_<%=cid%> = true; whetherExist_<%=cid%> = true;
break; break;
@@ -377,7 +378,7 @@ if (!isParallelize) {
if(conns_dynamic!=null && conns_dynamic.size()>0){ if(conns_dynamic!=null && conns_dynamic.size()>0){
String query=manager.getCreateTableSQL(stmtStructure); String query=manager.getCreateTableSQL(stmtStructure);
%> %>
stmtCreate_<%=cid%>.execute((("<%=query%>").replace("{TALEND_DYNAMIC_COLUMN}",DynamicUtils.getCreateTableSQL(<%=conns_dynamic.get(0).getName()%>.<%=getDynamicColumn()%>, "<%=dbms==null?"":dbms.toLowerCase()%>")<%if(convertToUppercase_tableAction){%>.toUpperCase()<%}%>)+")<%=ending%>")); stmtCreate_<%=cid%>.execute((("<%=query%>").replace("{TALEND_DYNAMIC_COLUMN}",DynamicUtils.getCreateTableSQL(<%=conns_dynamic.get(0).getName()%>.<%=getDynamicColumn()%>, "<%=dbms==null?"":dbms.toLowerCase()%>"))+")<%=ending%>")<%if(convertToUppercase_tableAction){%>.toUpperCase()<%}else if(convertToLowercase_tableAction){%>.toLowerCase()<%}%>);
<% <%
} }
} else { } else {