If I have a field with customSQL="true", then I cannot sort on this field, even if the customFields attribute is set. I get an sql exception.
Entrypoint:
simpleTable.ds.xml:
Error:
Using smartgwt power 6.0-p20160408
Entrypoint:
Code:
public void onModuleLoad() { VStack vStack = new VStack(20); vStack.setWidth100(); final ListGrid lg = new ListGrid(); ListGridField nameField = new ListGridField("f_name", "Name"); ListGridField vornameField = new ListGridField("f_vorname", "Vorname"); lg.setDataSource(DataSource.get("simpleTable")); lg.setFields(nameField, vornameField); lg.setSortField("f_vorname"); lg.setWidth100(); lg.setHeight100(); lg.fetchData(); lg.draw(); }
Code:
<DataSource ID="simpleTable" serverType="sql" tableName="t_schueler"> <fields> <field name="f_schueler_id" type="sequence" primaryKey="true" /> <field name="f_name" type="text" /> <field name="f_vorname" type="text" customSQL="true" /> </fields> <operationBindings> <operationBinding operationType="fetch" customFields="f_vorname"> <tableClause><![CDATA[ t_schueler ]]></tableClause> </operationBinding> </operationBindings> </DataSource>
Code:
=== 2016-05-05 20:11:32,402 [ec-1] DEBUG XML - Parsed XML from (in memory stream): 1ms === 2016-05-05 20:11:32,402 [ec-1] DEBUG ISCKeyedObjectPool - Borrowing object for 'transaction' === 2016-05-05 20:11:32,402 [ec-1] DEBUG PoolableDataSourceFactory - Tried to create DataSource of type 'transaction' but null was returned === 2016-05-05 20:11:32,402 [ec-1] DEBUG PoolableDataSourceFactory - Created DataSource null of type 'transaction' in the pooling flow === 2016-05-05 20:11:32,402 [ec-1] DEBUG ISCKeyedObjectPool - Borrowing object for 'Object' === 2016-05-05 20:11:32,402 [ec-1] DEBUG PoolableDataSourceFactory - Created DataSource 659 of type 'Object' and assigned it to thread http-nio-8080-exec-1 === 2016-05-05 20:11:32,402 [ec-1] DEBUG PoolableDataSourceFactory - Created DataSource 659 of type 'Object' in the pooling flow === 2016-05-05 20:11:32,402 [ec-1] DEBUG PoolableDataSourceFactory - Activated DataSource 659 of type 'Object' === 2016-05-05 20:11:32,402 [ec-1] DEBUG ISCKeyedObjectPool - Borrowing object for 'List' === 2016-05-05 20:11:32,403 [ec-1] DEBUG PoolableDataSourceFactory - Created DataSource 660 of type 'List' and assigned it to thread http-nio-8080-exec-1 === 2016-05-05 20:11:32,403 [ec-1] DEBUG PoolableDataSourceFactory - Created DataSource 660 of type 'List' in the pooling flow === 2016-05-05 20:11:32,403 [ec-1] DEBUG PoolableDataSourceFactory - Activated DataSource 660 of type 'List' === 2016-05-05 20:11:32,403 [ec-1] DEBUG ISCKeyedObjectPool - Borrowing object for 'elem' === 2016-05-05 20:11:32,403 [ec-1] DEBUG PoolableDataSourceFactory - Tried to create DataSource of type 'elem' but null was returned === 2016-05-05 20:11:32,403 [ec-1] DEBUG PoolableDataSourceFactory - Created DataSource null of type 'elem' in the pooling flow === 2016-05-05 20:11:32,403 [ec-1] DEBUG RPCManager - Processing 1 requests. === 2016-05-05 20:11:32,403 [ec-1] DEBUG ISCKeyedObjectPool - Borrowing object for 'simpleTable' === 2016-05-05 20:11:32,403 [ec-1] DEBUG PoolableDataSourceFactory - Activated DataSource 463 of type 'simpleTable' === 2016-05-05 20:11:32,403 [ec-1] DEBUG DSRequest - Caching instance 463 of DS 'simpleTable' from DSRequest.getDataSource() === 2016-05-05 20:11:32,403 [ec-1] DEBUG DSRequest - Caching instance 463 of DS simpleTable === 2016-05-05 20:11:32,403 [ec-1] DEBUG RPCManager - Request #1 (DSRequest) payload: { criteria:{ }, operationConfig:{ dataSource:"simpleTable", repo:null, operationType:"fetch", textMatchStyle:"exact" }, startRow:0, endRow:119, sortBy:[ "f_vorname" ], componentId:"isc_ListGrid_0", appID:"builtinApplication", operation:"simpleTable_fetch", oldValues:{ } } === 2016-05-05 20:11:32,404 [ec-1] INFO IDACall - Key[type=com.isomorphic.servlet.IDACall, annotation=[none]] - Performing 1 operation(s) === 2016-05-05 20:11:32,404 [ec-1] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null === 2016-05-05 20:11:32,404 [ec-1] DEBUG DeclarativeSecurity - DataSource simpleTable is not in the pre-checked list, processing... === 2016-05-05 20:11:32,404 [ec-1] DEBUG AppBase - [builtinApplication.simpleTable_fetch] No userTypes defined, allowing anyone access to all operations for this application === 2016-05-05 20:11:32,404 [ec-1] DEBUG AppBase - [builtinApplication.simpleTable_fetch] No public zero-argument method named '_simpleTable_fetch' found, performing generic datasource operation === 2016-05-05 20:11:32,404 [ec-1] INFO SQLDataSource - [builtinApplication.simpleTable_fetch] Performing fetch operation with criteria: {} values: {} === 2016-05-05 20:11:32,404 [ec-1] INFO SQLWhereClause - [builtinApplication.simpleTable_fetch] empty condition === 2016-05-05 20:11:32,404 [ec-1] INFO SQLDataSource - [builtinApplication.simpleTable_fetch] derived query: SELECT $defaultSelectClause FROM t_schueler WHERE $defaultWhereClause ORDER BY $defaultOrderClause === 2016-05-05 20:11:32,405 [ec-1] DEBUG SQLDataSource - [builtinApplication.simpleTable_fetch] Executing row count query: SELECT COUNT(*) FROM t_schueler === 2016-05-05 20:11:32,405 [ec-1] DEBUG SQLDataSource - [builtinApplication.simpleTable_fetch] Eval'd row count query: SELECT COUNT(*) FROM t_schueler === 2016-05-05 20:11:32,405 [ec-1] DEBUG SQLConnectionManager - [builtinApplication.simpleTable_fetch] Borrowed connection '206945717' === 2016-05-05 20:11:32,406 [ec-1] DEBUG SQLTransaction - [builtinApplication.simpleTable_fetch] Started new SQLSERVER transaction "206945717" === 2016-05-05 20:11:32,406 [ec-1] DEBUG SQLDataSource - [builtinApplication.simpleTable_fetch] Setting DSRequest as being part of a transaction === 2016-05-05 20:11:32,406 [ec-1] INFO SQLDriver - [builtinApplication.simpleTable_fetch] Executing SQL query on 'SQLSERVER' using connection '206945717': SELECT COUNT(*) FROM t_schueler === 2016-05-05 20:11:32,408 [ec-1] DEBUG SQLDataSource - [builtinApplication.simpleTable_fetch] Using SQL Limit query === 2016-05-05 20:11:32,408 [ec-1] DEBUG SQLDataSource - [builtinApplication.simpleTable_fetch] SQL windowed select rows 0->119, result size 119. Query: SELECT * FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY t_schueler.f_vorname) AS rowID FROM (SELECT TOP 100 PERCENT t_schueler.f_schueler_id, t_schueler.f_name, t_schueler.f_vorname FROM t_schueler WHERE ('1'='1') ORDER BY t_schueler.f_vorname) x) y WHERE y.rowID BETWEEN 1 AND 119 === 2016-05-05 20:11:32,408 [ec-1] DEBUG SQLDataSource - [builtinApplication.simpleTable_fetch] SQL windowed select rows 0->119, result size 119. Query: SELECT * FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY t_schueler.f_vorname) AS rowID FROM (SELECT TOP 100 PERCENT t_schueler.f_schueler_id, t_schueler.f_name, t_schueler.f_vorname FROM t_schueler WHERE ('1'='1') ORDER BY t_schueler.f_vorname) x) y WHERE y.rowID BETWEEN 1 AND 119 === 2016-05-05 20:11:32,408 [ec-1] DEBUG SQLDataSource - [builtinApplication.simpleTable_fetch] Setting DSRequest as being part of a transaction === 2016-05-05 20:11:32,409 [ec-1] DEBUG DSRequest - freeOnExecute is false for request of type fetch on DataSource simpleTable - not freeing resources! === 2016-05-05 20:11:32,409 [ec-1] WARN RequestContext - dsRequest.execute() failed: com.microsoft.sqlserver.jdbc.SQLServerException: The multi-part identifier "t_schueler.f_vorname" could not be bound. at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:217) at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1635) at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:865) at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:762) at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:6276) at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1793) at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:184) at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:159) at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeQuery(SQLServerStatement.java:661) at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208) at com.isomorphic.sql.SQLDataSource.executeWindowedSelect(SQLDataSource.java:2730) at com.isomorphic.sql.SQLDataSource.SQLExecute(SQLDataSource.java:2009) at com.isomorphic.sql.SQLDataSource.processRequest(SQLDataSource.java:447) at com.isomorphic.sql.SQLDataSource.executeFetch(SQLDataSource.java:392) at com.isomorphic.datasource.DataSource.execute(DataSource.java:2236) at com.isomorphic.application.AppBase.executeDefaultDSOperation(AppBase.java:735) at com.isomorphic.application.AppBase.executeAppOperation(AppBase.java:652) at com.isomorphic.application.AppBase.execute(AppBase.java:493) at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:2689) at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:228) at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:187) at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:152) at com.isomorphic.servlet.IDACall._processRequest(IDACall.java:119) at com.isomorphic.servlet.IDACall.doPost(IDACall.java:79) at javax.servlet.http.HttpServlet.service(HttpServlet.java:648) at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:162) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263) at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178) at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62) at de.mks_infofabrik.kids.server.filter.GWTCacheControlFilter.doFilter(GWTCacheControlFilter.java:50) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) at com.isomorphic.servlet.CompressionFilter._doFilter(CompressionFilter.java:260) at com.isomorphic.servlet.BaseFilter.doFilter(BaseFilter.java:88) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118) at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) === 2016-05-05 20:11:32,410 [ec-1] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8 === 2016-05-05 20:11:32,410 [ec-1] DEBUG SQLTransaction - Rolling back SQLSERVER transaction "206945717" === 2016-05-05 20:11:32,411 [ec-1] DEBUG RPCManager - non-DMI response, dropExtraFields: false === 2016-05-05 20:11:32,411 [ec-1] DEBUG SQLTransaction - getConnection() looked for transactional connection for SQLSERVER: hashcode "206945717" === 2016-05-05 20:11:32,411 [ec-1] DEBUG SQLTransaction - Ending SQLSERVER transaction "206945717" === 2016-05-05 20:11:32,412 [ec-1] DEBUG SQLConnectionManager - About to close connection with hashcode "206945717" === 2016-05-05 20:11:32,412 [ec-1] DEBUG PoolableSQLConnectionFactory - Passivating connection '206945717 === 2016-05-05 20:11:32,412 [ec-1] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 463 === 2016-05-05 20:11:32,412 [ec-1] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 463 === 2016-05-05 20:11:32,412 [ec-1] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 463 === 2016-05-05 20:11:32,412 [ec-1] DEBUG PoolableDataSourceFactory - Cleared and passivated DataSource 463 of type 'simpleTable'
Comment