The Table property "Filter out all existing rows?" is meant for "Form only access" apps where the user simply needs to submit data and never has access to view the entries. In a large corporate system where we have data entry divided among user roles, there are times when we need the "Form only access" feature in apps that have full functionality.
For example, I might have a back office function to enter missing data on a users behalf and, it being a complex function, want to leverage the feature built in another app. I can currently do this but the problem is that it requires a transition to the other app that understandably fires a Sync subject to Security Filters.
However, in this use case many of the main app tables may not need to be loaded at all. But I need to support Security Filters for when main app users access the app. So the best I can do to filter out not-needed tables, is to force the Security Filter to return FALSE for the back office users. This is not efficient!
To provide faster Sync times in this special but important use case, it would be much better if we could conditionally apply the "Filter out all existing rows?" property. If conditions are met, table is not loaded....done! Otherwise the table goes through normal load process including Security Filter. (EDITED: The assumption I'm making above that the Security Filter expression is still checked on each row. However, in the comments below it is being suggested that an expression that returns FALSE without referencing row columns is treated the same as the "Filter out all existing rows?" setting set to TRUE - yet to be confirmed. If true, this means that the Security Filter is pre-processing the expression before attempting to apply the filter expression to rows. Not great implementation and certainly would not be clear to an inexperienced App Creator. Basically, the "Filter out all existing rows?" setting is a Table Filter, The Security filter is a row filter for the table. Keeping these two separate and allowing expressions in both makes much more sense and is more readily understood by new users - regardless of if performance is impacted or not....BUT especially if it is impacted!!!)
... View more