/*
* Copyright 1999-2017 Alibaba Group Holding Ltd.
*
* 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.
*/
package com.alibaba.druid.bvt.sql.mysql;
import org.junit.Assert;
import com.alibaba.druid.sql.visitor.ParameterizedOutputVisitorUtils;
import com.alibaba.druid.util.JdbcUtils;
import junit.framework.TestCase;
public class CobarHintsTest extends TestCase {
public void test_0 () throws Exception {
String sql = "/*!cobar: select,4,ireport.dm_mdm_mem_prod_noeff_sdt0.admin_member_seq=45654723*/ " +
"select product_id, noeff_days,total_cnt from (" +
"select product_id," +
" noeff_days," +
" count(*) over() as total_cnt " +
" from ( " +
" select product_id," +
" noeff_days " +
" from ireport.dm_mdm_mem_prod_noeff_sdt0" +
" where admin_member_seq = 45654723" +
") b Order by product_id desc ) a limit 25 offset (1-1)*20";
String mergedSql = ParameterizedOutputVisitorUtils.parameterize(sql, JdbcUtils.POSTGRESQL);
Assert.assertEquals("SELECT product_id, noeff_days, total_cnt"
+ "\nFROM (SELECT product_id, noeff_days, COUNT(*) OVER () AS total_cnt"
+ "\n\tFROM (SELECT product_id, noeff_days"
+ "\n\t\tFROM ireport.dm_mdm_mem_prod_noeff_sdt0"
+ "\n\t\tWHERE admin_member_seq = ?"
+ "\n\t\t) b"
+ "\n\tORDER BY product_id DESC"
+ "\n\t) a"
+ "\nLIMIT ? OFFSET (? - ?) * ?", mergedSql);
}
}