osftcontent

This page was automatically generated from the database schema dump and may be incomplete or incorrect. Columns and data types are confirmed from the schema dump; the read/write paths and the connection to FULLTEXTFILEATTACHED are additionally reverse-engineered from enaio server logs (version 11.0, build 801/802).

Holds the extractable full-text content of a document, which serves as the source for the FTS indexer (index:<port>) to populate osfttab. One row per indexable DMS object (primary key osid).

The table is populated in two ways:

  • Client supplies the full text — on dms.XMLInsert / dms.XMLUpdate / dms.XMLImport with the option FULLTEXTFILEATTACHED=1, the client uploads a pre-prepared full-text file (e.g. from an external OCR pipeline). It lands directly in fulltext_content.

  • Server-side rendition — default path (FULLTEXTFILEATTACHED=0): the os-rendition-cache service produces the full text asynchronously via OCR / text extraction and writes the result to this table.

1. Columns

Name Type Length Description

osid

int

DMS object ID (primary key). References the main object table of the respective object type (objectX.id).

ostype

int

enaio object-type ID (haupttyp * 65536 + untertyp, see Object-type ID).

fulltext_content

image

max

Extracted full text as a BLOB (in Oracle the equivalent BLOB). Read by the indexer during the FTS index run and handed to the indexer service via std.GetCPObjectIdxFulltext as a temporary file (<ostemp>\cpb_idx_<GUID>.tmp).

2. Lifecycle

On every dms.XMLInsert / dms.XMLUpdate / dms.XMLImport for an indexable object, the existing full-text content is deleted before a new RENDITION message is enqueued in oscpmqueue:

-- Before every re-indexing — invoked server-internally by
-- CThreadExecutorData::fnStoreInWork → SetIndexDataChanged
-- → StartRenditionExport → WriteVolltextFileIntoDatabase
DELETE FROM osftcontent WHERE osid = 2676390;

Writes (INSERT with BLOB content) run server-internally via CBaseData::Bind and are therefore only visible in SQL trace logs as bind operations (not as raw SQL statements).

  • osftslog — status mirror of the FTS pipeline per object (flag2 state machine).

  • oscpmqueue — CP message queue that synchronises rendition and indexer jobs.

  • osfttab — main index table of the full-text search.

Job / code path Role w.r.t. osftcontent

dms.XMLInsert / dms.XMLUpdate / dms.XMLImport

Trigger the DELETE of the existing row via CThreadExecutorData::fnStoreInWork → SetIndexDataChanged → StartRenditionExport → WriteVolltextFileIntoDatabase. With FULLTEXTFILEATTACHED=1 they additionally INSERT the supplied full-text file. dms.XMLImport internally branches into the insert or update path and triggers the same lifecycle there.

DoCreateCPMessage

Right after the osftcontent DELETE, a RENDITION job is enqueued in oscpmqueue.

std.GetCPObjectIdxFulltext

Indexer read path: fetches the full text from osftcontent (or the rendition cache) and delivers it to the indexer service as a temporary file.

std.GetCPObjectInfo

Returns HasVolltextFile=True/False — signals to the indexer whether an entry exists in osftcontent.

ado.ExecuteSQL

Direct SQL path for DELETE operations.