[#1890] Bad Postgres array serialisation when " or \ characters are

contained in a String[] - Added integration test
This commit is contained in:
Lukas Eder 2012-10-26 18:56:31 +02:00
parent 7397fd839e
commit c7936e68bb

View File

@ -411,7 +411,7 @@ extends BaseTest<A, AP, B, S, B2S, BS, L, X, DATE, BOOL, D, T, U, I, IPK, T725,
InsertQuery<?> insert = create().insertQuery(TArrays());
insert.addValue(TArrays_ID(), 5);
insert.addValueAsArray(TArrays_NUMBER_R(), 1, 2, 3);
insert.addValueAsArray(TArrays_STRING_R(), "a", "b", "c");
insert.addValueAsArray(TArrays_STRING_R(), "a", "b", "c", "d\"\\d");
insert.addValueAsArray(TArrays_DATE_R(), new Date(0), new Date(84600 * 1000), new Date(84600 * 2000));
insert.execute();
@ -423,7 +423,7 @@ extends BaseTest<A, AP, B, S, B2S, BS, L, X, DATE, BOOL, D, T, U, I, IPK, T725,
.where(TArrays_ID().equal(5))
.fetchOne();
assertEquals(Arrays.asList("a", "b", "c"), Arrays.asList(array.getValue(TArrays_STRING_R()).get()));
assertEquals(Arrays.asList("a", "b", "c", "d\"\\d"), Arrays.asList(array.getValue(TArrays_STRING_R()).get()));
assertEquals(Arrays.asList(1, 2, 3), Arrays.asList(array.getValue(TArrays_NUMBER_R()).get()));
assertEquals("[1970-01-01, 1970-01-02, 1970-01-03]", Arrays.asList(array.getValue(TArrays_DATE_R()).get()).toString());
@ -431,7 +431,7 @@ extends BaseTest<A, AP, B, S, B2S, BS, L, X, DATE, BOOL, D, T, U, I, IPK, T725,
UpdateQuery<X> update = create().updateQuery(TArrays());
update.addValueAsArray(TArrays_NUMBER_R(), 3, 2, 1);
update.addValueAsArray(TArrays_STRING_R(), "c", "b", "a");
update.addValueAsArray(TArrays_STRING_R(), "d\"\\d", "c", "b", "a");
update.addValueAsArray(TArrays_DATE_R(), new Date(84600 * 2000), new Date(84600 * 1000), new Date(0));
update.addConditions(TArrays_ID().equal(5));
update.execute();
@ -444,7 +444,7 @@ extends BaseTest<A, AP, B, S, B2S, BS, L, X, DATE, BOOL, D, T, U, I, IPK, T725,
.where(TArrays_ID().equal(5))
.fetchOne();
assertEquals(Arrays.asList("c", "b", "a"), Arrays.asList(array.getValue(TArrays_STRING_R()).get()));
assertEquals(Arrays.asList("d\"\\d", "c", "b", "a"), Arrays.asList(array.getValue(TArrays_STRING_R()).get()));
assertEquals(Arrays.asList(3, 2, 1), Arrays.asList(array.getValue(TArrays_NUMBER_R()).get()));
assertEquals("[1970-01-03, 1970-01-02, 1970-01-01]", Arrays.asList(array.getValue(TArrays_DATE_R()).get()).toString());
}
@ -557,7 +557,7 @@ extends BaseTest<A, AP, B, S, B2S, BS, L, X, DATE, BOOL, D, T, U, I, IPK, T725,
InsertQuery<?> insert = create().insertQuery(TArrays());
insert.addValue(TArrays_ID(), 5);
insert.addValue(TArrays_NUMBER(), new Integer[] { 1, 2, 3 });
insert.addValue(TArrays_STRING(), new String[] { "a", "b", "c" });
insert.addValue(TArrays_STRING(), new String[] { "a", "b", "c", "d\"\\d" });
insert.addValue(TArrays_DATE(), new Date[] { new Date(0), new Date(84600 * 1000), new Date(84600 * 2000)});
insert.execute();
@ -573,7 +573,7 @@ extends BaseTest<A, AP, B, S, B2S, BS, L, X, DATE, BOOL, D, T, U, I, IPK, T725,
s = (Object[]) array.getValue(0);
n = (Object[]) array.getValue(1);
d = (Object[]) array.getValue(2);
assertEquals(3, s.length);
assertEquals(4, s.length);
assertEquals(3, n.length);
assertEquals(3, d.length);
assertEquals(TArrays_STRING().getType(), s.getClass());
@ -582,6 +582,7 @@ extends BaseTest<A, AP, B, S, B2S, BS, L, X, DATE, BOOL, D, T, U, I, IPK, T725,
assertEquals("a", s[0].toString());
assertEquals("b", s[1].toString());
assertEquals("c", s[2].toString());
assertEquals("d\"\\d", s[3].toString());
assertEquals("1", n[0].toString());
assertEquals("2", n[1].toString());
assertEquals("3", n[2].toString());
@ -593,7 +594,7 @@ extends BaseTest<A, AP, B, S, B2S, BS, L, X, DATE, BOOL, D, T, U, I, IPK, T725,
UpdateQuery<X> update = create().updateQuery(TArrays());
update.addValue(TArrays_NUMBER(), new Integer[] { 3, 2, 1});
update.addValue(TArrays_STRING(), new String[] { "c", "b", "a" });
update.addValue(TArrays_STRING(), new String[] { "d\"\\d", "c", "b", "a" });
update.addValue(TArrays_DATE(), new Date[] { new Date(84600 * 2000), new Date(84600 * 1000), new Date(0) });
update.addConditions(TArrays_ID().equal(5));
update.execute();
@ -609,15 +610,16 @@ extends BaseTest<A, AP, B, S, B2S, BS, L, X, DATE, BOOL, D, T, U, I, IPK, T725,
s = (Object[]) array.getValue(0);
n = (Object[]) array.getValue(1);
d = (Object[]) array.getValue(2);
assertEquals(3, s.length);
assertEquals(4, s.length);
assertEquals(3, n.length);
assertEquals(3, d.length);
assertEquals(TArrays_STRING().getType(), s.getClass());
assertEquals(TArrays_NUMBER().getType(), n.getClass());
assertEquals(TArrays_DATE().getType(), d.getClass());
assertEquals("c", s[0].toString());
assertEquals("b", s[1].toString());
assertEquals("a", s[2].toString());
assertEquals("d\"\\d", s[0].toString());
assertEquals("c", s[1].toString());
assertEquals("b", s[2].toString());
assertEquals("a", s[3].toString());
assertEquals("3", n[0].toString());
assertEquals("2", n[1].toString());
assertEquals("1", n[2].toString());