bug fix [ 1652623 ] AccessSqlParser.getTableInfo(String) - tablename parsing bug
This commit is contained in:
parent
baf877e3b2
commit
7baf3f45c9
|
@ -23,6 +23,11 @@ import org.compiere.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse FROM in SQL WHERE clause
|
* Parse FROM in SQL WHERE clause
|
||||||
|
* <p>
|
||||||
|
* Change log:
|
||||||
|
* <ul>
|
||||||
|
* <li>2007-02-10 - teo_sarca - [ 1652623 ] AccessSqlParser.getTableInfo(String) - tablename parsing bug
|
||||||
|
* </ul>
|
||||||
*
|
*
|
||||||
* @author Jorg Janke
|
* @author Jorg Janke
|
||||||
* @version $Id: AccessSqlParser.java,v 1.3 2006/07/30 00:58:36 jjanke Exp $
|
* @version $Id: AccessSqlParser.java,v 1.3 2006/07/30 00:58:36 jjanke Exp $
|
||||||
|
@ -250,7 +255,7 @@ public class AccessSqlParser
|
||||||
while (tableST.hasMoreTokens())
|
while (tableST.hasMoreTokens())
|
||||||
{
|
{
|
||||||
String tableString = tableST.nextToken().trim();
|
String tableString = tableST.nextToken().trim();
|
||||||
StringTokenizer synST = new StringTokenizer (tableString, " ");
|
StringTokenizer synST = new StringTokenizer (tableString, " \r\n\t"); // teo_sarca [ 1652623 ] AccessSqlParser.getTableInfo(String) - tablename parsing bug
|
||||||
TableInfo tableInfo = null;
|
TableInfo tableInfo = null;
|
||||||
if (synST.countTokens() > 1)
|
if (synST.countTokens() > 1)
|
||||||
tableInfo = new TableInfo(synST.nextToken(), synST.nextToken());
|
tableInfo = new TableInfo(synST.nextToken(), synST.nextToken());
|
||||||
|
|
|
@ -208,6 +208,21 @@ public class AccessSqlParserTest extends TestCase
|
||||||
String sql = "SELECT XX_HTC1_EMPLOYEE_V.C_BPartner_ID,NULL,XX_HTC1_EMPLOYEE_V.C_BPARTNER_NAME,XX_HTC1_EMPLOYEE_V.IsActive FROM XX_HTC1_EMPLOYEE_V WHERE XX_HTC1_EMPLOYEE_V.AD_User_ID IN (SELECT ur.AD_User_ID FROM AD_User_Roles ur INNER JOIN AD_Role r ON (ur.AD_Role_ID=r.AD_Role_ID) WHERE r.Name like '%Field Manager%')";
|
String sql = "SELECT XX_HTC1_EMPLOYEE_V.C_BPartner_ID,NULL,XX_HTC1_EMPLOYEE_V.C_BPARTNER_NAME,XX_HTC1_EMPLOYEE_V.IsActive FROM XX_HTC1_EMPLOYEE_V WHERE XX_HTC1_EMPLOYEE_V.AD_User_ID IN (SELECT ur.AD_User_ID FROM AD_User_Roles ur INNER JOIN AD_Role r ON (ur.AD_Role_ID=r.AD_Role_ID) WHERE r.Name like '%Field Manager%')";
|
||||||
AccessSqlParser fixture = new AccessSqlParser(sql);
|
AccessSqlParser fixture = new AccessSqlParser(sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* teo_sarca - [ 1652623 ] AccessSqlParser.getTableInfo(String) - tablename parsing bug
|
||||||
|
*/
|
||||||
|
public void testTableNameParsing()
|
||||||
|
{
|
||||||
|
String sql =
|
||||||
|
"SELECT SUM(il.QtyInvoiced)\n"
|
||||||
|
+ "FROM RV_C_Invoice\n"
|
||||||
|
+ "C_Invoice\n"
|
||||||
|
+ "INNER JOIN RV_C_InvoiceLine il ON (C_Invoice.C_Invoice_ID=il.C_Invoice_ID) WHERE\n"
|
||||||
|
+ "C_Invoice.IsSOTrx='Y' AND C_Invoice.Processed='Y' AND C_Invoice.IsPaid='Y'";
|
||||||
|
AccessSqlParser fixture = new AccessSqlParser(sql);
|
||||||
|
assertEquals("AccessSqlParser[RV_C_Invoice=C_Invoice|0]", fixture.toString());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue