PC SOFT
ONLINE REPOSITORY
FOR WINDEVWEBDEV AND WINDEV MOBILE

Home |  | Sign in | English US
StarQ component.- Structure / Queue / Componente mapped Database
Published by Boller
in the category Tools
New features



Description
StarQ component.- Structure / Queue / Componente mapped Database

Helper for easily integrating LightningDB into WINDEV projects.

https://en.wikipedia.org/wiki/Lightning_Memory-Mapped_Database

Component In/Out:

List of Procedures

The StarQ component proposes the following sets of procedures:

Set of Procedures 'lmdb'

LmdbErrorCheck
BinaryData
CompData
DbSerialize
DbDeserialize
lmdb_dll_init
AllocSpace
TransferSpace
GetPageSize <specify the procedure action>
StandardSize <specify the procedure action>

Set of Procedures 'index'

Ascending
Descending
Composite
Using


List of Classes

The StarQ component proposes the following classes:


List of Constants

The StarQ component proposes the following constants:

Set of Procedures 'lmdb'

MDB_FIXEDMAP mmap at a fixed address (experimental)
MDB_NOSUBDIR no environment directory
MDB_NOSYNC don't fsync after commit
MDB_RDONLY read only
MDB_NOMETASYNC don't fsync metapage after commit
MDB_WRITEMAP use writable mmap
MDB_MAPASYNC use asynchronous msync when #MDB_WRITEMAP is used
MDB_NOTLS tie reader locktable slots to #MDB_txn objects instead of to threads
MDB_NOLOCK don't do any locking, caller must manage their own locks
MDB_NORDAHEAD don't do readahead (no effect on Windows)
MDB_NOMEMINIT don't initialize malloc'd memory before writing to datafile
MDB_REVERSEKEY use reverse string keys
MDB_DUPSORT use sorted duplicates
MDB_INTEGERKEY numeric keys in native byte order.
MDB_DUPFIXED with #MDB_DUPSORT, sorted dup items have fixed size
MDB_INTEGERDUP with #MDB_DUPSORT, dups are numeric (28,10) in native byte order
MDB_REVERSEDUP with #MDB_DUPSORT, use reverse string dups
MDB_CREATE create DB if not already existing
MDB_NOOVERWRITE For put: Don't write if the key already exists.
MDB_NODUPDATA Only for #MDB_DUPSORT<br>
MDB_CURRENT For mdb_cursor_put: overwrite the current key/data pair
MDB_RESERVE For put: Just reserve space for data, don't copy it. Return a
MDB_APPEND Data is being appended, don't split full pages.
MDB_APPENDDUP Duplicate data is being appended, don't split full pages.
MDB_MULTIPLE Store multiple data items in one call. Only for #MDB_DUPFIXED.
MDB_FIRST < Position at first key/data item
MDB_FIRST_DUP < Position at first data item of current key.
MDB_GET_BOTH < Position at key/data pair. Only for #MDB_DUPSORT
MDB_GET_BOTH_RANGE < position at key, nearest data. Only for #MDB_DUPSORT
MDB_GET_CURRENT < Return key/data at current cursor position
MDB_GET_MULTIPLE < Return all the duplicate data items at the current
MDB_LAST < Position at last key/data item
MDB_LAST_DUP < Position at last data item of current key.
MDB_NEXT < Position at next data item
MDB_NEXT_DUP < Position at next data item of current key.
MDB_NEXT_MULTIPLE < Return all duplicate data items at the next
MDB_NEXT_NODUP < Position at first data item of next key
MDB_PREV < Position at previous data item
MDB_PREV_DUP < Position at previous data item of current key.
MDB_PREV_NODUP < Position at last data item of previous key
MDB_SET < Position at specified key
MDB_SET_KEY < Position at specified key, return key + data
MDB_SET_RANGE < Position at first key greater than or equal to specified key.
MDB_SUCCESS Successful result
MDB_KEYEXIST key/data pair already exists
MDB_NOTFOUND key/data pair not found = EOF
MDB_PAGE_NOTFOUND Requested page not found - this usually indicates corruption
MDB_CORRUPTED Located page was wrong type
MDB_PANIC Update of meta page failed, probably I/O error
MDB_VERSION_MISMATCH Environment version mismatch
MDB_INVALID File is not a valid MDB file
MDB_MAP_FULL Environment mapsize reached
MDB_DBS_FULL Environment maxdbs reached
MDB_READERS_FULL Environment maxreaders reached
MDB_TLS_FULL Too many TLS keys in use - Windows only
MDB_TXN_FULL Txn has too many dirty pages
MDB_CURSOR_FULL Cursor stack too deep - internal error
MDB_PAGE_FULL Page has not enough space - internal error
MDB_MAP_RESIZED Database contents grew beyond environment mapsize
MDB_INCOMPATIBLE MDB_INCOMPATIBLE: Operation and DB incompatible, or DB flags changed
MDB_BAD_RSLOT Invalid reuse of reader locktable slot
MDB_BAD_TXN Transaction cannot recover - it must be aborted
MDB_BAD_VALSIZE Too big key/data, key is empty, or wrong DUPFIXED size
MDB_LAST_ERRCODE
MDB_MB
MDB_GB
LMDB_64_DLL
LMDB_32_DLL


List of Global Variables

The StarQ component proposes the following global variables:

Set of Procedures 'lmdb'

mdb_version
mdb_strerror
mdb_env_create
mdb_env_open
mdb_env_copy
mdb_env_copyfd
mdb_env_stat
mdb_env_info
mdb_env_sync
mdb_env_close
mdb_env_set_flags
mdb_env_get_flags
mdb_env_get_path
mdb_env_get_fd
mdb_env_set_mapsize
mdb_env_set_maxreaders
mdb_env_get_maxreaders
mdb_env_set_maxdbs
mdb_env_get_maxkeysize
mdb_env_set_userctx
mdb_env_get_userctx
mdb_env_set_assert
mdb_txn_begin
mdb_txn_env
mdb_txn_commit
mdb_txn_abort
mdb_txn_reset
mdb_txn_renew
mdb_dbi_open
mdb_stat
mdb_dbi_flags
mdb_dbi_close
mdb_drop
mdb_set_compare
mdb_set_dupsort
mdb_set_relfunc
mdb_set_relctx
mdb_get
mdb_put
mdb_del
mdb_cursor_open
mdb_cursor_close
mdb_cursor_renew
mdb_cursor_txn
mdb_cursor_dbi
mdb_cursor_get
mdb_cursor_put
mdb_cursor_del
mdb_cursor_count
mdb_cmp
mdb_dcmp
mdb_reader_list
mdb_reader_check
LMDB_DLL_INSTANCE

Set of Procedures 'index'

gnProcedureIndex


List of Structures

The StarQ component proposes the following structures:

Set of Procedures 'lmdb'

SYSTEM_INFO
STMDB_stat
STMDB_envinfo
STMDB_val


1 - Accessible Sets of Procedures

1.1 - Set of Procedures 'lmdb'
1.1.1 - Procedure 'LmdbErrorCheck'

Summary: Verify an error and throws an exception
1.1.2 - Procedure 'BinaryData'

Summary: Returns a binary data
1.1.3 - Procedure 'CompData'

Summary: Composite key data
1.1.4 - Procedure 'DbSerialize'

Summary: Serialize data
1.1.5 - Procedure 'DbDeserialize'

Summary: Serialize data
1.1.6 - Procedure 'lmdb_dll_init'

Summary: Inicializar LMDB
1.1.7 - Procedure 'AllocSpace'

Summary: Allocate space
1.1.8 - Procedure 'TransferSpace'

Summary: Transferir memoria
1.1.9 - Procedure 'GetPageSize'

Summary: <specify the procedure action>
Syntax:
[ <Result> = ] GetPageSize ()

Parameters:
None
Return Value:
real: <specify the possible values as well as their interpretation>

For instance:
Indicate an example.

1.1.10 - Procedure 'StandardSize'

Summary: <specify the procedure action>
Syntax:
[ <Result> = ] StandardSize (<Size>)

Parameters:
Size: <specify the role of Size>
Return Value:
8-byte int: <specify the possible values as well as their interpretation>

For instance:
Indicate an example.



1.2 - Set of Procedures 'index'
1.2.1 - Procedure 'Ascending'

Summary: Generates the binary representation of a value for Ascending order
1.2.2 - Procedure 'Descending'

Summary: Generates the binary representation of a value for Descending order
1.2.3 - Procedure 'Composite'

Summary: Generates a Composite representation of a value using several values
1.2.4 - Procedure 'Using'

Summary: Generates a Build Index procedure based on a single or several field names. Prefix with '-' on a field to specify descending order.

1 - Sets of Accessible Browser Procedures

<No browser procedure available in this component>

2 - Accessible Classes

2.1 - Class 'StarQEnv'
2.1.1 - Method 'Constructor'

Summary: Declare a shared environment. By default a temporal file and volatile (files will be deleted when closed).
2.1.2 - Method 'Destructor'

Summary: <specify the procedure action>
Syntax:
Destructor ()

Parameters:
None
Return Value:
None

For instance:
Indicate an example.

2.1.3 - Method 'Open'

Summary: Opens an environment or creates it if it does not exist, then open all related tables.
2.1.4 - Method 'Close'

Summary: Close an environment and all related tables.
2.1.5 - Method 'Create'

Summary: Create a new environment and declare all tables.
2.1.6 - Method 'GetFileName'

Summary: Get the file name for the database.



2.2 - Class 'StarQ'
2.2.1 - Method 'Constructor'

Summary: Declares a table with the primary key build procedure.
2.2.2 - Method 'Destructor'

Summary: <specify the procedure action>
Syntax:
Destructor ()

Parameters:
None
Return Value:
None

For instance:
Indicate an example.

2.2.3 - Method 'Put'

Summary: Insert or modify a record.
2.2.4 - Method 'RemoveInternal'

Summary: <specify the procedure action>
Syntax:
RemoveInternal (<Record> [, <IsChecked>])

Parameters:
Record: <specify the role of Record>
IsChecked (default value=0): <specify the role of IsChecked>
Return Value:
None

For instance:
Indicate an example.

2.2.5 - Method 'Index'

Summary: Declare a new Index.
2.2.6 - Method 'PutIndex'

Summary: <specify the procedure action>
Syntax:
PutIndex (<nIdx> is int, <Record>, <PkValue>)

Parameters:
nIdx (int): <specify the role of nIdx>
Record: <specify the role of Record>
PkValue: <specify the role of PkValue>
Return Value:
None

For instance:
Indicate an example.

2.2.7 - Method 'Get'

Summary: Find a record on the primary key, and fetch it.
2.2.8 - Method 'FirstPK'

Summary: Locate the cursor at the beginning the primary key, and fetch the record.
2.2.9 - Method 'Exist'

Summary: Check the existence of a record on the primary key.
2.2.10 - Method 'PkValue'

Summary: <specify the procedure action>
Syntax:
[ <Result> = ] PkValue (<Record>)

Parameters:
Record: <specify the role of Record>
Return Value:
Unspecified Type: <specify the possible values as well as their interpretation>

For instance:
Indicate an example.

2.2.11 - Method 'RemoveIndex'

Summary: <specify the procedure action>
Syntax:
RemoveIndex (<nIdx> is int, <Record>, <PkValue>)

Parameters:
nIdx (int): <specify the role of nIdx>
Record: <specify the role of Record>
PkValue: <specify the role of PkValue>
Return Value:
None

For instance:
Indicate an example.

2.2.12 - Method 'Open'

Summary: Opens the table.
2.2.13 - Method 'Close'

Summary: Close the table.
2.2.14 - Method 'CloseIndex'

Summary: <specify the procedure action>
Syntax:
CloseIndex (<nIdx> is int)

Parameters:
nIdx (int): <specify the role of nIdx>
Return Value:
None

For instance:
Indicate an example.

2.2.15 - Method 'OpenIndex'

Summary: <specify the procedure action>
Syntax:
OpenIndex (<nIdx> is int)

Parameters:
nIdx (int): <specify the role of nIdx>
Return Value:
None

For instance:
Indicate an example.

2.2.16 - Method 'CheckOpened'

Summary: <specify the procedure action>
Syntax:
CheckOpened ( [<IsNot> is boolean])

Parameters:
IsNot (boolean - default value=0): <specify the role of IsNot>
Return Value:
None

For instance:
Indicate an example.

2.2.17 - Method 'CursorGet'

Summary: <specify the procedure action>
Syntax:
[ <Result> = ] CursorGet (<nIdx> is int, <Record> [, <nFlags> is int])

Parameters:
nIdx (int): <specify the role of nIdx>
Record: <specify the role of Record>
nFlags (int - default value=0): <specify the role of nFlags>
Return Value:
boolean: <specify the possible values as well as their interpretation>

For instance:
Indicate an example.

2.2.18 - Method 'Next'

Summary: Move the cursor to the next record, and fetch it.
2.2.19 - Method 'Previous'

Summary: Moves the cursor to the previous record and fetches it.
2.2.20 - Method 'Last'

Summary: Locate the cursor at the ending of an index, and fetch the record.
2.2.21 - Method 'Set'

Summary: Seeks for the closest next record based on an index and fetches it.
2.2.22 - Method 'NewScanIndex'

Summary: <specify the procedure action>
Syntax:
NewScanIndex (<nIdx> is int)

Parameters:
nIdx (int): <specify the role of nIdx>
Return Value:
None

For instance:
Indicate an example.

2.2.23 - Method 'CloseScanIndex'

Summary: <specify the procedure action>
Syntax:
CloseScanIndex ()

Parameters:
None
Return Value:
None

For instance:
Indicate an example.

2.2.24 - Method 'First'

Summary: Locate the cursor at the beginning of an index, and fetch the record.
2.2.25 - Method 'LastPK'

Summary: Locate the cursor at the ending of the primary key, and fetch the record.
2.2.26 - Method 'SetPK'

Summary: Seeks for the closest next record based on the primary key.
2.2.27 - Method 'IndexCount'

Summary: Count the number of indexes in the table, including the primary key.
2.2.28 - Method 'Count'

Summary: Number of rows in the table.
2.2.29 - Method 'Create'

Summary: Create a new table.
2.2.30 - Method 'Remove'

Summary: Removes a Record.


3 - Accessible Pages

<No page available in this component>

3 - Accessible Windows

<No window is available in this component>

4 - Accessible Reports

<No report available in this component>

5 - Manipulation of Accessible Elements

To handle a component element (window, etc.) by programming, the element must be handled as any other project element:

- to call a procedure: use the usual syntax:
ComponentProcedure(Param1,Param2)

- to use a class: declare a class type variable:
MyVariable is object ComponentClass
Then, the variable can be used as any other usual object variable.

- to open a window: use the Open function and specify the required parameters.
Open(ComponentWindow [, Param1, Param2])

- to print a report: use the iPrintReport function and specify the required parameters.
iPrintReport(ComponentReport [, Param1, Param2])



//CODE
// Our record definition
RecordType is Structure
Key is int
Description is string
END

// Our StarQ database handler, using our primary key field 'Key'
RecordQ is StarQ(index.Using("Key"))

// Declare an Index named 'Description'
IdxName is int = RecordQ.Index(index.Using("Description"))


// Initialize LMDB.DLL
lmdb.lmdb_dll_init()

// Creates and Open the database
RecordQ.Create()

Record is RecordType

// Create sample 1000 rows
FOR i = 1 _TO_ 1000
Record.Key = i
Record.Description = "This is a description for " + i
RecordQ.Put(Record)
END

// The data will be displayed in Description order
RecordQ.First(IdxName, Record)

// Add the first record to the table
TableAddLine(Table, Record.Key, Record.Description)

Illustrations, screen shots
none
none
User reviews
(To evaluate this resource, click 'Write a review')
No review or comment? Be the first one!