/// * // * Copyright 1999-2012 Alibaba Group. // * // * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file /// except // * in compliance with the License. You may obtain a copy of the License at // * // * http://www.apache.org/licenses/LICENSE-2.0 // * // * Unless required by applicable law or agreed to in writing, software distributed under the /// License // * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either /// express // * or implied. See the License for the specific language governing permissions and limitations /// under // * the License. // */ /// ** // * (created at 2011-8-5) // */ // package fm.liu.timo.route; // // import fm.liu.timo.parser.util.Pair; // import fm.liu.timo.route.RouteResultsetNode; // import fm.liu.timo.route.hint.TimoHint; // import junit.framework.Assert; // import junit.framework.TestCase; // /// ** // * @author <a href="mailto:shuo.qius@alibaba-inc.com">QIU Shuo</a> // */ // public class TimoHintTest extends TestCase { // // public void testHint1() throws Exception { // String sql = " /*!timo: $dataNodeId =2.1, $table='offer'*/ select * "; // TimoHint hint = TimoHint.parserTimoHint(sql, 2); // Assert.assertEquals(" select * ", hint.getOutputSql()); // Assert.assertEquals("OFFER", hint.getTable()); // Assert.assertEquals(1, hint.getDataNodes().size()); // Assert.assertEquals(new Pair<Integer, Integer>(2, 1), hint.getDataNodes().get(0)); // // sql = " /*!timo: $dataNodeId=0.0, $table='offer'*/ select * "; // hint = TimoHint.parserTimoHint(sql, 0); // Assert.assertEquals(" select * ", hint.getOutputSql()); // Assert.assertEquals("OFFER", hint.getTable()); // Assert.assertEquals(1, hint.getDataNodes().size()); // Assert.assertEquals(new Pair<Integer, Integer>(0, 0), hint.getDataNodes().get(0)); // // sql = " /*!timo: $dataNodeId=0, $table='offer'*/ select * "; // hint = TimoHint.parserTimoHint(sql, 0); // Assert.assertEquals(" select * ", hint.getOutputSql()); // Assert.assertEquals("OFFER", hint.getTable()); // Assert.assertEquals(1, hint.getDataNodes().size()); // Assert.assertEquals(new Pair<Integer, Integer>(0, null), hint.getDataNodes().get(0)); // // sql = "/*!timo: $dataNodeId = [ 1,2,5.2] , $table = 'offer' */ select * "; // hint = TimoHint.parserTimoHint(sql, 0); // Assert.assertEquals(" select * ", hint.getOutputSql()); // Assert.assertEquals("OFFER", hint.getTable()); // Assert.assertEquals(3, hint.getDataNodes().size()); // // sql = "/*!timo: $partitionOperand=( 'member_id' = 'm1'), $table='offer'*/ select * "; // hint = TimoHint.parserTimoHint(sql, 0); // Assert.assertEquals(" select * ", hint.getOutputSql()); // Assert.assertEquals("OFFER", hint.getTable()); // Pair<String[], Object[][]> pair = hint.getPartitionOperand(); // Assert.assertEquals(1, pair.getKey().length); // Assert.assertEquals("MEMBER_ID", pair.getKey()[0]); // Assert.assertEquals(1, pair.getValue().length); // Assert.assertEquals(1, pair.getValue()[0].length); // Assert.assertEquals("m1", pair.getValue()[0][0]); // Assert.assertNull(hint.getDataNodes()); // // sql = "/*!timo:$partitionOperand = ( 'member_id' = ['m1' , 'm2' ] ), $table='offer' , $replica= /// 2*/ select * "; // hint = TimoHint.parserTimoHint(sql, 0); // Assert.assertEquals(" select * ", hint.getOutputSql()); // Assert.assertEquals("OFFER", hint.getTable()); // Assert.assertEquals(2, hint.getReplica()); // pair = hint.getPartitionOperand(); // Assert.assertEquals(1, pair.getKey().length); // Assert.assertEquals("MEMBER_ID", pair.getKey()[0]); // Assert.assertEquals(2, pair.getValue().length); // Assert.assertEquals(1, pair.getValue()[0].length); // Assert.assertEquals("m1", pair.getValue()[0][0]); // Assert.assertEquals("m2", pair.getValue()[1][0]); // Assert.assertNull(hint.getDataNodes()); // // sql = "/*!timo:$partitionOperand=('member_id'=['m1', 'm2']),$table='offer',$replica=2*/ select * /// "; // hint = TimoHint.parserTimoHint(sql, 0); // Assert.assertEquals(" select * ", hint.getOutputSql()); // Assert.assertEquals("OFFER", hint.getTable()); // Assert.assertEquals(2, hint.getReplica()); // pair = hint.getPartitionOperand(); // Assert.assertEquals(1, pair.getKey().length); // Assert.assertEquals("MEMBER_ID", pair.getKey()[0]); // Assert.assertEquals(2, pair.getValue().length); // Assert.assertEquals(1, pair.getValue()[0].length); // Assert.assertEquals("m1", pair.getValue()[0][0]); // Assert.assertEquals("m2", pair.getValue()[1][0]); // Assert.assertNull(hint.getDataNodes()); // // sql = "/*!timo:$partitionOperand = ( ['offer_id','group_id'] = [123,'3c']), $table='offer'*/ /// select * "; // hint = TimoHint.parserTimoHint(sql, 0); // Assert.assertEquals(" select * ", hint.getOutputSql()); // Assert.assertEquals("OFFER", hint.getTable()); // Assert.assertEquals((int) RouteResultsetNode.DEFAULT_REPLICA_INDEX, hint.getReplica()); // pair = hint.getPartitionOperand(); // Assert.assertEquals(2, pair.getKey().length); // Assert.assertEquals("OFFER_ID", pair.getKey()[0]); // Assert.assertEquals("GROUP_ID", pair.getKey()[1]); // Assert.assertEquals(1, pair.getValue().length); // Assert.assertEquals(2, pair.getValue()[0].length); // Assert.assertEquals(123L, pair.getValue()[0][0]); // Assert.assertEquals("3c", pair.getValue()[0][1]); // Assert.assertNull(hint.getDataNodes()); // // sql = "/*!timo:$partitionOperand=(['offer_id' , 'group_iD' ]=[ 123 , '3c' ]) ,$table = 'offer'*/ /// select * "; // hint = TimoHint.parserTimoHint(sql, 0); // Assert.assertEquals(" select * ", hint.getOutputSql()); // Assert.assertEquals("OFFER", hint.getTable()); // Assert.assertEquals((int) RouteResultsetNode.DEFAULT_REPLICA_INDEX, hint.getReplica()); // pair = hint.getPartitionOperand(); // Assert.assertEquals(2, pair.getKey().length); // Assert.assertEquals("OFFER_ID", pair.getKey()[0]); // Assert.assertEquals("GROUP_ID", pair.getKey()[1]); // Assert.assertEquals(1, pair.getValue().length); // Assert.assertEquals(2, pair.getValue()[0].length); // Assert.assertEquals(123L, pair.getValue()[0][0]); // Assert.assertEquals("3c", pair.getValue()[0][1]); // Assert.assertNull(hint.getDataNodes()); // // sql = "/*!timo:$partitionOperand=(['offer_id','group_id']=[123,'3c']),$table='offer'*/ select * /// "; // hint = TimoHint.parserTimoHint(sql, 0); // Assert.assertEquals(" select * ", hint.getOutputSql()); // Assert.assertEquals("OFFER", hint.getTable()); // Assert.assertEquals((int) RouteResultsetNode.DEFAULT_REPLICA_INDEX, hint.getReplica()); // pair = hint.getPartitionOperand(); // Assert.assertEquals(2, pair.getKey().length); // Assert.assertEquals("OFFER_ID", pair.getKey()[0]); // Assert.assertEquals("GROUP_ID", pair.getKey()[1]); // Assert.assertEquals(1, pair.getValue().length); // Assert.assertEquals(2, pair.getValue()[0].length); // Assert.assertEquals(123L, pair.getValue()[0][0]); // Assert.assertEquals("3c", pair.getValue()[0][1]); // Assert.assertNull(hint.getDataNodes()); // // sql = "/*!timo:$partitionOperand=(['offer_id','group_id']=[[123,'3c'],[234,'food']]), /// $table='offer'*/ select * "; // hint = TimoHint.parserTimoHint(sql, 0); // Assert.assertEquals(" select * ", hint.getOutputSql()); // Assert.assertEquals("OFFER", hint.getTable()); // Assert.assertEquals((int) RouteResultsetNode.DEFAULT_REPLICA_INDEX, hint.getReplica()); // pair = hint.getPartitionOperand(); // Assert.assertEquals(2, pair.getKey().length); // Assert.assertEquals("OFFER_ID", pair.getKey()[0]); // Assert.assertEquals("GROUP_ID", pair.getKey()[1]); // Assert.assertEquals(2, pair.getValue().length); // Assert.assertEquals(2, pair.getValue()[0].length); // Assert.assertEquals(2, pair.getValue()[1].length); // Assert.assertEquals(123L, pair.getValue()[0][0]); // Assert.assertEquals("3c", pair.getValue()[0][1]); // Assert.assertEquals(234L, pair.getValue()[1][0]); // Assert.assertEquals("food", pair.getValue()[1][1]); // Assert.assertNull(hint.getDataNodes()); // // sql = "/*!timo:$partitionOperand= ( [ 'ofFER_id','groUp_id' ]= [ [123,'3c'],[ 234,'food']] ), /// $table='offer'*/select * "; // hint = TimoHint.parserTimoHint(sql, 0); // Assert.assertEquals("select * ", hint.getOutputSql()); // Assert.assertEquals("OFFER", hint.getTable()); // Assert.assertEquals((int) RouteResultsetNode.DEFAULT_REPLICA_INDEX, hint.getReplica()); // pair = hint.getPartitionOperand(); // Assert.assertEquals(2, pair.getKey().length); // Assert.assertEquals("OFFER_ID", pair.getKey()[0]); // Assert.assertEquals("GROUP_ID", pair.getKey()[1]); // Assert.assertEquals(2, pair.getValue().length); // Assert.assertEquals(2, pair.getValue()[0].length); // Assert.assertEquals(2, pair.getValue()[1].length); // Assert.assertEquals(123L, pair.getValue()[0][0]); // Assert.assertEquals("3c", pair.getValue()[0][1]); // Assert.assertEquals(234L, pair.getValue()[1][0]); // Assert.assertEquals("food", pair.getValue()[1][1]); // Assert.assertNull(hint.getDataNodes()); // // sql = "/*!timo:$partitionOperand=(['offer_id']=[123,234]), $table='offer'*/ select * "; // hint = TimoHint.parserTimoHint(sql, 0); // Assert.assertEquals(" select * ", hint.getOutputSql()); // Assert.assertEquals("OFFER", hint.getTable()); // Assert.assertEquals((int) RouteResultsetNode.DEFAULT_REPLICA_INDEX, hint.getReplica()); // pair = hint.getPartitionOperand(); // Assert.assertEquals(1, pair.getKey().length); // Assert.assertEquals("OFFER_ID", pair.getKey()[0]); // Assert.assertEquals(2, pair.getValue().length); // Assert.assertEquals(1, pair.getValue()[0].length); // Assert.assertEquals(1, pair.getValue()[1].length); // Assert.assertEquals(123L, pair.getValue()[0][0]); // Assert.assertEquals(234L, pair.getValue()[1][0]); // Assert.assertNull(hint.getDataNodes()); // } // // }