Valentina 2.0. -- What is your 3 DREAM features?
Robert Brenstein
rjb at rz.uni-potsdam.de
Sat Jan 31 18:39:59 CST 2004
> > -- be able to query ANY parameters/options that are settable by us or
>> by kernel, including things like file mode, file block size, mac file
>> type/create, file extensions.
>
>You mean by SQL?
>No promise. WE have start add SQL command SET PROPERTY, GET PROPERTY,
>But on the hold now.
Direct API will do. Actually non-SQL way is better for now. Those
things are needed only under special circumstances.
> > -- be able to store single global/persistent values easily (using
>> system tables instead of having to maintain my own bo)
>
>Close to SET PROPERTY.
Property of what? I must have missed this topic somehow. But if they
allow me to maintain single global values, I am game. But make them
available in direct API as well.
> > -- add SQLSelectField and SQLSelectGlobal
>
>?
Search list archive for this thread.
> > -- option to have automatic time stamping of all or specific fields
>> in a baseobject (updated only when content changes)
>
>Yes, we have add DB.Clocks(), and TIMESTAMP field.
Is the TIMESTAMP an internal field (handled automatically by kernel)
or it is a field for us to use explicitely? Ideally, a field would
have a property "timestamp" settable through Field_SetFlag() and then
we have a call Field_GetTimestamp() to find the current value. It
should also be properly handled through SQL, so we can easily find
records with fields that were modified after specific timestamp.
> > -- does valentina automatically zeros out space that becomes empty
>> when existing data is encrypted? if not it should. And add an option
>> for doing this upon any record deletion (a new call or an option for
>> delete/all/Record/s)
>
>Yes, is added new flag db.EraseOnDelete.
>For non encrypted also
For non-encrypted should be optional for performance reasons.
> > -- built in options to compress large data upon storage and auto
>> decompress upon recall (choice of compression)
>
>Mmm, this exists now -- ZIP compression for BLOBs.
Hmm, may be it exists but there is no mention of it in any of the
docs I have, so I have no clue how to use it.
I'd like this to be simply a field attribute like with indexing or
unique -- I just call Field_SetFlag() to make field zip-compressed.
By BLOBs, do you mean BLOB fields or all BLOB-type fields (that is
BLOB, TEXT, PICT)?
> > -- simplify opening/creating encrypted database: New +
>> Set(Structure)Encryption + Open --> CreateEncrypted and
>> Set(Structure)Encryption + Open --> OpenEncrypted with Open returning
>> an error dbEncrypted when trying to open an encrypted db. Also
>> IsStructureEncrypted(fpath), IsDatabaseEncrypted(fpath) to check what
>> kind of db we have (this was discussed on the list last year)
>
>Let's discuss this in separate thread.
>And I did agree in the past with changes?
>Just not sure it is possible simplify something.
Search list archive for past discussions. No, you did not actually
agree to do this. But yes, I still find these steps non-intuitive and
more complicated than needed, particularly for programs that allow
our users to have either encrypted or unencrypted databases. Now it
is an opportunity to clean this up.
Your current approach may be logical in VSDK but not in higher
languages. I don't care what you do internally -- you can just call
the current functions as they are.
> > -- implement auto timeout of cursors
>
>What you mean?
See page 18 of vxcmd manual from December. Although to be truly
useful, this should be a property of a cursor not a database (a
parameter on SQL call that sets max age in seconds, 0 meaning no
expire).
> > -- option to open databases in read-only mode (as parameter to open
>> or separate call) regardless whether it is on read-only or read-write
>> medium
>
>Aha, as flag on open....
>I afraid not works.
>
>Assume files are not marked.
>One app open as read only. Ok.
>But other open as read/write => BIG PROBLEMS.
I am not sure problems are so big (at least in my ignorance :)
So what if the other app modifies a content of the field. The first
app will get the new content (ya, live cursor modifiable by others).
That is often desirable. If the 2nd app deletes a record, first
should get an error "recordDeleted". If 2nd app makes any structure
changes, 1st app returns "cursorNoLongerValid" error. Do I miss
anything?
But, you can (at least initially) restrict that if a db is open for
read, other apps can open it also for read only. A lock file could be
used if there is no better way. (A change file could be used to pass
level of changes from the read/write up.)
>
>> -- valentinaInit returns the size of actually allocated cache
>
>Right now.
Hmm. In vxcmd, it returns empty when successful.
>
> > -- use opportunity to clean up function/param names in BO-APIs
>
>?
For example, SetStructureEncryption()/SetEncryption() should be
really called PassStructureEncryptionKey()/PassEncryptionKey() since
that is what they do. But (cf above) encryption key should be passed
with OpenEncrypted() not as a separate call aynway.
A few other examples:
Database_Dump() could be Database_WriteDump() or Database_MakeDump()
to parallel Database_LoadDump(). May be even better to make them
Database_ExportDump() and Database_ImportDump() to parallel
Database_ExportAscii() and Database_ImportAscii(). Anything you write
out to an external file is export and anything you read from external
file is import.
Cursor_GetField() could be Cursor_GetFieldValue() to match
Cursor_GetFieldName(), Cursor_GetFieldRef() and also Field_GetValue()
-- or the latter should be Field_Get to match Cursor_GetField.
Actually, Cursor_GetFieldContent() and Field_GetContent() would be
even more appropriate.
Cursor_SetBlank() does not set the whole cursor so it should be
Cursor_BlankRecord() or Cursor_SetRecordBlank().
I realize that we got used to those names as they are but changing to
version 2 is a unique opportunity to make function names more
self-descriptive with less ambiguities. I just like them nice and
clean and logical :)
A new item:
Do you remember THINK Reference? It was basically a smart searchable
database that contained syntax of all functions from System Toolbox
and Think language reference. May be such a database convering all
your products would be useful for us and you. There would be a
standalone GUI to use it but the raw database would be also available
for integration into at least some development environments.
Robert
More information about the Valentina
mailing list