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.