/*
* JBoss, Home of Professional Open Source.
* See the COPYRIGHT.txt file distributed with this work for information
* regarding copyright ownership. Some portions may be licensed
* to Red Hat, Inc. under one or more contributor license agreements.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*/
package org.teiid.translator.couchbase;
import static org.junit.Assert.*;
import static org.teiid.translator.couchbase.TestCouchbaseMetadataProcessor.formOder;
import java.util.HashMap;
import java.util.List;
import org.junit.Test;
import org.teiid.core.TeiidRuntimeException;
import org.teiid.language.Command;
import org.teiid.translator.TranslatorException;
import com.couchbase.client.java.document.json.JsonArray;
import com.couchbase.client.java.document.json.JsonObject;
@SuppressWarnings("nls")
public class TestN1QLUpdateVisitor extends TestVisitor {
private void helpTest(String sql, String key) throws TranslatorException {
Command command = translationUtility.parseCommand(sql);
N1QLUpdateVisitor visitor = TRANSLATOR.getN1QLUpdateVisitor();
visitor.append(command);
String actual = visitor.toString();
if(PRINT_TO_CONSOLE.booleanValue()) {
System.out.println(actual);
}
if(REPLACE_EXPECTED.booleanValue()) {
N1QL.put(key.toString(), actual);
}
assertEquals(key, N1QL.getProperty(key, ""), actual);
}
@Test
public void testInsert() throws TranslatorException {
String sql = "INSERT INTO Customer VALUES ('customer-1', 'Customer_12346', 'Customer', 'Kylin Soong')";
helpTest(sql, "N1QL1401");
sql = "INSERT INTO Customer (documentID, ID, Name, type) VALUES ('customer-1', 'Customer_12346', 'Kylin Soong', 'Customer')";
helpTest(sql, "N1QL1402");
sql = "INSERT INTO Oder VALUES ('order-1', 'Customer_12345', 'Oder', '4111 1111 1111 111', 'Visa', 123, '12/12', 'Air Ticket')";
helpTest(sql, "N1QL1403");
sql = "INSERT INTO Oder (documentID, CustomerID, type, CreditCard_CardNumber, CreditCard_Type, CreditCard_CVN, CreditCard_Expiry, Name) VALUES ('order-1', 'Customer_12345', 'Oder', '4111 1111 1111 111', 'Visa', 123, '12/12', 'Air Ticket')";
helpTest(sql, "N1QL1404");
sql = "INSERT INTO Customer (ID, Name, type) VALUES ('Customer_12346', 'Kylin Soong', 'Customer')";
try {
helpTest(sql, "N1QL1405");
} catch (Exception e) {
assertEquals(TeiidRuntimeException.class, e.getClass());
}
sql = "INSERT INTO Customer (documentID) VALUES ('customer-1')"; // empty document
helpTest(sql, "N1QL1406");
sql = "INSERT INTO Oder (CustomerID, type, CreditCard_CardNumber, CreditCard_Type, CreditCard_CVN, CreditCard_Expiry, Name) VALUES ('Customer_12345', 'Oder', '4111 1111 1111 111', 'Visa', 123, '12/12', 'Air Ticket')";
try {
helpTest(sql, "N1QL1407");
} catch (Exception e) {
assertEquals(TeiidRuntimeException.class, e.getClass());
}
sql = "INSERT INTO Oder (documentID) VALUES ('order-1')"; // empty document
helpTest(sql, "N1QL1408");
sql = "INSERT INTO Customer_SavedAddresses VALUES ('customer-1', 2, 'Beijing')";
helpTest(sql, "N1QL1409");
sql = "INSERT INTO Customer_SavedAddresses (documentID, Customer_SavedAddresses_idx, Customer_SavedAddresses) VALUES ('customer-1', 2, 'Beijing')";
helpTest(sql, "N1QL1410");
sql = "INSERT INTO Oder_Items VALUES ('order-1', 2, 5, 92312)";
helpTest(sql, "N1QL1411");
sql = "INSERT INTO Oder_Items (documentID, Oder_Items_idx, Oder_Items_Quantity, Oder_Items_ItemID) VALUES ('order-1', 2, 5, 92312)";
helpTest(sql, "N1QL1412");
}
@Test
public void testInsertNestedArray() throws TranslatorException {
String sql = "INSERT INTO T3_nestedArray_dim2_dim3_dim4 VALUES ('nestedArray', 1, 1, 1, 1, 'Hello World')";
helpTest(sql, "N1QL1501");
sql = "INSERT INTO T3_nestedArray_dim2_dim3_dim4 (documentID, T3_nestedArray_idx, T3_nestedArray_dim2_idx, T3_nestedArray_dim2_dim3_idx, T3_nestedArray_dim2_dim3_dim4_idx, T3_nestedArray_dim2_dim3_dim4) VALUES ('nestedArray', 1, 1, 1, 1, 'Hello World')";
helpTest(sql, "N1QL1502");
sql = "INSERT INTO T3_nestedArray_dim2_dim3 (documentID, T3_nestedArray_idx, T3_nestedArray_dim2_idx, T3_nestedArray_dim2_dim3_idx, T3_nestedArray_dim2_dim3) VALUES ('nestedArray', 1, 1, 1, 'Hello World')";
helpTest(sql, "N1QL1503");
sql = "INSERT INTO T3_nestedArray_dim2_dim3 VALUES ('nestedArray', 1, 1, 1, 'Hello World')";
helpTest(sql, "N1QL1504");
sql = "INSERT INTO T3_nestedArray_dim2 (documentID, T3_nestedArray_idx, T3_nestedArray_dim2_idx, T3_nestedArray_dim2) VALUES ('nestedArray', 1, 1, 'Hello World')";
helpTest(sql, "N1QL1505");
sql = "INSERT INTO T3_nestedArray_dim2 VALUES ('nestedArray', 1, 1, 'Hello World')";
helpTest(sql, "N1QL1506");
sql = "INSERT INTO T3_nestedArray (documentID, T3_nestedArray_idx, T3_nestedArray) VALUES ('nestedArray', 1, 'Hello World')";
helpTest(sql, "N1QL1507");
sql = "INSERT INTO T3_nestedArray VALUES ('nestedArray', 1, 'Hello World')";
helpTest(sql, "N1QL1508");
sql = "INSERT INTO T3_nestedArray_dim2 (T3_nestedArray_idx, T3_nestedArray_dim2_idx, T3_nestedArray_dim2) VALUES (1, 1, 'Hello World')";
try {
helpTest(sql, "N1QL1509");
} catch (TeiidRuntimeException e) {
assertEquals(TeiidRuntimeException.class, e.getClass());
}
sql = "INSERT INTO T3_nestedArray_dim2 (documentID, T3_nestedArray_idx, T3_nestedArray_dim2) VALUES ('nestedArray', 1, 'Hello World')";
try {
helpTest(sql, "N1QL1510");
} catch (TeiidRuntimeException e) {
assertEquals(TeiidRuntimeException.class, e.getClass());
}
}
@Test
public void testDelete() throws TranslatorException {
String sql = "DELETE FROM Customer WHERE documentID = 'customer-5'";
helpTest(sql, "N1QL1601");
sql = "DELETE FROM Customer WHERE documentID = 'customer-5' AND ID = 'Customer_10000' AND type = 'Customer'";
helpTest(sql, "N1QL1602");
sql = "DELETE FROM Customer WHERE ID = 'Customer_10000'";
helpTest(sql, "N1QL1603");
sql = "DELETE FROM Customer WHERE ID = 'Customer_10000' AND type = 'Customer'";
helpTest(sql, "N1QL1604");
sql = "DELETE FROM Customer WHERE ID = 'Customer_10000' AND type = 'Customer' AND Name = 'Kylin Soong'";
helpTest(sql, "N1QL1605");
sql = "DELETE FROM Customer_SavedAddresses WHERE documentID = 'customer-3' AND Customer_SavedAddresses_idx = 1";
helpTest(sql, "N1QL1606");
sql = "DELETE FROM Customer_SavedAddresses WHERE Customer_SavedAddresses_idx = 2";
try {
helpTest(sql, "N1QL1607");
} catch (TeiidRuntimeException e) {
assertEquals(TeiidRuntimeException.class, e.getClass());
}
sql = "DELETE FROM Oder WHERE documentID = 'order-3'";
helpTest(sql, "N1QL1608");
sql = "DELETE FROM Oder WHERE documentID = 'order-3' AND CustomerID = 'Customer_12346' AND Name = 'Air Ticket' AND type = 'Order' AND CreditCard_CVN = 123 AND CreditCard_CardNumber = '4111 1111 1111 111' AND CreditCard_Expiry = '12/12' AND CreditCard_Type = 'Visa'";
helpTest(sql, "N1QL1609");
sql = "DELETE FROM Oder WHERE CustomerID = 'Customer_12346'";
helpTest(sql, "N1QL1610");
sql = "DELETE FROM Oder WHERE CustomerID = 'Customer_12346' AND Name = 'Air Ticket' AND type = 'Order' AND CreditCard_CVN = 123 AND CreditCard_CardNumber = '4111 1111 1111 111' AND CreditCard_Expiry = '12/12' AND CreditCard_Type = 'Visa'";
helpTest(sql, "N1QL1611");
sql = "DELETE FROM Oder_Items WHERE documentID = 'order-3' AND Oder_Items_idx = 2";
helpTest(sql, "N1QL1612");
sql = "DELETE FROM Oder_Items WHERE Oder_Items_idx = 2";
try {
helpTest(sql, "N1QL1613");
} catch (TeiidRuntimeException e) {
assertEquals(TeiidRuntimeException.class, e.getClass());
}
}
@Test
public void testDelete_1() throws TranslatorException {
String sql = "DELETE FROM Oder WHERE documentID = 'order-3' AND (CreditCard_Type = 'Visa' OR CreditCard_CVN > 100)";
helpTest(sql, "N1QL1621");
sql = "DELETE FROM Oder WHERE CustomerID = 'Customer_12346' AND (CreditCard_Type = 'Visa' OR CreditCard_CVN > 100)";
helpTest(sql, "N1QL1622");
sql = "DELETE FROM Oder WHERE (CreditCard_CardNumber = '4111 1111 1111 111' OR CreditCard_Type = 'Visa') AND (CreditCard_CVN > 100 OR CreditCard_Expiry = '12/12') AND CustomerID = 'Customer_12346'";
helpTest(sql, "N1QL1623");
sql = "DELETE FROM Oder WHERE (CreditCard_CardNumber = '4111 1111 1111 111' AND CreditCard_Type = 'Visa') OR (CreditCard_CVN > 100 AND CreditCard_Expiry = '12/12') OR CustomerID = 'Customer_12346'";
helpTest(sql, "N1QL1624");
}
@Test
public void testDelete_2() throws TranslatorException {
String sql = "DELETE FROM Oder_Items WHERE documentID = 'order-1' AND Oder_Items_idx = 0 AND Oder_Items_ItemID = 89123 AND Oder_Items_Quantity = 1";
helpTest(sql, "N1QL1631");
sql = "DELETE FROM Oder_Items WHERE documentID = 'order-1' AND Oder_Items_idx = 0 AND Oder_Items_ItemID = 89123";
helpTest(sql, "N1QL1632");
sql = "DELETE FROM Oder_Items WHERE documentID = 'order-1' AND Oder_Items_idx = 0 AND (Oder_Items_ItemID = 89123 OR Oder_Items_Quantity = 1)";
helpTest(sql, "N1QL1633");
sql = "DELETE FROM Oder_Items WHERE documentID = 'order-1' AND Oder_Items_idx = 0 AND Oder_Items_ItemID > 80000 AND Oder_Items_Quantity > 0";
helpTest(sql, "N1QL1634");
sql = "DELETE FROM Oder_Items WHERE documentID = 'order-1' AND Oder_Items_idx = 0 AND (Oder_Items_ItemID > 80000 OR Oder_Items_Quantity > 0)";
helpTest(sql, "N1QL1635");
sql = "UDELETE FROM Oder_Items WHERE documentID = 'order-1' AND Oder_Items_idx > 0";
try {
helpTest(sql, "N1QL1636");
} catch (TeiidRuntimeException e) {
assertEquals(TeiidRuntimeException.class, e.getClass());
}
sql = "DELETE FROM Oder_Items WHERE documentID = 'order-1' AND Oder_Items_idx = 0 AND Oder_Items_ItemID > 80000 OR Oder_Items_Quantity > 0";
try {
helpTest(sql, "N1QL1637");
} catch (TeiidRuntimeException e) {
assertEquals(TeiidRuntimeException.class, e.getClass());
}
}
@Test
public void testDeleteNestedArray() throws TranslatorException {
String sql = "DELETE FROM T3_nestedArray_dim2_dim3_dim4 WHERE documentID = 'nestedArray' AND T3_nestedArray_idx = 1 AND T3_nestedArray_dim2_idx = 1 AND T3_nestedArray_dim2_dim3_idx = 1 AND T3_nestedArray_dim2_dim3_dim4_idx = 3";
helpTest(sql, "N1QL1701");
sql = "DELETE FROM T3_nestedArray_dim2_dim3_dim4 WHERE documentID = 'nestedArray' AND T3_nestedArray_idx = 1 AND T3_nestedArray_dim2_idx = 1 AND T3_nestedArray_dim2_dim3_idx = 1 AND T3_nestedArray_dim2_dim3_dim4_idx = 1";
helpTest(sql, "N1QL1702");
sql = "DELETE FROM T3_nestedArray_dim2_dim3_dim4 WHERE documentID = 'nestedArray' AND T3_nestedArray_idx = 1 AND T3_nestedArray_dim2_idx = 1 AND T3_nestedArray_dim2_dim3_idx = 1 AND T3_nestedArray_dim2_dim3_dim4_idx = 0";
helpTest(sql, "N1QL1703");
sql = "DELETE FROM T3_nestedArray_dim2_dim3 WHERE documentID = 'nestedArray' AND T3_nestedArray_idx = 1 AND T3_nestedArray_dim2_idx = 1 AND T3_nestedArray_dim2_dim3_idx = 1";
helpTest(sql, "N1QL1704");
sql = "DELETE FROM T3_nestedArray_dim2_dim3 WHERE documentID = 'nestedArray' AND T3_nestedArray_idx = 1 AND T3_nestedArray_dim2_idx = 1 AND T3_nestedArray_dim2_dim3_idx = 0";
helpTest(sql, "N1QL1705");
sql = "DELETE FROM T3_nestedArray_dim2 WHERE documentID = 'nestedArray' AND T3_nestedArray_idx = 1 AND T3_nestedArray_dim2_idx = 1";
helpTest(sql, "N1QL1706");
sql = "DELETE FROM T3_nestedArray_dim2 WHERE documentID = 'nestedArray' AND T3_nestedArray_idx = 1 AND T3_nestedArray_dim2_idx = 0";
helpTest(sql, "N1QL1707");
sql = "DELETE FROM T3_nestedArray WHERE documentID = 'nestedArray' AND T3_nestedArray_idx = 1";
helpTest(sql, "N1QL1708");
sql = "DELETE FROM T3_nestedArray WHERE documentID = 'nestedArray' AND T3_nestedArray_idx = 0";
helpTest(sql, "N1QL1709");
sql = "DELETE FROM T3_nestedArray_dim2_dim3_dim4 WHERE T3_nestedArray_idx = 1 AND T3_nestedArray_dim2_idx = 1 AND T3_nestedArray_dim2_dim3_idx = 1 AND T3_nestedArray_dim2_dim3_dim4_idx = 1";
try {
helpTest(sql, "N1QL1710");
} catch (TeiidRuntimeException e) {
assertEquals(TeiidRuntimeException.class, e.getClass());
}
sql = "DELETE FROM T3_nestedArray_dim2_dim3 WHERE T3_nestedArray_idx = 1 AND T3_nestedArray_dim2_idx = 1 AND T3_nestedArray_dim2_dim3_idx = 1";
try {
helpTest(sql, "N1QL1711");
} catch (TeiidRuntimeException e) {
assertEquals(TeiidRuntimeException.class, e.getClass());
}
sql = "DELETE FROM T3_nestedArray_dim2 WHERE T3_nestedArray_idx = 1 AND T3_nestedArray_dim2_idx = 1";
try {
helpTest(sql, "N1QL1712");
} catch (TeiidRuntimeException e) {
assertEquals(TeiidRuntimeException.class, e.getClass());
}
sql = "DELETE FROM T3_nestedArray WHERE T3_nestedArray_idx = 1";
try {
helpTest(sql, "N1QL1713");
} catch (TeiidRuntimeException e) {
assertEquals(TeiidRuntimeException.class, e.getClass());
}
}
@Test
public void testUpdate() throws TranslatorException {
String sql = "UPDATE Customer SET Name = 'John Doe' WHERE documentID = 'customer-5'";
helpTest(sql, "N1QL1801");
sql = "UPDATE Customer SET Name = 'John Doe' WHERE documentID = 'customer-5' AND ID = 'Customer_10000' AND Name = 'Kylin Soong' AND type = 'Customer'";
helpTest(sql, "N1QL1802");
sql = "UPDATE Customer SET Name = 'John Doe' WHERE ID = 'Customer_10000' AND Name = 'Kylin Soong' AND type = 'Customer'";
helpTest(sql, "N1QL1803");
sql = "UPDATE Customer SET Name = 'John Doe' WHERE ID = 'Customer_10000'";
helpTest(sql, "N1QL1804");
sql = "UPDATE Oder SET CreditCard_CVN = 100 WHERE documentID = 'order-3'" ;
helpTest(sql, "N1QL1805");
sql = "UPDATE Oder SET CreditCard_CVN = 100 WHERE CustomerID = 'Customer_12346'" ;
helpTest(sql, "N1QL1806");
sql = "UPDATE Oder SET CreditCard_CVN = 100, CreditCard_CardNumber = '4111 1111 1111 112', CreditCard_Expiry = '14/12' WHERE CustomerID = 'Customer_12346'" ;
helpTest(sql, "N1QL1807");
sql = "UPDATE Oder SET CreditCard_CVN = 100, CreditCard_CardNumber = '4111 1111 1111 111', CreditCard_Expiry = '12/12' WHERE documentID = 'order-3' AND CustomerID = 'Customer_12346'" ;
helpTest(sql, "N1QL1808");
sql = "UPDATE Customer_SavedAddresses SET Customer_SavedAddresses = 'Beijing' WHERE documentID = 'customer-5' AND Customer_SavedAddresses_idx = 0";
helpTest(sql, "N1QL1809");
sql = "UPDATE Oder_Items SET Oder_Items_ItemID = 80000, Oder_Items_Quantity = 10 WHERE documentID = 'order-3' AND Oder_Items_idx = 0";
helpTest(sql, "N1QL1810");
}
@Test
public void testUpdate_1() throws TranslatorException {
String sql = "UPDATE Customer SET Name = ucase(documentID) WHERE documentID = 'customer-5'";
helpTest(sql, "N1QL1811");
sql = "UPDATE Customer SET Name = ucase(documentID) WHERE ID = 'Customer_12345'";
helpTest(sql, "N1QL1812");
sql = "UPDATE Customer SET Name = type WHERE documentID = 'customer-5'";
helpTest(sql, "N1QL1813");
sql = "UPDATE Customer SET Name = type WHERE ID = 'Customer_12345'";
helpTest(sql, "N1QL1814");
}
@Test
public void testUpdate_2() throws TranslatorException {
String sql = "UPDATE Oder SET Name = 'Train Ticket' WHERE documentID = 'order-3' AND (CreditCard_Type = 'Visa' OR CreditCard_CVN > 100)";
helpTest(sql, "N1QL1815");
sql = "UPDATE Oder SET Name = 'Train Ticket' WHERE CustomerID = 'Customer_12346' AND (CreditCard_Type = 'Visa' OR CreditCard_CVN > 100)";
helpTest(sql, "N1QL1816");
sql = "UPDATE Oder SET Name = 'Train Ticket' WHERE (CreditCard_CardNumber = '4111 1111 1111 111' OR CreditCard_Type = 'Visa') AND (CreditCard_CVN > 100 OR CreditCard_Expiry = '12/12') AND CustomerID = 'Customer_12346'";
helpTest(sql, "N1QL1817");
sql = "UPDATE Oder SET Name = 'Train Ticket' WHERE (CreditCard_CardNumber = '4111 1111 1111 111' AND CreditCard_Type = 'Visa') OR (CreditCard_CVN > 100 AND CreditCard_Expiry = '12/12') OR CustomerID = 'Customer_12346'";
helpTest(sql, "N1QL1818");
}
@Test
public void testUpdateNestedArray() throws TranslatorException {
String sql = "UPDATE T3_nestedArray_dim2_dim3_dim4 SET T3_nestedArray_dim2_dim3_dim4 = 'Hello Teiid' WHERE documentID = 'nestedArray' AND T3_nestedArray_idx = 1 AND T3_nestedArray_dim2_idx = 1 AND T3_nestedArray_dim2_dim3_idx = 1 AND T3_nestedArray_dim2_dim3_dim4_idx = 3";
helpTest(sql, "N1QL1901");
sql = "UPDATE T3_nestedArray_dim2_dim3 SET T3_nestedArray_dim2_dim3 = 'Hello Teiid' WHERE documentID = 'nestedArray' AND T3_nestedArray_idx = 1 AND T3_nestedArray_dim2_idx = 1 AND T3_nestedArray_dim2_dim3_idx = 1";
helpTest(sql, "N1QL1902");
sql = "UPDATE T3_nestedArray_dim2 SET T3_nestedArray_dim2 = 'Hello Teiid' WHERE documentID = 'nestedArray' AND T3_nestedArray_idx = 1 AND T3_nestedArray_dim2_idx = 1";
helpTest(sql, "N1QL1903");
sql = "UPDATE T3_nestedArray SET T3_nestedArray = 'Hello Teiid' WHERE documentID = 'nestedArray' AND T3_nestedArray_idx = 1";
helpTest(sql, "N1QL1904");
}
@Test
public void testUpdateNestedArray_1() throws TranslatorException {
String sql = "UPDATE Oder_Items SET Oder_Items_ItemID = 80000, Oder_Items_Quantity = 10 WHERE documentID = 'order-1' AND Oder_Items_idx = 0 AND Oder_Items_ItemID = 89123 AND Oder_Items_Quantity = 1";
helpTest(sql, "N1QL1911");
sql = "UPDATE Oder_Items SET Oder_Items_ItemID = 80000 WHERE documentID = 'order-1' AND Oder_Items_idx = 0 AND Oder_Items_ItemID = 89123 AND Oder_Items_Quantity = 1";
helpTest(sql, "N1QL1912");
sql = "UPDATE Oder_Items SET Oder_Items_Quantity = 10 WHERE documentID = 'order-1' AND Oder_Items_idx = 0 AND Oder_Items_ItemID = 89123 AND Oder_Items_Quantity = 1";
helpTest(sql, "N1QL1913");
sql = "UPDATE Oder_Items SET Oder_Items_ItemID = 80000, Oder_Items_Quantity = 10 WHERE documentID = 'order-1' AND Oder_Items_idx = 0 AND Oder_Items_ItemID = 89123";
helpTest(sql, "N1QL1914");
sql = "UPDATE Oder_Items SET Oder_Items_ItemID = 80000 WHERE documentID = 'order-1' AND Oder_Items_idx = 0 AND Oder_Items_ItemID = 89123";
helpTest(sql, "N1QL1915");
sql = "UPDATE Oder_Items SET Oder_Items_Quantity = 10 WHERE documentID = 'order-1' AND Oder_Items_idx = 0 AND Oder_Items_ItemID = 89123";
helpTest(sql, "N1QL1916");
sql = "UPDATE Oder_Items SET Oder_Items_ItemID = 80000, Oder_Items_Quantity = 10 WHERE documentID = 'order-1' AND Oder_Items_idx = 0 AND Oder_Items_ItemID > 80000 AND Oder_Items_Quantity > 0";
helpTest(sql, "N1QL1917");
sql = "UPDATE Oder_Items SET Oder_Items_ItemID = 80000, Oder_Items_Quantity = 10 WHERE documentID = 'order-1' AND Oder_Items_idx = 0 AND (Oder_Items_ItemID > 80000 OR Oder_Items_Quantity > 0)";
helpTest(sql, "N1QL1918");
sql = "UPDATE Oder_Items SET Oder_Items_ItemID = 80000, Oder_Items_Quantity = 10 WHERE documentID = 'order-1' AND Oder_Items_idx > 0";
try {
helpTest(sql, "N1QL1919");
} catch (TeiidRuntimeException e) {
assertEquals(TeiidRuntimeException.class, e.getClass());
}
sql = "UPDATE Oder_Items SET Oder_Items_ItemID = 80000, Oder_Items_Quantity = 10 WHERE documentID = 'order-1' AND Oder_Items_idx = 0 AND Oder_Items_ItemID > 80000 OR Oder_Items_Quantity > 0";
try {
helpTest(sql, "N1QL1920");
} catch (TeiidRuntimeException e) {
assertEquals(TeiidRuntimeException.class, e.getClass());
}
}
@Test
public void testUpdateNestedArray_2() throws TranslatorException {
String sql = "UPDATE Oder_Items SET Oder_Items_ItemID = Oder_Items_Quantity WHERE documentID = 'order-3' AND Oder_Items_idx = 0";
helpTest(sql, "N1QL1921");
sql = "UPDATE Customer_SavedAddresses SET Customer_SavedAddresses = ucase(documentID) WHERE documentID = 'customer-5' AND Customer_SavedAddresses_idx = 0";
helpTest(sql, "N1QL1922");
}
@Test
public void testUpsert() throws TranslatorException {
String sql = "UPSERT INTO Customer VALUES ('customer-1', 'Customer_12346', 'Customer', 'Kylin Soong')";
helpTest(sql, "N1QL2001");
sql = "UPSERT INTO Customer (documentID, ID, Name, type) VALUES ('customer-1', 'Customer_12346', 'Kylin Soong', 'Customer')";
helpTest(sql, "N1QL2002");
sql = "UPSERT INTO Oder VALUES ('order-1', 'Customer_12345', 'Oder', '4111 1111 1111 111', 'Visa', 123, '12/12', 'Air Ticket')";
helpTest(sql, "N1QL2003");
sql = "UPSERT INTO Oder (documentID, CustomerID, type, CreditCard_CardNumber, CreditCard_Type, CreditCard_CVN, CreditCard_Expiry, Name) VALUES ('order-1', 'Customer_12345', 'Oder', '4111 1111 1111 111', 'Visa', 123, '12/12', 'Air Ticket')";
helpTest(sql, "N1QL2004");
sql = "UPSERT INTO Customer_SavedAddresses VALUES ('customer-1', 2, 'Beijing')";
helpTest(sql, "N1QL2005");
sql = "UPSERT INTO Customer_SavedAddresses (documentID, Customer_SavedAddresses_idx, Customer_SavedAddresses) VALUES ('customer-1', 2, 'Beijing')";
helpTest(sql, "N1QL2006");
sql = "UPSERT INTO Oder_Items VALUES ('order-1', 2, 5, 92312)";
helpTest(sql, "N1QL2007");
sql = "UPSERT INTO Oder_Items (documentID, Oder_Items_idx, Oder_Items_Quantity, Oder_Items_ItemID) VALUES ('order-1', 2, 5, 92312)";
helpTest(sql, "N1QL2008");
}
@Test
public void testSourceModel() {
JsonObject json = JsonObject.create();
assertNull(json.get("x"));
}
@Test
public void testNestedJsonArrayType() {
JsonObject order = formOder();
JsonArray jsonArray = order.getArray("Items");
List<Object> items = jsonArray.toList();
for(int i = 0 ; i < items.size() ; i ++){
Object item = items.get(i);
assertEquals(item.getClass(), HashMap.class);
}
for(int i = 0 ; i < jsonArray.size() ; i ++) {
Object item = jsonArray.get(i);
assertEquals(item.getClass(), JsonObject.class);
}
}
}