-
Notifications
You must be signed in to change notification settings - Fork 77
Expand file tree
/
Copy pathtestModifyPGSP.java
More file actions
58 lines (50 loc) · 2.14 KB
/
Copy pathtestModifyPGSP.java
File metadata and controls
58 lines (50 loc) · 2.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package scriptWriter;
import gudusoft.gsqlparser.EDbVendor;
import gudusoft.gsqlparser.TCustomSqlStatement;
import gudusoft.gsqlparser.TGSqlParser;
import gudusoft.gsqlparser.TStatementList;
import gudusoft.gsqlparser.nodes.TExpression;
import gudusoft.gsqlparser.nodes.TResultColumn;
import gudusoft.gsqlparser.stmt.*;
import junit.framework.TestCase;
public class testModifyPGSP extends TestCase
{
public void testModifyBody() {
String sql = "create or replace procedure yb_stage.transfer()\n" +
"language plpgsql \n" +
"as $$\n" +
"begin\n" +
" update yb_stage.widetabletest2 \n" +
" set r9 = 1000\n" +
" where pk_id = 206041839059439594;\n" +
"end;\n" +
"$$";
TGSqlParser parser = new TGSqlParser(EDbVendor.dbvpostgresql);
parser.sqltext = sql;
int ret = parser.parse();
if (ret != 0) {
System.err.println("Error parsing:" + parser.getErrormessage());
assertTrue(false);
}
TCustomSqlStatement tCustomSqlStatement = parser.getSqlstatements().get(0);
TCreateProcedureStmt stmt = (TCreateProcedureStmt) tCustomSqlStatement;
TStatementList bodyStatements = stmt.getBodyStatements();
TUpdateSqlStatement statement = (TUpdateSqlStatement) bodyStatements.get(0);
TResultColumn resultColumn = statement.getResultColumnList().getResultColumn(0);
TExpression expr = resultColumn.getExpr();
String oldBody = statement.toString();
//update value
expr.getRightOperand().setString("2000");
//Replace sqltext in ${sqltext}$
String newSql = tCustomSqlStatement.toString().replace(oldBody, statement.toString());
assertEquals(newSql, "create or replace procedure yb_stage.transfer()\n" +
"language plpgsql \n" +
"as $$\n" +
"begin\n" +
" update yb_stage.widetabletest2 \n" +
" set r9 = 2000\n" +
" where pk_id = 206041839059439594;\n" +
"end;\n" +
"$$");
}
}