Database: previously accessed columns cache is bound with stack trace

This is just experiment and breaks current tests. 

Stack trace is used for resolution at which place of source code the query was executed. And executing query in different places usually means different usage. 

In the worst case, there will be more items in the cache, but usually the cache will perform better. Maybe we can add some limitations for recursive code.