Skip to content

Commit

Permalink
IDEMPIERE-5305 : ORA-01704: string literal too long when trying to up…
Browse files Browse the repository at this point in the history
…date a mail template (idempiere#1353)
  • Loading branch information
nmicoud authored and CarlosRuiz-globalqss committed Aug 14, 2023
1 parent 5b24585 commit ac05389
Showing 1 changed file with 8 additions and 15 deletions.
23 changes: 8 additions & 15 deletions org.adempiere.base/src/org/compiere/model/PO.java
Expand Up @@ -3799,26 +3799,16 @@ && is_ValueChanged(p_info.getColumnName(i)))
.append(tableName).append("_Trl SET ");

//
ArrayList<Object> values = new ArrayList<Object>();
StringBuilder sqlcols = new StringBuilder();
for (int i = 0; i < p_info.getColumnCount(); i++)
{
String columnName = p_info.getColumnName(i);
if (p_info.isColumnTranslated(i)
&& is_ValueChanged(columnName))
{
sqlcols.append(columnName).append("=");
Object value = get_Value(columnName);
if (value == null)
sqlcols.append("NULL");
else if (value instanceof String)
sqlcols.append(DB.TO_STRING((String)value));
else if (value instanceof Boolean)
sqlcols.append(((Boolean)value).booleanValue() ? "'Y'" : "'N'");
else if (value instanceof Timestamp)
sqlcols.append(DB.TO_DATE((Timestamp)value));
else
sqlcols.append(value.toString());
sqlcols.append(",");
sqlcols.append(columnName).append("=?,");
values.add(get_Value(columnName));

// Reset of related translation cache entries
String[] availableLanguages = Language.getNames();
Expand All @@ -3838,6 +3828,9 @@ else if (value instanceof Timestamp)
int no = -1;

try {
Object[] params = new Object[values.size()];
values.toArray(params);

if (client.isMultiLingualDocument()) {
if (client.getAD_Language().equals(baselang)) {
// tenant language = base language
Expand All @@ -3858,7 +3851,7 @@ else if (value instanceof Timestamp)
.append("IsTranslated='Y'")
.append(whereid)
.append(getAD_Client_ID() == 0 ? andBaseLang : andClientLang);
no = DB.executeUpdateEx(sqlexec.toString(), m_trxName);
no = DB.executeUpdateEx(sqlexec.toString(), params, m_trxName);
if (log.isLoggable(Level.FINE)) log.fine("#" + no);
if (no >= 0) {
// set other translations as untranslated
Expand All @@ -3879,7 +3872,7 @@ else if (value instanceof Timestamp)
.append(sqlcols)
.append("IsTranslated='Y'")
.append(whereid);
no = DB.executeUpdateEx(sqlexec.toString(), m_trxName);
no = DB.executeUpdateEx(sqlexec.toString(), params, m_trxName);
if (log.isLoggable(Level.FINE)) log.fine("#" + no);
}
} catch (DBException e) {
Expand Down

0 comments on commit ac05389

Please sign in to comment.