Comments (5)
This would appear to also be a problem if there is a time column available as well, since partial reads won't provide any information about deleted rows either. So either way deleted rows live forever.
I'm not sure this is generally resolveable at this level. What are your thoughts?
from speedtables.
For schemas with no change-timestamp and where rows are never deleted, the current situation works.
For schemas with no change-timestamp and where rows are deleted, the current situation does not work but could be made to work by clearing the table before re-read. This is what this specific issue is about and is probably the most common simple setup. If we support refresh-with-no-change-timestamp-column at all, we should probably support this case.
For schemas with a change-timestamp where rows are never deleted, the current situation works. A subset of this is cases where rows are never deleted at the DB level but they are flagged as inactive which is probably the most general case.
For schemas with a change-timestamp where rows are deleted, I can't see how incremental updates can be made to work; you basically have to refresh the whole table to notice deletions; to get incremental updates you need to avoid deleting rows.
from speedtables.
I'm mostly thinking of the semantics, it should be explicitly obvious that a table is or is not fully in sync with the underlying table. Either a flag on the table to make refresh_ctable clear the table, or (maybe better) a flag on refresh_ctable to force a reload.
from speedtables.
I've added a routine "reload_ctable" that bypasses the time check and resets the ctable before reloading it. Semantically it's otherwise identical to refresh_ctable. I kind of want to brainstorm this before refactoring it to always reset the ctable if the time can't be determined. I'd rather make the rule "always call reload_ctable if rows may be deleted" rather than having code that changes behavior if a time column is added or deleted in the definition of the stapi table.
from speedtables.
This was merged with stapi-fixes branch. There are separate functions refresh_ctable and reload_ctable.
from speedtables.
Related Issues (20)
- _dirty field not automatically updated HOT 2
- speedtable thread safety HOT 2
- tclobj HOT 3
- cpp branch will build and install even if boost-libs not present
- Reimplement support for flags to mmap (nosync nocore) HOT 3
- speed tables doesn't work with clang and other non-GCC compilers HOT 10
- ckalloc no longer returns char* in tcl8.6 HOT 2
- Mapped file base address is not honored HOT 3
- compilation issues on Ubuntu HOT 3
- speedtables startup locking sometimes fails to provide mutual exclusion / fails outright HOT 4
- stapi::refresh_ctable doesn't rewrite the TSV cachefile HOT 6
- stapi::refresh_ctable does not handle SQL generation errors HOT 5
- More than one call to stapi::init can confuse existing speedtables HOT 5
- search with match against integer fields will crash HOT 6
- search -code with return statement does not stop proc execution HOT 17
- search fails to fully unset the data in the data array for each loop HOT 30
- Using a speedtable shared library from two interpreters in the same process leads to a crash HOT 1
- Incompatibility between compare "in" operator in native speedtables versus stapi-based postgres version HOT 2
- Pacakge versions for 1.13.18 say 1.13.17 HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from speedtables.