This thread is related to the other one but I give it a separate thread to make the question more apparent.
http://forums.smartclient.com/showthread.php?t=33046
I have a data source with multiple operationBinding's. It has been working well until I add one more operationBinding with skipRowCount set to true.
The first operationBinding (with Id="RsUseQueryNonProgressive") worked perfectly, but the second operationBinding (with Id="RsUseQuerySkipRowCount") did not work.
First of all, I noticed that even I had specified skipRowCount="true", I still saw that SmartGWT issued a counting query.
And then the query also ignored the tableClause -- it should have say "from nara_db.rs358223955 as env" but it didn't -- it just said "from env", which is wrong and caused an SQL error of "com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'dw_db.env' doesn't exist"
Below is the debug log I obtained.
To show why the above was wrong, I am also showing the debug log for the other operationBinding that worked well. For this one, the equivalent debug log was:
Our environment:
1. SmartClient Version: v10.0p_2015-02-03/PowerEdition Deployment (built 2015-02-03)
2. Browser: (not applicable)
3. Server log: (not applicable)
http://forums.smartclient.com/showthread.php?t=33046
I have a data source with multiple operationBinding's. It has been working well until I add one more operationBinding with skipRowCount set to true.
Code:
<DataSource ID="rs358223955" serverType="sql" progressiveLoading="false" progressiveLoadingThreshold="-1" tableName="env" > <fields> ... </fields> <operationBindings> <operationBinding operationType="fetch" operationId="RsUseQueryNonProgressive" progressiveLoading="false" > <selectClause><![CDATA[ env.timeDate as timeDate , env.app as app , env.totalBytesRatioInSysTotal as totalBytesRatioInSysTotal , env.downBytesRatioInSysTotal as downBytesRatioInSysTotal , env.pktLossRate as pktLossRate , env.downThruput as downThruput , env.satDownThruput as satDownThruput ]]></selectClause> <tableClause>nara_db.rs358223955 as env </tableClause> </operationBinding> <operationBinding operationType="fetch" operationId="RsUseQuerySkipRowCount" progressiveLoading="false" skipRowCount="true" > <selectClause><![CDATA[ env.timeDate as timeDate , env.app as app , env.totalBytesRatioInSysTotal as totalBytesRatioInSysTotal , env.downBytesRatioInSysTotal as downBytesRatioInSysTotal , env.pktLossRate as pktLossRate , env.downThruput as downThruput , env.satDownThruput as satDownThruput ]]></selectClause> <tableClause>nara_db.rs358223955 as env </tableClause> </operationBinding> ... </operationBindings> </DataSource>
First of all, I noticed that even I had specified skipRowCount="true", I still saw that SmartGWT issued a counting query.
And then the query also ignored the tableClause -- it should have say "from nara_db.rs358223955 as env" but it didn't -- it just said "from env", which is wrong and caused an SQL error of "com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'dw_db.env' doesn't exist"
Below is the debug log I obtained.
Code:
=== 2015-06-17 17:50:33,757 [6-35] INFO SQLDataSource - Performing fetch operation with criteria: {} values: {} === 2015-06-17 17:50:33,757 [6-35] INFO SQLWhereClause - empty condition === 2015-06-17 17:50:33,757 [6-35] INFO SQLDataSource - derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause ORDER BY $defaultOrderClause === 2015-06-17 17:50:33,758 [6-35] DEBUG SQLDataSource - Executing row count query: SELECT COUNT(*) FROM $defaultTableClause WHERE $defaultWhereClause === 2015-06-17 17:50:33,758 [6-35] DEBUG SQLDataSource - Eval'd row count query: SELECT COUNT(*) FROM env WHERE ('1'='1') === 2015-06-17 17:50:33,758 [6-35] DEBUG SQLDriver - About to execute SQL query in 'central_aware_db_4100' using connection '1259753404' === 2015-06-17 17:50:33,758 [6-35] INFO SQLDriver - Executing SQL query on 'central_aware_db_4100': SELECT COUNT(*) FROM env WHERE ('1'='1') === 2015-06-17 17:50:33,763 [6-35] INFO SQLDriver - Execute of select: SELECT COUNT(*) FROM env WHERE ('1'='1') on db: central_aware_db_4100 threw exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'dw_db.env' doesn't exist - assuming stale connection and retrying query.
Code:
=== 2015-06-17 17:47:45,303 [6-35] DEBUG SQLDataSource - Executing row count query: SELECT COUNT(*) FROM nara_db.rs358223955 as env WHERE $defaultWhereClause === 2015-06-17 17:47:45,303 [6-35] DEBUG SQLDataSource - Eval'd row count query: SELECT COUNT(*) FROM nara_db.rs358223955 as env WHERE ('1'='1') === 2015-06-17 17:47:45,303 [6-35] DEBUG PoolableSQLConnectionFactory - Executing pingTest 'select 1 from dual' on connection 1259753404 === 2015-06-17 17:47:45,326 [6-35] DEBUG SQLConnectionManager - Borrowed connection '1259753404' === 2015-06-17 17:47:45,326 [6-35] DEBUG SQLDriver - About to execute SQL query in 'central_aware_db_4100' using connection '1259753404' === 2015-06-17 17:47:45,326 [6-35] INFO SQLDriver - Executing SQL query on 'central_aware_db_4100': SELECT COUNT(*) FROM nara_db.rs358223955 as env WHERE ('1'='1')
1. SmartClient Version: v10.0p_2015-02-03/PowerEdition Deployment (built 2015-02-03)
2. Browser: (not applicable)
3. Server log: (not applicable)
Comment