The ListManager Tables

 

All the ListManager tables are described in the following sections. Tables are broken down by their general function, to help with organization.

 

Tables are generally defined using Microsoft SQL Server keywords, athough these tables work across all ListManager supported databases. The type BOOL listed in this document maps to a char(1) with a check constraint in all platforms. Here is a mapping of MSSQL keywords and their equivalent for other vendors, where the same type is not used for all vendors:

 

 

MSSQL column

MSSQL description

Used for Oracle

Oracle description

Used for Postgres

Postgres description

tinyint

A one byte value

int

A four byte value

int2

A two byte value

smallint

A two byte value

int

A four byte value

int2

A two byte value

int

A four byte value

int

A four byte value

int

A four byte value

bigint

An eight byte value

numeric(22, 0)

Up to 22 digits of precision

numeric(22, 0)

Up to 22 digits of precision

numeric

A numeric value

numeric

A numeric value

numeric

A numeric value

smalldatetime

Time and date with accuracy to one minute

date

An 8-byte value with subsecond precision

timestamp

An 8-byte value with microsecond accuracy

datetime

Time and date with subsecond accuracy

date

An 8-byte value with subsecond precision

timestamp

An 8-byte value with microsecond accuracy

text

An unbound character column

clob

An unbound character column

text

An unbound character column

 

Additionally, Microsoft SQL Server supports a data column modifier called an "Identity" which can be added to numeric fields. This is an auto-numbering field that automatically populates the next incrementing value. Both Oracle and Postgres implement this with a separate "sequence" table. For ListManager, a sequence table is created with the base table name and "_seq", so "docs_seq", for example. With Postgres the next value is obtained from this sequence table via a default rule, where Oracle requires a 'before' trigger.

 

Note that the table and column names all end with a trailing underbar, like "lists_". This is to help avoid naming conflicts with other tables or objects in the database. The trailing underbar must be used for any direct SQL manipulation.

 

Additional tables may be added to the database/tablespace holding the ListManager tables. As long as the names do not conflict there should be no problem with this.

 

ListManager will create the indexes it needs. Most tables have primary keys, and all tables that will benefit from indexes have them. Tables which have unique indexes on them rely on the uniqueness of the index, so they shouldn't be changed. Considerable effort is put towards finding the best mix of indexes for the different vendors and the different common usages of ListManager. While it may be possible to optimize the performance for reads for some tables by adding additional indexes, write performance will suffer. Users are free to add indexes if desired, but any changes to the structure of the tables may make future upgrades impossible.

 

More

Future direction

Administrators

1.   People_

Automatic Actioins

2.   Respond_

3.   Phrases_

Billing

4.   Log_

Configuration

5.   Config_

6.   Site_

7.   Lists_

8.   Topics_

Content

9.   Docs_

10.  Doctypes_

11.  Docparts_

12.  Mimetypetoext_

13.  Mimetypes_

14.  Mimeexts_

Mail Queues

15.  Inmail_

16.  Moderate_

17.  Outmail_

Member Information

18.  Members_

Message Archives

19.  Messages_

20.  Uniquewords_

21.  Wordmessage_

SQL Queries

22.  Subsets_



Introduction to the TclPort Terminal Future direction