未验证 提交 002f0141 编写于 作者: J Joan Augsburger 提交者: GitHub

fix(cutlass): pg-wire - bound parameters in nodejs fix #290 (#566)

上级 c35a04e8
......@@ -1872,7 +1872,7 @@ public class PGJobContextTest extends AbstractGriffinTest {
@Test
public void testInsertTableDoesNotExistPrepared() throws Exception {
testInsertTableDoesNotExist(false, "Cannot append. File does not exist");
testInsertTableDoesNotExist(false, "table 'x' does not exist");
}
@Test
......@@ -2171,6 +2171,182 @@ public class PGJobContextTest extends AbstractGriffinTest {
});
}
@Test
public void testCharIntLongDoubleBooleanParametersWithoutExplicitParameterTypeHex() throws Exception {
String script = ">0000006e00030000757365720078797a0064617461626173650071646200636c69656e745f656e636f64696e67005554463800446174655374796c650049534f0054696d655a6f6e65004575726f70652f4c6f6e646f6e0065787472615f666c6f61745f64696769747300320000\n" +
"<520000000800000003\n" +
">70000000076f6800\n" +
"<520000000800000000530000001154696d655a6f6e6500474d5400530000001d6170706c69636174696f6e5f6e616d6500517565737444420053000000187365727665725f76657273696f6e0031312e33005300000019696e74656765725f6461746574696d6573006f6e005300000019636c69656e745f656e636f64696e670055544638005a0000000549\n" +
">50000000300073656c65637420782c202024312c2024322066726f6d206c6f6e675f73657175656e63652832293b000000\n" +
">4200000021000000010000000200000001330000000a353030303030303030300000\n" +
">44000000065000\n" +
">45000000090000000000\n" +
">4800000004\n" +
"<31000000043200000004540000004400037800000040010001000000140004ffffffff0000243100000040010002000000170004ffffffff0000243200000040010003000000140004ffffffff0000440000001e0003000000013100000001330000000a35303030303030303030440000001e0003000000013200000001330000000a35303030303030303030430000000d53454c454354203200\n";
assertHexScript(NetworkFacadeImpl.INSTANCE,
NetworkFacadeImpl.INSTANCE,
script,
new DefaultPGWireConfiguration() {
@Override
public String getDefaultPassword() {
return "oh";
}
@Override
public String getDefaultUsername() {
return "xyz";
}
});
}
@Test
public void testInferringBadParamenterWithoutExplicitParameterTypeHex2() throws Exception {
String script = ">0000006e00030000757365720078797a0064617461626173650071646200636c69656e745f656e636f64696e67005554463800446174655374796c650049534f0054696d655a6f6e65004575726f70652f4c6f6e646f6e0065787472615f666c6f61745f64696769747300320000\n" +
"<520000000800000003\n" +
">70000000076f6800\n" +
"<520000000800000000530000001154696d655a6f6e6500474d5400530000001d6170706c69636174696f6e5f6e616d6500517565737444420053000000187365727665725f76657273696f6e0031312e33005300000019696e74656765725f6461746574696d6573006f6e005300000019636c69656e745f656e636f64696e670055544638005a0000000549\n" +
">50000000300073656c65637420782c202024312c2024322066726f6d206c6f6e675f73657175656e63652832293b000000\n" +
">4200000021000000010000000200000001000000000a353030303030303030300000\n" +
"<!!";
assertHexScript(NetworkFacadeImpl.INSTANCE,
NetworkFacadeImpl.INSTANCE,
script,
new DefaultPGWireConfiguration() {
@Override
public String getDefaultPassword() {
return "oh";
}
@Override
public String getDefaultUsername() {
return "xyz";
}
});
}
@Test
public void testHappyPathForIntParameterWithoutExplicitParameterTypeHex() throws Exception {
String script = ">0000006e00030000757365720078797a0064617461626173650071646200636c69656e745f656e636f64696e67005554463800446174655374796c650049534f0054696d655a6f6e65004575726f70652f4c6f6e646f6e0065787472615f666c6f61745f64696769747300320000\n" +
"<520000000800000003\n" +
">70000000076f6800\n" +
"<520000000800000000530000001154696d655a6f6e6500474d5400530000001d6170706c69636174696f6e5f6e616d6500517565737444420053000000187365727665725f76657273696f6e0031312e33005300000019696e74656765725f6461746574696d6573006f6e005300000019636c69656e745f656e636f64696e670055544638005a0000000549\n" +
">500000002c0073656c65637420782c202024312066726f6d206c6f6e675f73657175656e63652832293b000000\n" +
">420000001100000000000100000001330000\n" +
">44000000065000\n" +
">45000000090000000000\n" +
">4800000004\n" +
"<31000000043200000004540000002f00027800000040010001000000140004ffffffff0000243100000040010002000000170004ffffffff000044000000100002000000013100000001334400000010000200000001320000000133430000000d53454c454354203200\n";
assertHexScript(NetworkFacadeImpl.INSTANCE,
NetworkFacadeImpl.INSTANCE,
script,
new DefaultPGWireConfiguration() {
@Override
public String getDefaultPassword() {
return "oh";
}
@Override
public String getDefaultUsername() {
return "xyz";
}
});
}
@Test
public void testIntAndLongParametersWithoutExplicitParameterTypeButOneExplicitTextFormatHex() throws Exception {
String script = ">0000006e00030000757365720078797a0064617461626173650071646200636c69656e745f656e636f64696e67005554463800446174655374796c650049534f0054696d655a6f6e65004575726f70652f4c6f6e646f6e0065787472615f666c6f61745f64696769747300320000\n" +
"<520000000800000003\n" +
">70000000076f6800\n" +
"<520000000800000000530000001154696d655a6f6e6500474d5400530000001d6170706c69636174696f6e5f6e616d6500517565737444420053000000187365727665725f76657273696f6e0031312e33005300000019696e74656765725f6461746574696d6573006f6e005300000019636c69656e745f656e636f64696e670055544638005a0000000549\n" +
">50000000300073656c65637420782c202024312c2024322066726f6d206c6f6e675f73657175656e63652832293b000000\n" +
">4200000021000000010000000200000001330000000a353030303030303030300000\n" +
">44000000065000\n" +
">45000000090000000000\n" +
">4800000004\n" +
"<31000000043200000004540000004400037800000040010001000000140004ffffffff0000243100000040010002000000170004ffffffff0000243200000040010003000000140004ffffffff0000440000001e0003000000013100000001330000000a35303030303030303030440000001e0003000000013200000001330000000a35303030303030303030430000000d53454c454354203200\n";
assertHexScript(NetworkFacadeImpl.INSTANCE,
NetworkFacadeImpl.INSTANCE,
script,
new DefaultPGWireConfiguration() {
@Override
public String getDefaultPassword() {
return "oh";
}
@Override
public String getDefaultUsername() {
return "xyz";
}
});
}
@Test
public void testIntParameterWithoutExplicitParameterTypeButExplicitTextFormatHex() throws Exception {
String script = ">0000006e00030000757365720078797a0064617461626173650071646200636c69656e745f656e636f64696e67005554463800446174655374796c650049534f0054696d655a6f6e65004575726f70652f4c6f6e646f6e0065787472615f666c6f61745f64696769747300320000\n" +
"<520000000800000003\n" +
">70000000076f6800\n" +
"<520000000800000000530000001154696d655a6f6e6500474d5400530000001d6170706c69636174696f6e5f6e616d6500517565737444420053000000187365727665725f76657273696f6e0031312e33005300000019696e74656765725f6461746574696d6573006f6e005300000019636c69656e745f656e636f64696e670055544638005a0000000549\n" +
">500000002c0073656c65637420782c202024312066726f6d206c6f6e675f73657175656e63652832293b000000\n" +
">4200000013000000010000000100000001330000\n" +
">44000000065000\n" +
">45000000090000000000\n" +
">4800000004\n" +
"<31000000043200000004540000002f00027800000040010001000000140004ffffffff0000243100000040010002000000170004ffffffff000044000000100002000000013100000001334400000010000200000001320000000133430000000d53454c454354203200\n";
assertHexScript(NetworkFacadeImpl.INSTANCE,
NetworkFacadeImpl.INSTANCE,
script,
new DefaultPGWireConfiguration() {
@Override
public String getDefaultPassword() {
return "oh";
}
@Override
public String getDefaultUsername() {
return "xyz";
}
});
}
@Test
public void testSendingBufferWhenFlushMessageReceivedeHex() throws Exception {
String script = ">0000006e00030000757365720078797a0064617461626173650071646200636c69656e745f656e636f64696e67005554463800446174655374796c650049534f0054696d655a6f6e65004575726f70652f4c6f6e646f6e0065787472615f666c6f61745f64696769747300320000\n" +
"<520000000800000003\n" +
">70000000076f6800\n" +
"<520000000800000000530000001154696d655a6f6e6500474d5400530000001d6170706c69636174696f6e5f6e616d6500517565737444420053000000187365727665725f76657273696f6e0031312e33005300000019696e74656765725f6461746574696d6573006f6e005300000019636c69656e745f656e636f64696e670055544638005a0000000549\n" +
">500000002c0073656c65637420782c202024312066726f6d206c6f6e675f73657175656e63652832293b000000\n" +
">420000001100000000000100000001330000\n" +
">44000000065000\n" +
">45000000090000000000\n" +
">4800000004\n" +
"<31000000043200000004540000002f00027800000040010001000000140004ffffffff0000243100000040010002000000170004ffffffff000044000000100002000000013100000001334400000010000200000001320000000133430000000d53454c454354203200\n" +
">4800000004\n" +
">5300000004\n" +
"<5a0000000549\n" +
">5800000004";
assertHexScript(NetworkFacadeImpl.INSTANCE,
NetworkFacadeImpl.INSTANCE,
script,
new DefaultPGWireConfiguration() {
@Override
public String getDefaultPassword() {
return "oh";
}
@Override
public String getDefaultUsername() {
return "xyz";
}
});
}
private void testInsertTableDoesNotExist(boolean simple, String expectedError) throws Exception {
// we are going to:
// 1. create a table
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册