DQL Reference Manual 6.5
DQL Reference Manual 6.5
DQL Reference Manual 6.5
Content Server
Version 6.5
EMC Corporation
Corporate Headquarters:
Hopkinton, MA 01748‑9103
1‑508‑435‑1000
www.EMC.com
Copyright © 1992 ‑ 2008 EMC Corporation. All rights reserved.
Published July 2008
EMC believes the information in this publication is accurate as of its publication date. The information is subject to change
without notice.
THE INFORMATION IN THIS PUBLICATION IS PROVIDED AS IS. EMC CORPORATION MAKES NO REPRESENTATIONS
OR WARRANTIES OF ANY KIND WITH RESPECT TO THE INFORMATION IN THIS PUBLICATION, AND SPECIFICALLY
DISCLAIMS IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Use, copying, and distribution of any EMC software described in this publication requires an applicable software license.
For the most up‑to‑date listing of EMC product names, see EMC Corporation Trademarks on EMC.com.
All other trademarks used herein are the property of their respective owners.
Table of Contents
Preface .......................................................................................................................... 11
Chapter 1 DQL Language Elements ....................................................................... 13
Literals ...................................................................................................... 13
Integer literals ........................................................................................ 13
Floating point literals .............................................................................. 14
Character string literals ........................................................................... 15
ID literals ............................................................................................... 15
Date literals ............................................................................................ 15
Default formats .................................................................................. 16
Short date formats .......................................................................... 16
ANSI format .................................................................................. 17
Other character string formats ......................................................... 17
Date literal keywords .......................................................................... 18
Date output formats............................................................................ 18
Date storage and handling .................................................................. 19
Special keywords ........................................................................................ 19
Functions ................................................................................................... 20
Scalar functions ...................................................................................... 21
UPPER ............................................................................................... 21
LOWER ............................................................................................ 21
SUBSTR ............................................................................................. 22
Aggregate functions ............................................................................... 23
COUNT ............................................................................................ 23
MIN .................................................................................................. 23
MAX.................................................................................................. 24
AVG ................................................................................................. 24
SUM ................................................................................................. 25
Date functions ........................................................................................ 25
DATEDIFF ........................................................................................ 25
DATEADD ......................................................................................... 26
DATEFLOOR ..................................................................................... 27
DATETOSTRING ............................................................................... 27
The ID function ...................................................................................... 28
The MFILE_URL function ....................................................................... 28
Examples ........................................................................................... 29
Predicates .................................................................................................. 30
Arithmetic operators ............................................................................... 30
Comparison operators ............................................................................ 31
Column and property predicates ............................................................. 31
Predicates for columns and single‑valued properties ............................. 31
Predicates for repeating properties ...................................................... 32
Pattern matching with LIKE ................................................................ 35
The percent sign ............................................................................. 35
The underbar ................................................................................. 36
Matching cases ............................................................................... 36
The ESCAPE character .................................................................... 36
List of Figures
List of Tables
This manual is the reference manual for Documentum’s Document Query Language, supported by
Content Server. It is a companion to Documentum Object Reference Manual, Content Server Fundamentals,
Content Server Administration Guide, and Documentum Distributed Configuration Guide.
Intended audience
This manual is written for application developers and system administrators and any
others who want to build a content or workgroup management application that uses
DQL. It assumes that you are familiar with the concepts of document processing,
object‑oriented programming, and client‑server applications. It also assumes working
knowledge of SQL.
Conventions
This manual uses the following conventions in the syntax descriptions and examples.
Syntax conventions
Convention Identifies
italics A variable for which you must provide a value.
[ ] square brackets An optional argument that may be included only once
{ } curly braces An optional argument that may be included multiple
times
| vertical line A choice between two or more options
Revision history
The following changes have been made to this document.
Revision history
Literals
Literals are values that are interpreted by the server exactly as they are entered. Content
Server recognizes five types of literals:
• Integer literals, page 13
• Floating point literals, page 14
• Character string literals, page 15
• ID literals, page 15
• Date literals, page 15
Integer literals
An integer literal specifies any whole number and is expressed in the following format:
[+ | ] n
DQL does not support the negative integer value ‑2147483648 because this number is not
supported in a number of relational databases. If you enter this number, your results
are unpredictable.
A floating point literal can also be expressed in scientific notation. For example:
10.4e6
or
3.6E7
or
12e3
The maximum length of a character string literal is determined by the maximum allowed
by the underlying RDBMS, but in no case will the maximum length exceed 1999 bytes.
If a property is defined as a string datatype, the maximum length of the character string
literal you can place in the property is defined by the property’s defined length. If you
attempt to place a longer value in the property, DFC will throw an exception. You can
change the behavior and allow DFC to truncate the character string value to fit the
property by setting the dfc preference called dfc.compatibility.truncate_long_values in
dfc.properties.
ID literals
An ID literal specifies an object ID as a 16‑character string enclosed in single quotes. ID
literals are generally used in DQL queries. For example:
SELECT "object_name" FROM "dm_document"
WHERE "r_object_id" = '099af3ce800001ff'
Note that you cannot use ID literals to assign object IDs to objects. Object IDs are
assigned automatically by the server when the object is created.
Date literals
A date literal specifies a date using the following syntax:
DATE('date_value[utc]' [,'pattern'])
date_value can be defined using any of the valid character string formats representing a
date, or it can be one of the keywords that represent dates.
If utc is included, Content Server assumes that the specified date_value is UTC time. The
specification of utc is not case sensitive.
There are some date formats that the server can interpret as more than one date. For
example, 03/04/96 can be interpreted as March 4, 1996 or as April 3, 1996. To resolve this,
some formats require you to specify what pattern the server uses to interpret the date.
Valid dates range from 01/01/1753 (January 1, 1753) to 12/31/9999 (December 31, 9999).
The following paragraphs describe the character string formats and keywords you
can use to specify a date. When you use a character string format, you must enclose
date_value in single quotes.
Default formats
Table 2, page 16 lists the character string formats for date_value that are accepted by
default:
Format Examples
mm/dd/[yy]yy DATE(’03/24/1989’) DATE(’4/7/1992’)
dd‑mon‑[yy]yy DATE(’4‑Apr‑1975’)
month dd[,] [yy]yy DATE(’January 1, 1993’)
mon dd [yy]yy DATE(’March 23 1990’)
the client’s localized short date format DATE(’30‑11‑1990’) (Assumes short date
format dd‑mm‑yyyy is defined on the client
machine)
ANSI format (dow mon dd hh:mm:ss yyyy) No example
Although it is not required, you can specify a pattern for any of these formats except the
short date format and the ANSI format. You cannot specify a pattern when you enter
a date using either of those two formats.
When using the formats listed in Table 2, page 16, the following rules apply:
• It is not necessary to include leading zeros for months or days that are represented as
a single digit.
• You can abbreviate a month’s name to three letters.
• If you enter only the year and not the century, the server uses the century defined by
the current date in the server machine. For example, 03/23/95 is interpreted as March
23, 1995 before the year 2000 and is interpreted as March 23, 2095 after the year 2000.
The server accepts a client’s localized short date format as a valid character string format
as long as the format contains only numeric characters. For example, dd‑mmm‑yy is not
an accepted short date format.
Windows, Solaris, and AIX client platforms provide a default short date format. The
Windows platform also lets you define your own default short date format. (Refer to the
Content Server Administration Guide for information about defining short date formats.)
For HP and Linux clients, which do not have a default short date format, the server
assumes the default format is mm/dd/yy hh:mi:ss.
If the locally defined short date format conflicts with one of the default input formats, the
locally defined format takes precedence. For example, assume that the locally defined
format is dd/mm/yyyy. If a user wants to enter March 14, 1994 and enters 03/14/1994
(mm/dd/yyyy), the server interprets this as the 3rd day of the 14th month of the year 1994
and returns an error because there is no 14th month.
If you use the pattern argument to specify a format for a date, that pattern takes
precedence over the short date format.
ANSI format
You can also specify the date using the ANSI format (dow mon dd hh:mm:ss yyyy).
However, DQL ignores the time fields. (To enter a date and time using the ANSI format,
use DFC.)
The following character string formats for date_value are also acceptable but require a
pattern argument:
[dd/]mm/[yy]yy[hh:mi:ss]
[yy]yy/mm[/dd] [hh:mi:ss]
[mon‑][yy]yy [hh:mi:ss]
month[,] [yy]yy [hh:mi:ss]
If you do not enter the time (hh:mi:ss), the server assumes the time is 00:00:00. If you
do not enter the day or month, the server assumes the first day of the month or the first
month of the year, respectively.
For example, suppose the pattern argument is [dd/]mm/[yy]yy [hh:mi:ss]. The following
date literal is interpreted as April 1, 1996 00:00:00 (assuming the current century is 1900).
DATE('04/96','mm/yy')
When you specify date_value, you can use any character except a space or an
alphanumeric character as the delimiter. You must use the same delimiter to separate all
elements of the date or time. For example, if you use a forward slash to separate dd and
mm, you must use a forward slash to separate mm and yy. Similarly, if you use a period
to separate hh and mi, you must use a period to separate mi and ss.
The delimiter that you use in the date can be different from the delimiter that you use
in the time portion. For example, the following is valid:
'230496 12.32.04'
It is not necessary to use the same delimiter for the date_value and pattern arguments.
For example, the following function call is valid:
DATE('230496 12.32.04','dd/mm/yy hh:mi:ss')
By default, the server uses the client’s localized short date format to output dates to the
client. If the client’s format represents years using two digits, dates in the current century
are displayed using two digits. However, to avoid ambiguity, years in other centuries are
displayed using all four digits (1834 or 1792).
How dates are stored in the repository and handled during transmission between
Content Server and a client application is not affected by the input or output format
chosen for use.
By default, when communicating with a Documentum Version 6 client, a Content Server
in a new repository assumes that all date values in a query are expressed as client
local time and stores all dates in the repository normalized to UTC time based on that
assumption. This is the recommended format for date storage. Content Server and DFC
will make the necessary time zone adjustments when dates are sent and received. This
behavior can be changed so that Content Server stores the dates in server local time,
rather than in UTC time. However, this is not recommended.
When communicating with a client version earlier than Documentum Version 6, Content
Server assumes that the date values in queries are server local time.
For complete information about date storage and handling, refer to the Content Server
Administration Guide.
Special keywords
DQL includes some special keywords for use in queries. These keywords have special
meanings for Content Server when used in a DQL query. (They cannot be used in DFC
methods.) The keywords are:
The query returns nothing because the locale fr_cn is not recognized by the server.
However, the following query returns the information from the French locale:
SELECT type_name, label_text from dmi_dd_type_info where
nls_key=DM_SESSION_DD_LOCALE
The server checks whether the locale identified in the client’s session locale, fr_cn,
exists in the repository. Since fr_cn isn’t found, the server attempts to find a good
match among the existing locales. It determines that fr (French) is a good match
and uses that locale to execute the query.
If a good match isn’t found, the server uses the default locale to execute the query.
Functions
Functions are operations on values. DQL recognizes three groups of functions and two
unique functions:
• Scalar functions, page 21
Scalar functions operate on one value and return one value.
• Aggregate functions, page 23
Aggregate functions operate on a set of values and return one value.
Scalar functions
The three scalar functions are:
• UPPER
• LOWER
• SUBSTR
UPPER
The UPPER function takes one argument and returns the uppercase of that value. The
value supplied as the argument must be a character string or a property that has a
character string datatype.
For example, the following statement returns the object names of all documents that have
the word government in their title. Because LIKE returns only exact matches, the UPPER
function is used to ensure that all instances are found, regardless of the case (upper,
lower, or mixed) in which the word appears in the title.
SELECT "object_name" FROM "dm_document"
WHERE UPPER("title") LIKE '%GOVERMENT%'
LOWER
The LOWER function takes one argument and returns the lowercase of that value. The
value supplied as the argument must be a character string or a property that has a
character string datatype.
For example, the following statement returns the subjects in lowercase of all documents
owned by regina:
SUBSTR
The SUBSTR function returns some or all of a particular string. Its syntax is:
substr(string_value,start[,length])
The value of string_value can be a literal string or a column or property name. If you
specify a column or property, the server uses the value in that column or property as
the string value. The property you specify can be either a single‑valued property or a
repeating property.
The start argument identifies the starting position, in the specified string, of the substring
you want returned. Positions are numbered from the left, beginning at 1. (If you specify
0 as the start, the server automatically begins with 1.) The argument must be an integer.
The length argument defines how many characters should be returned in the substring.
Length is an optional argument. If you do not specify a length, the default behavior of
the function differs depending on the RDMBS you are using. For Oracle and DB2, the
default is the entire string value or the full width of the column if a property or column is
specified. For all other databases, the function returns 1 character.
For example, suppose you have a document subtype called purchase_order, which has
a property called order_no. The values in this property are 10‑digit numbers, with the
last three digits representing a specific sales region. The following statement returns all
documents for which the last three digits in the order_no property are 003:
SELECT "r_object_id","order_no" FROM "purchase_order"
WHERE SUBSTR("order_no",8,3) = '003'
You can also use the SUBSTR function with the SELECT statement. For example:
SELECT SUBSTR("emp_name",1,4) AS short_name FROM "employee"
You must use the AS clause option to rename the query result property that holds the
return value of the SUBSTR function. If you do not, the server cannot return the result
of the function.
If you specify a repeating property, the function returns one value for each value in
the property.
You cannot use the SUBSTR function in assignment statements.
Additionally, you cannot specify SUBSTR in a LIKE predicate. Refer to Pattern matching
with LIKE, page 35, for more information about using LIKE.
Aggregate functions
The five aggregate functions are:
• COUNT
• MIN
• MAX
• AVG
• SUM
COUNT
The name argument must identify a property or column. You can count all values for the
property or column or you can include the DISTINCT keyword to count the number of
unique values.
Using an asterisk directs the server to count all items that match specified criteria. For
example, the following statement counts all documents that belong to the user named
grace:
SELECT COUNT(*) FROM "dm_document"
WHERE "owner_name" = 'grace'
MIN
The MIN function returns the minimum value in a given set of values. The syntax is:
MIN(DISTINCT name | [ALL] value_expresssion)
The DISTINCT name argument directs the server to first select all distinct values from
the set (no duplicates) and then return the minimum value. name can be a property or
column name. Note that for this function, the DISTINCT name option has little meaning.
[ALL] value_expression directs the server to return the minimum value found in the
set of values specified by the value_expression argument. value_expression can be any
valid numeric expression or a property or column name. The keyword ALL is optional;
whether it is specified or omitted, all of the values in the set are evaluated.
For example, assuming that rental_charges is a user‑defined object type, the following
statement returns the minimum rent charged for a two‑bedroom apartment:
SELECT MIN("charge") FROM "rental_charges"
MAX
The MAX function returns the maximum value in a given set of values. The syntax is:
MAX(DISTINCT name | [ALL] value_expresssion)
The DISTINCT name argument directs the server to first select all distinct values from
the set (no duplicates) and then return the maximum value. name can be a property or
column name. Note that for the MAX function, this option has little meaning.
[ALL] value_expression directs the server to return the maximum value found in the
set of values specified by the value_expression argument. value_expression can be any
valid numeric expression or a property or column name. The keyword ALL is optional;
whether it is specified or omitted, all of the values in the set are evaluated.
For example, assuming that rental_charges is a user‑defined object type, the following
statement returns the maximum rent charged for a two‑bedroom apartment:
SELECT MAX("charge") FROM "rental_charges"
WHERE "style" = 'apt' AND "bedroom" = 2
AVG
The DISTINCT name option directs the server to select all distinct values from the set (no
duplicates) and return the average of those distinct values. name can be a property or
column name.
[ALL] value_expression directs the server to return the average value found in the set of
values specified by the value_expression argument. The value of value_expression can be
any valid numeric expression or a property or column name. Use the optional keyword
ALL to include all of the values in the set in the operation.
For example, assuming that rental_charges is a user‑defined object type, the following
statement returns the average rent charged on a two‑bedroom apartment:
SELECT AVG("charge") FROM "rental_charges"
WHERE "style" = 'apt' AND "bedroom" = 2
SUM
The DISTINCT name option directs the server to select all distinct values from the set
(no duplicates) and return the sum of those distinct values. name can be a property or
column name.
[ALL] value_expression directs the server to return the sum of the values in the set of
values specified by the value_expression argument. The value of value_expression can be
any valid numeric expression or a property or column name. Use the optional keyword
ALL to include all of the values in the set in the operation.
For example, assuming that rent_records is a user‑defined object type that contains
payment records of tenants, the following statement provides a total of the rents paid in
May:
SELECT SUM("rent_amt") FROM "rent_records"
WHERE "mon" = 'may' AND UPPER("paid") = 'Y'
Date functions
The four date functions are:
• DATEDIFF (refer to DATEDIFF , page 25)
• DATEADD (refer to DATEADD, page 26)
• DATEFLOOR (refer to DATEFLOOR, page 27)
• DATETOSTRING (refer to DATETOSTRING, page 27)
DATEDIFF
The DATEDIFF function subtracts two dates and returns a number that represents the
difference between the two dates. The syntax is:
DATEDIFF(date_part, date1, date2)
The date_part argument defines the units in which the return value is expressed. Valid
values are year, month, week, and day.
The date1 and date2 arguments specify the dates to be subtracted. date1 is subtracted from
date2. You can specify the dates as date literals or the names of single‑valued properties
with a date datatype.
For example, the following statement uses the DATEDIFF function to return all tasks
that were started a month or more late:
SELECT "task_number", "supervisor_name"
FROM dm_tasks_queued
WHERE
DATEDIFF(month,"plan_start_date", "actual_start_date")>=1
This next example returns all tasks that were started more than one week ago:
SELECT "task_number", "r_task_user"
FROM dm_tasks_queued
WHERE DATEDIFF(week, "actual_start_date", DATE(TODAY))>=1
If the repository is using Oracle or DB2, the return value is a floating point number.
If the repository is using DB2, the server assumes 365 days per year and 30.42 days per
month (the mean number of days in a month). These assumptions can cause return values
that differ from the expected value. To illustrate, the following example, which asks for
the number of days between March 1, 1996 and Feb 1, 1996, returns 30.42 instead of 28:
DATEDIFF(day, date('03/01/1996 0:0:0'),
date('02/01/1996 0:0:0'))
If the repository is using MS SQL Server or Sybase, the return value is an integer for all
units except day. If you specify day in the function, the return value is a floating point.
The MS SQL Server and Sybase implementations round up if the difference is one half
or greater of the specified unit. The implementations round down if the difference is
less than one half of the specified unit. To illustrate, the following example, which asks
for the difference between March 1, 1996 and July 1, 1996 expressed as years, returns 0
because the difference is only 4 months.
DATEDIFF(year,date('03/01/1996'),date('07/01/1996'))
DATEADD
The DATEADD function adds a number of years, months, weeks, or days to a date
and returns the new date. The syntax is:
DATEADD(date_part, number, date)
Thedate_part argument defines the units that are being added to the specified date. Valid
date parts are year, month, week, and day.
The number argument defines how date_part values are being added to the date. For
example, the following statement uses the DATEADD function to obtain all tasks that
started more than a week ago but are not yet finished:
SELECT "task_number", "supervisor_name" FROM dm_tasks_queued
WHERE DATEADD(week, 1, "actual_start_date") < DATE(TODAY)
AND "actual_completion_date" IS NULLDATE
AND NOT("actual_start_date" IS NULLDATE)
DATEFLOOR
The DATEFLOOR function rounds a given date down to the beginning of the year,
month, or day. The syntax is:
DATEFLOOR(date_part,date)
The date argument is the name of a date property. The function rounds the value of the
property down to the beginning of the unit specified as the value of date_part. Valid
date_part values are year, month, and day.
For example, suppose that a document’s r_creation_date property has a value of March
23, 1996 at 9:30:15 am. Using the DATEFLOOR function on this property returns these
values:
Specifying Returns
January 1, 1996 at 00:00:00
DATEFLOOR(year,"r_creation_
date")
March 1, 1996 at 00:00:00
DATEFLOOR(month,"r_creation_
date")
March 23, 1996 at 00:00:00
DATEFLOOR(day,"r_creation_date")
When you include DATEFLOOR in the selected values list of a SELECT statement, you
must use the AS clause to assign a name to the column representing the returned values.
For example:
SELECT DATEFLOOR(month,"r_creation_date") AS Created...
DATETOSTRING
The date argument is the name of a date property. The format argument defines how
you want the character string formatted. The format can be any of the valid character
string input formats for date literals, subject to the following RDBMS restrictions and
qualifications:
• MS SQL Server and Sybase do not support month. If you specify a format that
contains month, such as month dd yyyy, the date is returned in the default short
date format.
• Oracle and DB2 always return the month name as a fixed‑length 9‑character string.
This means that if the name of the month is shorter than 9 characters, the string
value is padded.
Suppose that a document’s r_creation_date property has a value of May 14, 1995. Here
are some examples of the values returned by the DATETOSTRING function using this
date and a variety of formats.
Specifying Returns
DATETOSTRING("r_creation_ 14May95
date",'ddmonyy')
DATETOSTRING("r_creation_ 05/14/95
date",'mm/dd/yy')
DATETOSTRING("r_creation_ May 95
date",'month yy')
The ID function
The ID function is used to identify a folder or cabinet whose contents you want to search.
You can use the ID function in FOLDER and CABINET predicates and IN DOCUMENT
and IN ASSEMBLY clauses. The syntax is:
ID('object_id')
The object_id argument identifies the folder, cabinet, or virtual document you want to
search. The object must reside in the current repository.
Use the literal 16‑character representation of the object’s ID. For example, the following
statement returns all documents in the specified folder with titles containing the
characters Pond:
SELECT * FROM "dm_document"
WHERE FOLDER (ID('099af3ce800001ff'))
AND "title" LIKE '%Pond%'
MFILE_URL('format',page_no,'page_modifier')
The arguments are ANDed together to determine which URLs are returned. Only the
format argument is required. page_no and page_modifier are optional.
The format argument restricts the returned URLs to those pointing to files in the
specified format. Enclose the format value in single quotes. If you specify format as
an empty string, Content Server takes the format value from the returned object’s
a_content_type property.
The page_no argument restricts the returned URLs to those pointing to content files
associated with given page number. If you do not include page_no, the value defaults to
0, which represents the first content file associated with an object. To indicate that all
content pages should be considered, define page_no as ‑1. If you define page_no as ‑1,
Content Server returns all URLs that satisfy the other arguments regardless of the page
with which the content files are associated.
The page_modifier argument restricts the returned URLs to those pointing to content
files that have the specified page_modifier. The page_modifier argument must be
enclosed in single quotes. If you specify a value for page_modifier (other than an empty
string), all the returned URLs point to renditions, as content files for primary pages have
no page modifier. To return URLs for content files that have no page modifier, define
page_modifier as an empty string. (Content Server sets the page_modifier property to an
empty string by default when a user adds a content file to an object or saves a rendition
without a page modifier.) If you don’t include page_modifier, Content Server returns
the URLs that satisfy the other arguments regardless of whether their content files have
a page modifier or not.
Examples
The following statement returns the URLs to the jpeg_th renditions of the first content
pages of documents owned by ronaldh that have a page modifier of image1.
SELECT MFILE_URL('jpeg_th',0,'image1')
FROM "dm_document" WHERE "object_owner"='ronaldh'
The following example returns the owner name and object ID of all documents that
have the subject prairie chickens. For each returned document, it also returns URLs to
the primary content files associated with the document.
SELECT owner_name,r_object_id,MFILE_URL('',1,'')
FROM "dm_document" WHERE "subject"='prairie_chickens'
Predicates
Predicates are used in WHERE clauses to restrict the objects returned by a query. The
WHERE clause defines criteria that each object must meet. Predicates are the verbs
within the expression that define the criteria.
For example, the following statement returns only documents that contain the value
approved in their keywords property:
SELECT "r_object_id", "object_name", "object_owner"
FROM "dm_document"
WHERE ANY "keywords" = 'approved'
In this example, the equal sign (=) is a predicate. It specifies that any object returned
must have a keywords property value that equals (matches) the specified word (in this
case, the word approved).
DQL recognizes these predicates:
• Arithmetic operators (refer to Arithmetic operators, page 30)
• Comparison operators (refer to Comparison operators, page 31 )
• Column and property predicates (refer to Column and property predicates, page 31 )
• SysObject predicates (refer to SysObject predicates, page 37 )
Arithmetic operators
Arithmetic operators perform arithmetic operations on numerical expressions. Table 3,
page 30 lists the arithmetic operators that you can use as predicates.
Operator Operation
+ Addition
– Subtraction
/ Division
* Multiplication
** Exponentiation
Comparison operators
Comparison operators compare one expression to another. Table 4, page 31 lists the
comparison operators that can be used as predicates.
Operator Relationship
= Equal
>= Greater than or equal to
<= Less than or equal to
> Greater than
< Less than
<> Not equal
!= Not equal
The predicates in this group allow you to compare a value in a table column or
single‑valued property to defined criteria. Table 5, page 31 lists the predicates in this
group.
Predicate Description
IS [NOT] NULL Determines whether the property is assigned a value.
This predicate is useful only for registered table
columns.
Predicate Description
IS [NOT] NULLDATE Determines whether the property is assigned a null
date.
IS [NOT] NULLSTRING Determines whether the property is assigned a null
string.
IS [NOT] NULLINT Determines whether the property is assigned a null
integer value.
[NOT] LIKE pattern [ESCAPE Determines whether the property is like a particular
character] pattern. (Refer to The ESCAPE character, page 36 for
information about the ESCAPE clause option.)
[NOT] IN value_list Determines whether the property is in one of a
particular list of values.
[NOT] EXISTS (subquery) Determines whether the property matches a value
found by the subquery.
comparison_op SOME Determines whether the comparison between the
(subquery) comparison_op property value and the results of the subquery
ANY (subquery) evaluate to TRUE in any case.
comparison_op ALL (subquery) Determines whether the comparison between the
property value and the results of the subquery
evaluate to TRUE in all cases.
For example, the following statement selects all documents that have a title that starts
with the word Breads:
SELECT * FROM "dm_document"
WHERE "title" LIKE 'Breads%'
This next example selects all workflows that are supervised by one of the users named in
the predicate:
SELECT "r_object_id", "supervisor_name" FROM "dm_workflow"
WHERE "supervisor_name" IN ('carrie','davidk','holly')
ORDER BY 2
The predicates for repeating properties let you compare the values in repeating
properties to some defined criteria. The basic syntax for repeating property predicates is:
[NOT] [ANY] predicate
ROW_BASED is included in the query, it is not necessary to include the ANY keyword
with repeating property predicates.
Table 6, page 33 lists the predicates in this group.
Predicate Description
attr_name [NOT] LIKE pattern Evaluates to TRUE if any value of the repeating
[ESCAPE character] property is [not] like a particular pattern. (Refer to
The ESCAPE character, page 36 for information about
the optional ESCAPE clause.)
attr_name IN (value_list) Evaluates to TRUE if any value of the property
matches a value in the value_list. Value_list is a
comma‑separated list of values.
[IN|EXISTS] attr_name IN Evaluates to TRUE if any value of the property
(subquery) matches a value returned by the subquery.
You can use logical operators to build more complex predicate expressions, such as:
[NOT] ANY predicate AND|OR [NOT] ANY predicate {AND|OR
[NOT] ANY predicate}
For example, the following statement selects all documents that have Ingrid as an author
and a version label of 1.0:
SELECT "r_object_id", "object_name" FROM "dm_document"
WHERE ANY "authors" = 'Ingrid' AND
ANY "r_version_label" = '1.0'
The predicate statement returns all objects that meet the specified criteria regardless of
where the qualifying value is found in the property’s value list. For example, look at
the following statement:
SELECT "object_name" FROM "dm_document"
WHERE ANY "authors" IN ('jeanine','harvey') AND
ANY "keywords" = 'working'
This statement returns the name of all documents with either jeanine or harvey as a value
anywhere in the authors property values list and with the keyword working as a value in
any position in the list of values in the keywords property.
In some circumstances, you may want only objects for which the specified values are
found in the same respective positions. For example, assume that the search finds an
object for which jeanine is the value at position 3 in the authors property. You want the
name of this object only if the keyword working is in position 3 of the keywords property.
You can impose this restriction by enclosing the predicate expression in parentheses:
[NOT] ANY (predicate AND|OR [NOT]predicate {AND|OR [NOT]predicate})
For example, the statement below returns the names of documents for which either
jeanine and working or harvey and working (or both) are values of the authors and
keywords properties, respectively, and occupy corresponding positions in the properties.
SELECT "object_name" FROM "dm_document"
WHERE ANY ("authors" IN ('jeanine','harvey')
AND "keywords" = 'working')
Notes:
• To return values at a matching index position level, the keyword ANY is outside the
parentheses.
• You cannot specify an index position at which to look for values. You can specify
only that the values be found in the same respective positions.
• Using the logical operator OR returns the same results as using the basic syntax,
because the server returns the object if either predicate is true.
For more information and examples of querying repeating properties, refer to Repeating
properties in queries, page 382.
The [NOT] LIKE predicate for both single‑valued and repeating properties lets you
identify a pattern to match the property value. This pattern is specified as a character
string literal. For example, the following predicate returns all objects whose subject
contains the word Cake:
subject LIKE '%Cake%'
When you use LIKE, the value in the property must match the string exactly, including
the case of each character. If you use NOT LIKE, then the comparison is TRUE for any
value that does not match exactly.
Sometimes, however, you may not know the text of the character string. For example,
you might want to retrieve all documents that have the word Cake in their title but not
know all of the titles. For these instances, Documentum provides two pattern‑matching
characters that serve as wildcards. The two characters are:
• The percent sign (%)
• The underbar (_)
You can include the pattern‑matching characters anywhere in a character string.
The percent sign replaces 0 or more characters. For example, suppose the predicate
contains:
"subject" LIKE 'Breads%'
This returns any object whose subject begins with the word Breads, regardless of the
how many characters or words follow Breads.
To search for any object that contains a particular string in any position, use a predicate
that contains a percent sign both before and after the literal text. For example, the
following predicate returns all objects whose subject contains the string ’work’:
subject LIKE '%work%'
By default, this predicate returns all objects whose subject contains “work” in any
position, including where the string appears as part of a larger string. For example, it
returns any object whose subject contains “networking” or “workers”.
However, for full‑text queries only, a behavior change was implemented beginning in
release 6.0 to make them more useful and perform better. The fulltext query:
object_name like '%mall%'
is interpreted as searching for the whole‑word mall instead of a word‑fragment mall.
The following query will behave differently for Content Server 6.0 and pre‑6.0:
select r_object_id from dm_document where object_name like '%mall%' enable(ftdql)
The underbar
The underbar replaces one character. For example, suppose the predicate contains:
"subject" LIKE 'Bread_'
This returns any object whose subject is the single word Bread, followed by a space, an s
(Breads), or any other single, printable character.
Matching cases
You can use the UPPER and LOWER functions to retrieve an object that matches a value
regardless of the case of the letters in the value. For example, to retrieve any object with
the word cake in the title, regardless of its position in the title or the case:
UPPER("title") LIKE '%CAKE%'
Using the UPPER function changes all titles to uppercase for the comparison so that the
case of the characters is not a factor. You can use the LOWER function the same way:
LOWER("title") LIKE '%cake%'
There may be occasions when the pattern you want to match includes a percent sign (%)
or an underbar (_). To match either of those characters literally, you must specify an
escape character and insert that character before the percent sign or underscore in the
pattern. Use the optional ESCAPE clause to specify the escape character.
For example, suppose you want to find all documents whose object names contain an
underscore. Because the underscore is interpreted as a wild card by default, you must
define and use an escape character in the query:
SELECT "r_object_id" FROM "dm_document"
WHERE "object_name" LIKE '%\_%' ESCAPE '\'
In the above example, the backslash is defined as the escape character. Placed in the
pattern directly ahead of the underscore, it tells the server to treat the underscore as a
literal character rather than a wild card.
In addition to the wildcard characters, an escape character can also escape itself. For
example, suppose you want to match the string %_\ and that you have defined the
backslash as the escape character. Your LIKE predicate would look like this:
LIKE '\%\_\\' ESCAPE '\'
In the above example, the backslash character escapes not only the percent sign and
underscore but also itself.
Escape characters can escape only the two wildcard characters and themselves. If you
insert an escape character before any other character in a pattern, it generates an error.
You can use any printable character as an escape character.
SysObject predicates
Three predicates restrict the search specified in a FROM clause.
When you specify an object type in a FROM clause, the server examines that type and
its subtypes for any objects that fulfill the conditions specified in the rest of the query.
However, sometimes you may want to limit the search to specific subtypes, folders, or
cabinets. These three predicates allow you to do so. They are:
• TYPE
• FOLDER
• CABINET
The TYPE predicate restricts the search to objects of a single type or one of its subtypes.
The syntax is:
TYPE(type_name)
The type_name argument must identify a subtype of a type specified in the FROM clause.
For example, the following statement retrieves all documents of the type legal_doc
or accounting_doc or a subtype:
SELECT * FROM "dm_document"
WHERE TYPE("legal_doc") OR TYPE("accounting_doc")
Using the TYPE predicate provides one way to select from more than one type. For
example, to retrieve all documents or workflow process definitions that have been
created after a particular date, you could use the following statement:
SELECT "r_object_id", "object_name", "owner_name", "r_creation_date"
FROM "dm_sysobject" WHERE TYPE("dm_document") OR TYPE("dm_process")
The FOLDER predicate identifies what folders to search. The syntax is:
[NOT] FOLDER(folder_expression {,folder_expression} [,DESCEND])
The folder_expression argument identifies a folder in the current repository. You can’t
search a remote folder (a folder that doesn’t reside in the current repository). Valid
values are:
• An ID function
• The ID function (described in The ID function, page 28) identifies a particular folder.
• A folder path
A folder path has the format:
/cabinet_name{/folder_name}
Enclose the path in single quotes. Because cabinets are a subtype of folder, you can
specify a cabinet as the folder.
• The keyword DEFAULT
The keyword DEFAULT directs the server to search the user’s default folder. Note
that a user’s default folder is the same as the user’s default cabinet (because cabinets
are a subtype of folders).
The DESCEND keyword directs the server to search the specified folder or folders and
any local folders directly or indirectly contained within that folder or folders. The
predicate does not search any contained, remote folders. The specified folder or folders
may have no more than 25,000 nested folders if you include the DESCEND keyword.
When the search finds a remote folder, it returns the object ID of the associated mirror
object in the current repository. It does not return the object’s ID in the remote repository.
DESCEND applies to all folders specified in the predicate. If you want to search one
folder without descending but descend through another folder, include two folder
predicates in your statement and OR them together. For example:
FOLDER ('/cakes/yeasted', DESCEND) OR FOLDER (DEFAULT)
The keyword NOT directs the server not to search a particular folder.
The CABINET predicate restricts the search to a particular cabinet. Its syntax is:
[NOT] CABINET(cabinet_expression [,DESCEND])
The cabinet_expression argument must identify a cabinet that resides in the current
repository. Valid values are:
• An ID function
The ID function (described in The ID function, page 28) must specify a cabinet ID.
• A folder path
The folder path must identify a cabinet. Its format is:
/cabinet_name
Logical operators
Logical operators are used in WHERE clauses. DQL recognizes three logical operators:
• AND
• OR
• NOT
AND and OR
The AND and OR operators join two or more comparison expressions to form a complex
expression that returns a single Boolean TRUE or FALSE. The syntax for these operators
is:
expression AND | OR expression
Two expressions joined using AND return TRUE only if both expressions are true. For
example, the following complex expression returns TRUE when both of its component
expressions are true, and FALSE when only one of them is true:
"title" = 'Yeast Breads of England' AND "subject" = 'Breads'
Similarly, the following expression also returns TRUE only if both conditions are true:
"subject" = 'Breads' AND ANY "authors" IN ('clarice','michelle','james')
Two expressions joined using OR return TRUE if either expression is true. For example,
the following expression returns true when either comparison is true:
"subject" = 'Cheeses' OR "owner_name" = 'donaldm'
NOT
The NOT operator reverses the logic of an expression. The following expression is
a simple example:
"subject" = 'Cheeses'
When the server encounters this expression, it is looking for objects that have a subject
property with the value Cheeses. The server returns TRUE if the subject value is Cheeses
and FALSE if it is not.
Now, look at the same expression with the NOT operator:
NOT("subject" = 'Cheeses')
In this instance, the server looks for the objects with subject properties that do not
contain the value Cheeses. The server returns TRUE if the subject is not Cheeses and
FALSE if the subject is Cheeses.
Order of precedence
You can join any number of expressions together with logical operators. Content Server
imposes no limit. (Note that your underlying RDBMS may impose a limit.) The resulting
complex expression is evaluated from left to right in the order of precedence of the
operators. This order, from highest to lowest, is:
NOT
AND
OR
To illustrate, look at the following example:
NOT expression1 AND expression2 OR expression3 AND expression4
You can change the order of evaluation by using parentheses. For example:
NOT expression1 AND (expression2 OR expression3) AND expression4
Similarly, you can use parentheses to change the precedence of the NOT operator:
NOT(expression1 AND expression2 AND expression3)
The complex expression inside the parentheses is evaluated first and the NOT operator
applied to its result.
This chapter contains descriptions of the DQL statements. The description of each
statement includes:
• Syntax
• Argument descriptions (if any)
• Return value (if appropriate)
• Detailed information about required permissions and usage
• Related statements
• Example
Quoting Object Type Names and Property Names: Documentum recommends that
you put double quotes around all object type names and property names referenced in
applications. Doing that will ensure that the names will not conflict with any DQL
reserved words or any words reserved by your underlying RDBMS. Documentum
object type names and property names will not generate conflicts, but using the quotes
in applications will make sure that no conflicts are generated by user‑defined type or
property names. To encourage this best practice, the DQL examples in our manuals use
the double quotes.
Comments within DQL Statements: DQL does not accept inline comment. An inline
comment is a comment embedded within a DQL statement.
Abort
Syntax
ABORT [TRAN[SACTION]]
Description
The ABORT statement terminates a transaction that was opened with the BEGIN TRAN
statement. Any changes made while the transaction was open are rolled back. They
are not saved to the repository.
The ALTER TYPE statement does not participate in transactions. If you alter a type as
part of an explicit transaction and then issue an ABORT statement, the changes you
made to the type are not reversed.
You can include either keyword, TRAN or TRANSACTION.
Related statements
Alter Group
Syntax
Arguments
Variable Description
group_name Identifies the group you want to modify. Use the
group’s name. The name can be a string, which must
be enclosed in single quotes, or an identifier, which
need not be in quotes.
members Identifies users, groups, or both to add or drop from
the group. You can specify user names representing
individual users or names representing groups. Use
a comma‑separated list to specify multiple names.
Alternatively, you can use a SELECT statement to
identify the members (illustrated in Examples, page
46).
Permissions
To alter a group, you must be either the group’s owner or a user with Superuser user
privileges.
Description
Each ALTER GROUP statement can perform only one type of operation. That is, you
cannot add and drop members in the same statement. Nor can you set an email address
in the same statement that adds or drops members.
Related statements
Examples
The following example adds two users to the group called superusers:
ALTER GROUP superusers ADD steve,chip
The next example uses a SELECT statement to identify which users to add to the
engineering group:
ALTER GROUP engineering ADD (SELECT "user_name"
FROM "dm_user" WHERE "user_os_name" LIKE '%eng%')
The final example defines an email address for the engineering group:
ALTER GROUP engineering
SET ADDRESS 'engineering@lion.stellar.com'
Alter Aspect
Syntax
Arguments
Variable Description
aspect_name Identifies the aspect for which the properties are
defined. Use the object_name of a dmc_aspect_type
object.
[NO] OPTIMIZEFETCH Indicates whether to duplicate the names and values
of the properties in the object’s property bag when
the aspect is attached to an object that has a property
bag. OPTIMIZEFETCH directs Content Server to
store the values in the object’s property bag. NO
OPTIMIZEFETCH directs Content Server not to
duplicate the properties into the property bag. The
default is OPTIMIZEFETCH.
Variable Description
property_def Defines a property for the aspect. Each property
definition has the following format:
property_name domain [REPEATING]
[(property_modifier_list)]
update_modifier
value_assistance_specification
mapping_table_specification
default_specification
constraint_specification
Permissions
Description
Use the ALTER ASPECT statement to add properties to aspects or to drop or modify
properties already attached to an aspect. The statement is also used to define or modify
the fulltext indexing of aspect properties.
Adding properties
You can add a maximum of 30 properties to an aspect in a single operation. If you wish
to add more than 30 to a particular aspect, you must issue multiple ALTER ASPECT
statements.
You cannot add properties to an aspect whose name includes a dot. For example, if the
name of the aspect is “com.mycompany.policy”, then you cannot define properties
for that aspect.
If the ALTER ASPECT statement is inside an explicit transaction, you cannot include
property modifiers (data dictionary information) in the definition.
If you specify OPTIMIZEFETCH when you first add properties to an aspect, you
must specify it also if you add more properties later. Similarly, if you specify NO
OPTIMIZEFETCH, when you first add properties to an aspect, you must specify NO
OPTIMIZEFETCH also if you add more properties later.
When you add a property to an aspect that is already attached to one or more objects,
the value for that property in those objects is the null value (nulldate, nullstring, and
so forth).
Dropping properties
Dropping properties of an aspect also removes the property from objects to which the
aspect is attached.
[NO] OPTIMIZEFETCH
You can choose to optimize performance for fetching or querying aspect properties
by including the OPTIMIZEFETCH keyword in the ALTER ASPECT statement. That
keyword directs Content Server to duplicate the properties and their values into the
property bag of any object to which the aspect is attached, if the object has a property bag.
For more information about property bags, non‑qualifiable properties, and how they are
stored in the object type tables, refer to Content Server Fundamentals.
Syntax Description
ADD_FTINDEX ALL Defines all properties of the aspect for indexing
ADD_FTINDEX Defines for indexing only those aspect properties listed in
property_list property_list.
DROP_FTINDEX ALL Stops indexing of all properties of the aspect
DROP_FTINDEX Stops indexing of those aspect properties listed in
property_list property_list.
When you add or drop indexing for aspect properties, only new objects are affected.
The index is not updated to add or drop aspect property values for aspects attached
to existing objects.
Related statements
None
Examples
Alter Type
Syntax
Arguments
Variable Description
type_name Identifies the type to alter. Use the name defined for
the type when it was created.
Variable Description
hierarchy. Refer to Allowing Partitioning, page 59,
for more information.
policy_id Identifies the default lifecycle for the type. Use the
policy’s object ID.
update_modifier
mapping_table_specification
constraint_specification
component_specification
type_drop_clause
or
property_name (property_modifier_list)
update_modifier
value_assistance_specification
mapping_table_specification
default_specification
constraint_specification
property_drop_clause
Variable Description
[[NOT]QUALIFIABLE]
(property_modifier_list)
Permissions
(For the definition of a read and write or read‑only property, refer to the Object Reference
Manual.)
Description
General notes
You cannot change the definition of a system‑defined type. You can only set a variety of
defaults and data dictionary information. You can change the definition of a user‑defined
type. (Refer to Table 11, page 54 for a summary of valid operations, the types on which
they can be performed, and who can perform them.)
You cannot issue an ALTER TYPE statement in an explicit transaction.
After you execute an ALTER TYPE statement, the changes are not reflected to users
until the global type cache is updated. The updating is automatic but may take several
minutes. Users currently in a session with the repository will not see the type change
if they performed operations on any instance of the type in their session, prior to the
change. (When a user performs an operation on an object, the system caches the object
type definition for that object.)
For more information about property bags, non‑qualifiable properties, and how they are
stored in the object type tables, refer to Content Server Fundamentals.
Localization
If you change data dictionary information that is locale‑specific, such as label_text, it is
changed only in the current locale (defined in the session’s session_locale property).
If you change data dictionary information that is not locale‑specific, such as a constraint
definition, it is changed in all locales.
PUBLISH
Including PUBLISH causes the server to publish the data dictionary information for the
object type or property immediately. Including PUBLISH publishes the changes made
in the ALTER TYPE statement and any other changes to the type or property that are
not yet published.
If you do not include PUBLISH, the information is published the next time the Data
Dictionary Publish job runs.
It is not necessary to include PUBLISH if you are dropping a property from the type
definition. The data dictionary information for the property is automatically removed
in such cases.
property_def defines the new property and has the following syntax:
property_name domain [REPEATING]
[[NOT]QUALIFIABLE](property_modifier_list)
The property name must following the naming rules outlined in the Object Reference
Manual.
domain is any valid DQL datatype. The keyword REPEATING defines the property as a
repeating property. The keyword QUALIFIABLE identifies the property as a qualifiable
property. If you include NOT QUALIFIABLE, the property is a non‑qualifiable property.
QUALIFIABLE is the default. For information about this property characteristic, refer to
QUALIFIABLE and NOT QUALIFIABLE properties, page 55.
Valid property modifiers are described in Property modifiers, page 89.
Do not add more than 30 properties in one ALTER TYPE statement. If the repository is
running against DB2, the sum total of the lengths of all properties defined for the type
is constrained by the page size defined for the tablespace. Table 16, page 87 lists the
tablespace page sizes and the corresponding maximum row length allowed.
Lengthening a character string property
The character string property must be defined for the object type. It cannot be an
inherited property. The only valid change that you can make is to lengthen the property.
The change is applied to all the type’s subtypes and to all existing objects of the type
and its subtypes.
For example, if a string property called employee_name is currently 24 characters, the
following statement would change the length to 32 characters:
ALTER TYPE "test_result" MODIFY ("patient_name" char(32))
If you are running against Sybase, you can lengthen only one property in each execution
of the statement.
Dropping properties from the type
Only properties that are defined for the type can be dropped. You cannot drop an
inherited property. Dropping a property also removes the property from all subtypes of
the type and removes all data dictionary information for the property.
The drop operation fails if the property is an indexed property for the type and there are
existing indexed objects of the type or its subtypes. (An indexed property is a property
whose value is stored in the full‑text index.)
Note: Some relational database management systems (for example, DB2) don’t support
dropping columns from a table (an property is a column in a table in the underlying
RDBMS). For those databases, if you drop a property, the corresponding column in the
table representing the type is not actually removed. If you later try to add a property
to that type that has the same name as the dropped property, you will receive an error
message.
Allowing aspects
Altering an object type to allow instances of the type to accept aspects performs the
following actions on the object type:
• Adds the repeating property, r_aspect_name, to the type definition if the type does
not have the property already
• Adds the i_property_bag property to the type definition if the type does not have the
property already
ALTER TYPE supports two key words to add default aspects to an object type definition:
ADD and SET. The ADD keyword appends the specified aspect or aspects to any others
already associated with the object type. The SET keyword replaces the object type’s
existing defined default aspects with the aspects specified in the statement. The SET
keyword replaces only the default aspects explicitly defined for the type. It does not
replace any inherited default aspects.
For example, suppose you have an object type named “my_custom_type” with two
default aspects, one that is inherited, named full_validation, and one that is defined
for the type: quick_validation. You want to add an aspect named correct_figures. The
following statement adds the correct_figures aspect to the object type definition while
retaining the other two default aspects:
ALTER TYPE my_custom_type ADD DEFAULT ASPECT correct_figures
An error is returned if the specified aspect is not associated with the specified object
type definition.
When you remove a default aspect from an object type, existing instances of the type
are not affected. The aspect remains attached to those instances of the type. You must
remove the aspect from the existing type instances explicitly after removing the default
aspect from the type definition.
Allowing Partitioning
Altering an object type to be partitionable adds an additional attribute, i_partition, to
the type and its subtypes. Since an object creates database entries in the tables for its
type and all its supertypes, the whole type hierarchy must be either partitionable or
non‑partitionable. Predefined types are already partition enabled (or not), so only
user‑defined supertypes can be modified to be partitionable. For example, the following
statement makes my_custom_type a partitionable type:
ALTER TYPE my_custom_type ENABLE PARTITION
An error is returned if the type is already partitionable, or the type is not a user‑defined
type that has no supertype.
If you alter a type to be partitionable, you must use the Administrative method
GENERATE_PARTITION_SCHEME_SQL to generate an SQL script and run that script
against your database to take advantage of data partitioning.
Type modifiers
Type modifiers set or change some properties of the type info object and data dictionary
information for the type. For example, you can set the default storage area, ACL, or
default lifecycle or add constraints to the type. You can also drop data dictionary
information.
You cannot include a type modifier if the ALTER TYPE statement is executing inside an
explicit transaction.
update_modifiers
Update modifiers set or remove property values in the dm_nls_dd_info, dm_dd_info,
and dmi_type_info objects for the type. The dm_nls_dd_info and dm_dd_info objects
hold data dictionary information for the type. The dmi_type_info object holds
non‑structural information about the type. You can set properties in the dmi_type_info
object that define the type’s default ACL, default permissions, default storage area,
and default group.
An update modifier is also used to define a default lifecycle for the type.
The value of acl_name is the ACL’s object name. The acl_domain value is the name of its
owner. The owner’s name is either the user who created the ACL or the alias dm_dbo,
representing the repository owner. The combination of the ACL name and domain
uniquely identifies the ACL within the repository. (For more information about ACLs
and their names and implementation, refer to the Content Server Administration Guide
or Content Server Fundamentals.)
If either the name or domain includes a character (such as a space) that requires you to
enclose the string in single quotes, then you must enclose both strings in single quotes.
If the default ACL is NULL, the server uses the default ACL defined for the type’s
supertype as the default. To set the default ACL to NULL, use the following syntax:
ALTER TYPE type_name SET DEFAULT ACL NULL
If you set the default ACL to NULL, the server automatically sets the
default_owner_permit, default_group_permit, and default_world_permit properties for
the type to NULL also.
Defining the default storage area
The default storage area for a type is where Content Server stores all content files
associated with objects of that type. (Users can change the storage area for an individual
object.)
To set the default storage area for a type, use the following syntax:
ALTER TYPE type_name SET DEFAULT STORAGE[=]storage_area_name
storage_area_name is the name of the storage object representing the storage area.
Defining the default group
To set the default group for a type, use the following syntax:
ALTER TYPE type_name SET DEFAULT GROUP[=]group_name
To set the default lifecycle for a type, use the following syntax:
ALTER TYPE type_name
SET DEFAULT BUSINESS POLICY[=]chronicle_id
[VERSION version_label]
chronicle_id is the object ID of the root version of the lifecycle. The VERSION clause
identifies which version of the lifecycle you want to apply to the type. If you do not
specify a version, the default is the CURRENT version.
mapping_table_specification
A mapping table specification is typically used to map a user‑friendly character string
value to an underlying value that may not be as readable or easy to understand. A
mapping table can also be used to map localized or type‑specific values to an underlying
value.
For example, Desktop Client uses a mapping table defined at the type level to display a
list of the display config objects appropriate for the object type. The actual names of the
display config objects are mapped to more user‑friendly strings. (Display config objects
represent subsets of type properties that have a common display definition.)
If you define a mapping table at the type level, the mappings apply to that object type
and its subtypes.
constraint_specification
You can define the following constraints in a type modifier list:
• Primary key
• Unique key
• Foreign key
• Check
You must have Sysadmin or Superuser user privileges to create a foreign key constraint.
You cannot add a constraint to a system‑defined object type.
The syntax for adding a constraint to a type is:
ALTER TYPE type_name
[FOR POLICY policy_id STATE state_name]
ADD constraint_specification
You cannot include the FOR POLICY clause for primary, unique, or foreign constraints.
The FOR POLICY clause can only be included when you are defining a check constraint.
The clause defines the check constraint as applicable only when instances of the type
are in the specified lifecycle state. You must have at least Version permission on the
lifecycle identified by policy_id.
If you include the FOR POLICY clause, type_name must be the primary type for the
lifecycle identified in policy_id. The policy_id is the object ID of the dm_policy object for
the lifecycle. state_name is the name of the state for which you are defining the constraint.
State names are defined in the lifecycle’s dm_policy object.
To define a check constraint that applies to all states for an object, do not include the FOR
POLICY clause. Any string literals in the check constraint must be ASCII characters.
For an explanation of each constraint specification, refer to constraint_specification,
page 92.
component_specification
Component specifications identify which components can operate on objects of the type.
Use the following syntax to identify a component for a type:
ALTER TYPE type_name
[FOR POLICY policy_id STATE state_name]
component_specification
Include the optional FOR POLICY clause to define the component as applicable only
when objects of the type are in the specified state. You must have at least Version
permission on the lifecycle identified by policy_id to include the FOR POLICY clause.
If you include the clause, type_name must be the primary type for the lifecycle identified
in policy_id. policy_id is the object ID of the dm_policy object for the lifecycle. state_name
is the name of the state for which you are defining the component. State names are
defined in the lifecycle’s dm_policy object.
The format of a valid component specification is described in component_specification,
page 99.
type_drop_clause
A type drop clause removes constraint and component definitions defined for a type.
You cannot remove inherited constraints and component definitions.
• To drop a primary key constraint, use:
ALTER TYPE type_name
DROP PRIMARY KEY
• To drop a unique key constraint, use:
ALTER TYPE type_name
DROP UNIQUE KEY [(property_list)]
property_list identifies the type properties that constitute the key. If there is more
than one property, separate them with a comma.
• To drop a foreign key constraint, you must have Sysadmin or Superuser user
privileges. Use the following syntax:
ALTER TYPE type_name
DROP FOREIGN KEY [(property_list)]
REFERENCES type_name [(attr_list)]
property_list identifies the type properties that constitute the key. If there is more
than one property, separate them with a comma. In the REFERENCES clause,
type_name identifies the object type that contains the referenced properties and
attr_list names the referenced properties.
• To drop check constraints, use:
ALTER TYPE type_name
[FOR POLICY policy_id STATE state_name]
DROP CHECK
DROP CHECK drops all check constraints defined for the type. If you include the
FOR POLICY clause, the statement removes the check constraints defined for the
specified state. You must have at least Version permission on the lifecycle identified
by policy_id to include the FOR POLICY clause.
Note: To drop a single check constraint, use an update modifier to remove or
truncate the val_constraint[x], val_constraint_enf[x], and val_constraint_msg[x]
properties, where x is the index position of the check constraint you want to remove.
• To drop a component, use:
ALTER TYPE type_name
[FOR POLICY policy_id STATE state_name]
DROP COMPONENTS
DROP COMPONENTS drops all components defined for the type. If you include
the FOR POLICY clause, the statement removes the components defined for the
specified state. You must have at least Version permission on the lifecycle identified
by policy_id to include the FOR POLICY clause.
Property modifiers
Property modifiers set or drop data dictionary information for a property. Data
dictionary information includes constraints, value assistance, default value definitions,
and mapping information. Property modifiers set properties of dm_nls_dd_info and
dm_dd_info objects.
You cannot include a property modifier if the ALTER TYPE statement is executing in an
explicit transaction.
update_modifiers
An update modifier lets you directly set a property in a dm_dd_info or nls_dd_info
object. Use the following syntax to include an update modifier:
ALTER TYPE type_name
[FOR POLICY policy_id STATE state_name]
MODIFY (property_name (update_modifier))
Including the FOR POLICY clause makes the change to the property effective only when
instances of the type are in the specified lifecycle state. You must have at least Version
permission on the lifecycle identified by policy_id.
If you include the clause, type_name must be the primary type for the lifecycle identified
in policy_id. The policy_id is the object ID of the dm_policy object for the lifecycle. The
state_name is the name of the state for which you are defining the assistance. State names
are defined in the lifecycle’s dm_policy object.
For a description of valid update modifiers for a property, refer to update_modifier,
page 89.
value_assistance_specification
A value assistance specification identifies one or more values for a property. Typically,
value assistance is used to populate a pick list of values for the property when it appears
as a field on a dialog box.
You cannot add value assistance to a system‑defined object type.
Use the following syntax to add or change the value assistance specification for a
property:
ALTER TYPE type_name
[FOR POLICY policy_id STATE state_name]
MODIFY (property_name (value_assistance_specification))
Including the FOR POLICY clause provides value assistance only when objects of the
type are in the specified lifecycle state. You must have at least Version permission on the
lifecycle identified by policy_id.
If you include the clause, type_name must be the primary type for the lifecycle identified
in policy_id. The policy_id is the object ID of the dm_policy object for the lifecycle. The
state_name is the name of the state for which you are defining the assistance. State names
are defined in the lifecycle’s dm_policy object.
For a description of valid value assistance specifications, refer to value_assistance_
modifier, page 90.
mapping_table_specification
A mapping table specification typically maps a list of character string values to a list of
integer values. This is useful when you want to provide users with an easily understood
list of values for a property that is an integer data type. Use the following syntax to add
or change a mapping table specification:
ALTER TYPE type_name
[FOR POLICY policy_id STATE state_name]
MODIFY (property_name (mapping_table_specification))
If you include the FOR POLICY clause, the mapped values are only available when
instances of the type are in the specified lifecycle state. You must have at least Version
permission on the lifecycle identified by policy_id.
When you include the clause, type_name must be the primary type for the lifecycle
identified in policy_id. The policy_id is the object ID of the dm_policy object for the
lifecycle. The state_name is the name of the state for which you are defining the mapping.
State names are defined in the lifecycle’s dm_policy object.
For a description of valid mapping table specifications, refer to mapping_table_
specification, page 91.
default_specification
A default specification defines the default value for a property. When a new object of
the type is created, the server automatically sets the property to the default value if no
other value is specified by the user.
You cannot add a property and specify a default value for it in the same ALTER TYPE
statement. You must use two ALTER TYPE statements: one to add the property and one
to set its default value.
Use the following syntax to set or change a default specification:
ALTER TYPE type_name
MODIFY (property_name ([SET] default_specification))
For example, the following ALTER TYPE statement sets the default value for one
single‑valued property and one repeating property in the object type mytype:
ALTER TYPE "mytype"
MODIFY ("single_attr" (SET default=NOW)),
MODIFY ("rep_attr" (SET default=(USER)))
The default value must be appropriate for the datatype of the property. For example,
you cannot specify the keyword USER for a date property. You cannot specify NULL
for a repeating property.
constraint_specification
You can specify the following constraints in a property modifier list:
• Primary key
• Unique key
• Foreign key
• Not null
• Check
You must have Sysadmin or Superuser user privileges to create a foreign key constraint.
You cannot add a constraint to a system‑defined object type.
The syntax for adding a constraint to a property is:
ALTER TYPE type_name
[FOR POLICY policy_id STATE state_name]
MODIFY (property_name (ADD constraint_specification))
You cannot include the FOR POLICY clause for primary key, unique key, or foreign key
constraints. The FOR POLICY clause can only be included when you are defining a NOT
NULL or check constraint. The clause defines the constraint as applicable only when
instances of the type are in the specified lifecycle state. To define a NOT NULL or check
constraint that applies to all states for the object, do not include the FOR POLICY clause.
If you include the clause, you must have at least Version permission on the lifecycle
identified by policy_id. The type_name must be the primary type for the lifecycle identified
in policy_id. The policy_id is the object ID of the dm_policy object for the lifecycle. The
state_name is the name of the state for which you are defining the constraint. State names
are defined in the lifecycle’s dm_policy object.
For an explanation of each constraint specification, refer to constraint_specification,
page 92.
property_drop_clause
An property drop clause removes constraints, value assistance, or mapping information
defined for the property. You cannot drop inherited constraints, value assistance, or
mapping information.
• To drop a primary key constraint, use:
ALTER TYPE type_name
MODIFY (property_name (DROP PRIMARY KEY))
property_name identifies the property you are removing from the unique key.
• To drop a foreign key constraint, you must have Sysadmin or Superuser user
privileges. Use the following syntax:
ALTER TYPE type_name
MODIFY (property_name (DROP FOREIGN KEY
[(property_name)] REFERENCES type_name [(attr_name)]))
property_name identifies the property you are removing from the foreign key.
In the REFERENCES clause, type_name identifies the object type that contains the
referenced properties and attr_name identifies the referenced property. If attr_name is
not included, r_object_id is the default.
• To drop check constraints, use:
ALTER TYPE type_name
[FOR POLICY policy_id STATE state_name]
DROP CHECK
DROP CHECK drops all check constraints defined for the type. If you include the
FOR POLICY clause, the statement removes the check constraints defined for the
specified state. You must have at least Version permission on the lifecycle identified
by policy_id.
Note: To drop a single check constraint, use an update modifier to remove or
truncate the val_constraint[x], val_constraint_enf[x], and val_constraint_msg[x]
properties, where x is the index position of the check constraint you want to remove.
• To drop value assistance, use the following syntax:
ALTER TYPE type_name
[FOR POLICY policy_id STATE state_name]
MODIFY (property_name (DROP VALUE ASSISTANCE))
• To drop mapping information, use the following syntax:
ALTER TYPE type_name
[FOR POLICY policy_id STATE state_name]
MODIFY (property_name (DROP MAPPING TABLE))
Related statements
Examples
This example sets the owner’s object‑level permission and the default group for the
user‑defined type called legal_document:
ALTER TYPE "legal_document"
SET OWNER PERMIT browse,
DEFAULT GROUP lawyers
The next example changes the length of the client_comments property in the user‑defined
type called case_report:
ALTER TYPE "case_report"
MODIFY ("client_comments" string(255))
This next example sets the default ACL for the document object type:
ALTER TYPE "dm_document"
SET DEFAULT ACL generic_doc IN dm_dbo
This next example demonstrates the use of single quotes in setting the ACL:
ALTER TYPE "dm_document" SET DEFAULT ACL 'mktg default'
IN 'marketing'
Begin Tran
Syntax
BEGIN TRAN[SACTION]
Permissions
Description
Related statements
Abort, page 44
Commit, page 75
Change...Object
Syntax
Arguments
Variable Description
current_type Identifies the object type of the objects to change. Use
the type’s name.
new_type Specifies the new object type for the objects. Use the
type’s name. Valid new types depend on the object’s
current type. Refer to Rules and constraints on
changing types, page 72 for a complete description.
update_list Specifies one or more change operations to perform
on the objects you are changing.Valid formats are:
set property_name = value set property_
name[[index]] = value append [n]
property_name = value insert property_
name[[index]] = value remove property_
name[[index]] truncate property_
name[[index]]
Variable Description
SEARCH clause Restricts the candidates for change to those that
satisfy the full‑text search condition. Refer to The
SEARCH clause, page 157 for a description of its
syntax and use.
WHERE clause Defines a qualification used to restrict what objects
are changed. Refer to The WHERE clause, page
161 for a description of a valid qualification.
Return value
The CHANGE...OBJECT statement returns a collection identifier. The collection has one
query result object, with one property called objects_changed. The property contains
the number of objects changed.
Permissions
To use this statement, you must have Delete permission for the objects you want to
change.
To use the update_list option to change an object’s owner (owner_name property), you
must be have Superuser user privileges or Change Ownership privilege.
Description
The CHANGE...OBJECT[S] statement lets you change one or more objects from one
custom object type to another.
Note that when you change an object from a subtype to a supertype, you lose the values
of the properties that are inherited from the supertype.
Objects that meet the criteria in the statement are deleted from the repository and
recreated as objects of the specified new type. The recreated objects retain their old
object IDs and all their previous relationships. For example, if a document is annotated,
changing that document to another type of document does not delete its annotations.
You cannot execute CHANGE...OBJECT on an object that is immutable.
• The object’s current type and the new type must have the same type identifier.
The type identifier is the first two characters in an object ID. This value is inherited
from the type’s supertype. For example, all dm_document subtypes have 09 as
their type identifier.
• The old and new types cannot be at the same level in the type hierarchy. The new
type must be a supertype or subtype of the current type. That is, the new type must
be in a direct hierarchical line from the current type.
You can move objects up or down in the object hierarchy but not laterally. For
example, suppose TypeA and TypeB are both subtypes of mybasetype, and TypeC is
a subtype of TypeB. You can change objects of Type B to mybasetype or to TypeC.
You cannot change objects of TypeA directory to TypeB because these two types are
peers in the hierarchy. Nor can you change objects of TypeC to TypeA because
TypeA is not a supertype or subtype of TypeC.
When you change an object to a type that is higher in the hierarchy, the server drops any
properties from the old type that are not in the new type. Similarly, when you move an
object to a type that is lower in the hierarchy, the server adds any properties in the new
type that were not in the old type. Unless you use the update_list option to set these new
properties, the server assigns them default values appropriate for their datatypes.
The optional clauses are applied in the following order:
• The SEARCH clause
• The IN ASSEMBLY clause
• The WHERE clause
Related statements
Create...Object, page 79
Delete...Object, page 103
Update...Object, page 178
Examples
This example changes all special_document documents for which the subject is new
book proposal to the document subtype book_proposal:
Commit
Purpose Commits the changes made during an explicit transaction and closes the
transaction.
Syntax
COMMIT [TRAN[SACTION]]
Permissions
Description
The COMMIT statement closes a transaction that was opened with the BEGIN TRAN
statement and commits to the repository any changes made to objects or files during
the transaction.
You can include either TRAN or TRANSACTION.
Related statements
Abort, page 44
Begin Tran, page 70
Create Group
Syntax
Arguments
Variable Description
group_name Defines the name of the group that you are creating.
This name must be unique among all group names
and user names in the repository. You can specify the
name as an identifier or as a character string literal.
Note: Content Server stores all group names in
lowercase.
email_address Specifies the electronic mail address of the group.
Use a character string literal. You can specify any
email address that is valid for your environment.
members Specifies users to be included in the group. You can
specify user names representing individual users,
names representing other groups, or both. The names
must appear as a comma‑separated list. Alternatively,
you can use a SELECT statement to populate the
group.
Return value
The CREATE GROUP statement returns a collection whose result object has one property,
new_object_id, which contains the object ID of the new group.
Permissions
You must have Create Group, Sysadmin, or Superuser user privileges to create a group.
Description
When you create a group, you are its owner and can alter or delete the group.
Related statements
Examples
The following example creates a group called supers whose members are all the users
with the Superuser user privilege:
CREATE GROUP supers MEMBERS
(SELECT "user_name" FROM "dm_user"
WHERE "user_privileges" >= 16)
The next example creates a group that includes all of Ron’s co‑workers but not Ron:
CREATE GROUP rons_baby_gift WITH MEMBERS
This final example creates a group and defines an email address for that group:
CREATE GROUP client_group
WITH ADDRESS 'john@jaguar.docu.com'
MEMBERS john,regina,kendall,maria
Create...Object
Syntax
Arguments
Variable Description
type_name Identifies the type of object to create. Specify the
name of the object type. You can use any valid type in
the repository with the exception of the object types
that represent aspect properties. type_name cannot
be the name of a type representing a type describing
aspect properties.
update_list Specifies one or more operations you want to perform
on the new object. Valid formats are:
set property_name = value set
property_name[[index]] = value
append [n]property_name = value
insert property_name[[index]] = value
remove property_name[[index]] truncate
property_name[[index]] [un]link 'folder
path' move [to] 'folder path'
Variable Description
SETFILE clause WITH Adds the first content file to the new object. Refer
CONTENT_ FORMAT option to WITH CONTENT_FORMAT option, page 81 for
details.
SETFILE clause WITH Adds additional content to the object. Refer to WITH
PAGE_NO option PAGE_NO option, page 81 for details.
Return value
The CREATE...OBJECT statement returns a collection whose result object has one
property, object_created, which contains the object ID of the new object.
Permissions
Anyone can issue the CREATE...OBJECT statement. However, you must have Superuser
privileges to include the SETFILE clause.
Description
The CREATE...OBJECT statement creates and saves a new object. As part of the process,
you can set some of the object’s properties, specify a storage location for the object, and
associate one or more content files with the object.
If you do not use the link update option to define a storage location, the new object is
stored in your default folder or cabinet.
add the first content file to the object. All subsequent additions must have the same
format. Consequently, specifying the format for content additions after the first file is
not necessary. Instead, you must specify the content’s position in the ordered list of
content files for the object.
To add the first content, use the SETFILE clause with the WITH CONTENT_FORMAT
option.
To add additional content, use the SETFILE clause with the PAGE_NO option.
You can’t include both options in a single SETFILE clause.
WITH CONTENT_FORMAT option
Use this SETFILE option to add the first content file to a new object. The syntax is:
SETFILE 'filepath' WITH CONTENT_FORMAT='format_name'
Related statements
Change...Object, page 71
Delete...Object, page 103
Update...Object, page 178
Examples
The following example creates a new document and sets its title and subject:
This example creates a new document, sets its title, and adds two content files. The
example is shown for both Windows and UNIX platforms.
On Windows:
CREATE "dm_document" OBJECT
SET "title" = 'Grant Proposal',
SETFILE 'c:\proposals\grantreq.doc'
WITH CONTENT_FORMAT='msww',
SETFILE 'c:\proposals\budget.doc' WITH PAGE_NO=1
On UNIX:
CREATE "dm_document" OBJECT
SET "title" = 'Grant Proposal',
SETFILE 'u12/proposals/grantreq.doc
WITH CONTENT_FORMAT='msww',
SETFILE 'u12/proposals/budget.doc' WITH PAGE_NO=1
Create Type
Syntax
To create a type:
CREATE TYPE type_name
[(property_def {,property_def})]
[WITH] SUPERTYPE parent_type
[type_modifier_list] [PUBLISH]
Arguments
Variable Description
type_name Names the new type. Use any valid name that is
unique among the other user‑defined type names in
the repository. Types with names beginning with dm
can only be created by a user with Superuser user
privileges.
Variable Description
property_def continued property_modifier_list defines data dictionary
information for the property. Valid property
modifiers are:
update_modifier
value_assistance_specification
mapping_table_specification
default_specification
constraint_specification
Variable Description
type_modifier_list Defines data dictionary information for the type.
Valid type modifiers are:
update_modifier
mapping table specification
constraint_specification
component_specification
Return value
The CREATE TYPE statement returns a collection whose result object has one property,
new_object_ID, which contains the object ID of the new object type.
Permissions
You must have Create Type, Sysadmin, or Superuser privileges to create a new object
type.
To define read‑only properties for a new type (properties whose names begin with r_) or
to create a type that has no supertype, you must have Superuser privileges.
If the statement sets locale‑specific information for the new type or properties, your
session locale must match exactly one of the locales defined in the dd_locales property of
the docbase config object.
Description
Table 16. DB2 tablespace page sizes and associated maximum row lengths
Additionally, be sure to follow the naming rules for properties described in the Object
Reference Manual.
Note: Default ACL inheritance is defined in the server config object, in the default_acl
property. If that property is set to 2, for type‑based ACL inheritance, when a user creates
an instance of the type and does not explicitly assign an ACL to the object, the server will
assign the ACL associated with the object type.
Localization
When you create a new type, any data dictionary information that you define for the type
or its properties in the statement is published in all locales identified in the dd_locales
property of the docbase config object.
PUBLISH
Including PUBLISH causes the server to publish the data dictionary information for
the object type immediately. Publishing creates the dd type info , dd attr info, and dd
common info objects that store the published data dictionary information for the object
type.
If you don’t include PUBLISH, the information is published the next time the Data
Dictionary Publish job runs.
PARTITIONABLE Types
A partitionable type (and its subtypes) has an additional attribute, i_partition. Since an
object creates database entries in the tables for its type and all its supertypes, the whole
type hierarchy must be either partitionable or non‑partitionable. Predefined types are
already partition enabled (or not), so only user‑defined supertypes can be created as
partitionable.
If you create a partitionable type, you must use the Administrative method
GENERATE_PARTITION_SCHEME_SQL to generate an SQL script and run that script
against your database to take advantage of data partitioning.
SHAREABLE Type
A shareable type is created for use with lightweight SysObjects. A shareable object acts
as the parent to the lightweight SysObject. Creating a shareable type creates additional
non‑inherited properties, i_sharing_type, i_orig_parent, and allow_propagating_changes
to the type, in addition to the properties explicitly specified, and marks it as a shareable
type. See Content Server Fundamentals for a discussion of shareable and lightweight
SysObjects.
LIGHTWEIGHT Type
A lightweight object shares its SysObject properties with other lightweight objects,
reducing storage requirements for the object. A shareable object acts as the parent to
the lightweight SysObject, and contains the properties shared among the lightweight
types. Creating a lightweight type creates the i_sharing_parent property, in addition
to the custom properties explicitly specified, and marks it as a lightweight type. This
property links the child lightweight object with its shareable parent. See Content Server
Fundamentals for a discussion of shareable and lightweight SysObjects.
Property modifiers
Property modifiers define data dictionary information for a property. Defining property
modifiers sets properties in data dictionary‑related objects for the type. It does not set
any dm_type or dm_type_info properties for the type.
update_modifier
An update_modifier specification can be:
SET property_name[[index]]=value
APPEND property_name=value
INSERT property_name[[index]]=value
REMOVE property_name[[index]]
TRUNCATE property_name[[index]]
value_assistance_modifier
A value assistance modifier identifies one or more values for the property. Typically,
value assistance is used to populate a pick list of values for the property when it appears
as a field on a dialog box. A value assistance modifier has the following format:
VALUE ASSISTANCE IS
[IF (expression_string)
va_clause
(ELSEIF (expression_string)
va_clause)
ELSE]
va_clause
[DEPENDENCY LIST ([property_list])
query_string is a DQL query. You can use the special token, $$, in the query string.
When the query is executed, a single dollar sign will appear in the query in place
of the token.
The QRY ATTR clause defines which of the properties in the selected values list to
display. Typically, query_string has only one property in its selected values list—the
property for which you are providing the value assistance. However, some situations
may require you to put more than one property in the selected values list. In such
cases, the server assumes that the first property selected is the property for which
you are providing value assistance. If this is not the case, you must include the QRY
ATTR clause to define which property is the property for which you are providing
assistance.
The ALLOW CACHING clause permits clients to cache the query results.
dependency clause
The DEPENDENCY LIST clause identifies the properties on which expression_string
depends. The default is all properties named in the expression_strings.
mapping_table_specification
A mapping table specification most commonly maps a list of descriptive character
strings to a corresponding list of integers. For example, assume an object type has an
integer property called country in which each value represents a different country. If
you display that property in a dialog box, you want users to see a name for each country
rather than an integer value. Using a mapping table specification, you can map the
integer values to corresponding country names.
The syntax is:
MAPPING TABLE (map_element {,map_element})
For example:
MAPPING TABLE (VALUE=4
DISPLAY=Spain
COMMENT='Added to list in first quarter 98')
The default for DISPLAY is the data value as a character string literal. The default for
COMMENT is a NULL string.
default_specification
A default specification provides a default value for a property. When a user creates a
new instance of the type, Content Server automatically sets the property to the default
value if no other value is specified by the user.
The default value can be specified as:
• A literal value
• One of the following keywords: USER, NOW, TODAY, TOMORROW, YESTERDAY
• NULL (This option is not valid for repeating properties.)
For a single‑valued property, the syntax is:
DEFAULT[=]default_value
If you specify the default value with a keyword that indicates a date or time, the keyword
is specified using the DATE function:
DATE(keyword)
For example, the following statement creates object type mytype with one single‑valued
date property and one repeating string property and defines a default value for each:
CREATE TYPE "mytype" ("single_attr" date (default=date(NOW)),
"rep_attr" string(32) repeating (default=(USER)))
WITH SUPERTYPE "dm_document"
The default value must be appropriate for the datatype of the property. For example,
you cannot specify the keyword USER for a date property. You cannot specify NULL
for a repeating property.
constraint_specification
A constraint_specification defines constraints for a property. For example, you can define
a check constraint to provide data validation for the property. Or you can make the
property a unique key for the type. Constraints are not enforced by Content Server. If
you define a constraint for a property, it must be enforced by your client application.
You can define five kinds of constraints in a property modifier list:
• Primary key
• Unique key
• Foreign key
• Not null
• Check
If you define a primary key, unique key, foreign key, or check constraint in a property
modifier list, only the single property for which the constraint is defined can be part of
the constraint. If the constraint must include multiple properties, define it in the type
modifier list.
For each constraint, you can define an error message to display if the constraint is
violated. You can also indicate whether the constraint is enforced by the application or
disabled. Enforcement information is stored in the data dictionary but not used by
Content Server.
Any constraint you define is inherited by all the type’s subtypes.
Refer to Content Server Fundamentals for expanded information about the constraints
and what they do.
Primary key
You can define a primary key constraint only on single‑valued properties. The property
must also have a NOT NULL constraint. You can define only one primary key for a
type. (A type may have more than one primary key if it inherits a primary key from
its supertype.)
To define a primary key constraint in a property modifier list, use:
PRIMARY KEY
[REPORT 'message_string '[ON VIOLATION]]
[DISABLE|ENFORCE [BY] APPLICATION]
message_string is a string literal that contains the error message you want displayed if
the constraint is violated. You can include the following special tokens in the message
to parameterize it:
• $value(property_name)
When the message is displayed, $value(property_name) is replaced with the value
entered by the user in the field associated with the property. The property name
must be enclosed in parentheses with no spaces before the opening parenthesis.
For example:
The security type must be folder" or cabinet and you
entered $value(security_val).
• $$
Use $$ in a message string to display a single dollar sign in the message.
The DISABLE|ENFORCE clause lets you specify that the constraint is either disabled or
enforced by the client application. Content Server does not enforce constraints.
Unique key
The syntax for a unique key constraint specification in a property modifier list is:
UNIQUE KEY
[REPORT 'message_string '[ON VIOLATION]]
Refer to the preceding description of a primary key constraint for information about the
error message and enforcement clauses.
Foreign key
You must have Sysadmin or Superuser user privileges to create a foreign key. To define
a foreign key constraint in a property modifier list, use:
FOREIGN KEY REFERENCES type_name [(property_name)]
[REPORT 'message_string '[ON VIOLATION]]
[DISABLE|ENFORCE [BY] APPLICATION]
type_name identifies the foreign object type that contains the referenced property.
property_name identifies the referenced property in type_name. The referenced property
must have the same datatype as the property for which you are defining the constraint.
If property_name is not included, the server assumes that the referenced property is
r_object_id. In this case, the property for which you are defining the foreign key must
have an ID datatype.
Refer to Primary key, page 93 for information about the error message and enforcement
clauses.
Not null
A NOT NULL constraint means that the property can’t have a NULL value. To define a
NOT NULL constraint specification, use:
NOT NULL
[REPORT 'message_string '[ON VIOLATION]]
[DISABLE|ENFORCE [BY] APPLICATION]
Refer to Primary key, page 93 for information about the error message and enforcement
clauses.
Check
Check constraints are used most commonly for data validation. The constraint consists
of an expression or routine that must return TRUE. If it returns FALSE, the property’s
value violates the constraint. To define a check constraint, use:
CHECK(expression_string)
FROM OBJECT(object_id |
PATH folder_path[VERSION version_label])
[LANGUAGE docbasic]
[REPORT 'message_string' [ON VIOLATION]]
Type modifiers
Type modifiers define data dictionary information for the type. For example, you can set
the type’s default lifecycle or define constraints for the type. Type modifier set properties
in the data dictionary objects for the type. No properties are set in the dm_type or
dm_type_info objects for the type.
update_modifier
You can use the same update modifiers for types as for properties (refer to Property
modifiers, page 89). In addition, you can use the following to set the default lifecycle
for a type:
SET DEFAULT BUSINESS POLICY[=]
chronicle_id [VERSION version_label]|
NULL|
NONE
chronicle_id is the object ID of the root version of the lifecycle. The VERSION clause
identifies which version of the lifecycle you want to use. The default is the CURRENT
version.
If you set the default lifecycle to NULL, the type inherits the default lifecycle from its
supertype.
If you set the default lifecycle to NONE, the type has no default lifecycle.
mapping_table_specification
A mapping table specification is typically used to map a user‑friendly character string
value to an underlying value that may not be as readable or easy to understand. A
mapping table can also be used to map localized or type‑specific values to an underlying
value.
For example, Desktop Client uses a mapping table defined at the type level to display a
list of the display config objects appropriate for the object type. The actual names of the
display config objects are mapped to more user‑friendly strings. (Display config objects
represent subsets of type properties that have a common display definition.)
If you define a mapping table at the type level, the mappings apply to that object type
and its subtypes.
constraint_specification
You can define four kinds of constraints in a type modifier list:
• Primary key
• Unique key
• Foreign key
• Check
For each constraint, you can define an error message to display if the constraint is
violated. You can also indicate whether the constraint is enforced by the application or
disabled. Enforcement information is stored in the data dictionary but not used by
the Content Server.
Constraints are defined in a type modifier list if the constraint includes multiple
properties. For example, if two properties make up the primary key for a type, the
primary key constraint must be defined in the type modifier list. If only a single property
defines the constraint, the constraint is typically defined in the property modifier list for
the property rather than the type modifier list.
Refer to Content Server Fundamentals for more information about the constraints and
their use.
Primary key
You can define only one primary key for a type. (A type may have more than one
primary key if it inherits a primary key from its supertype.) To define a primary key
constraint in a type modifier list, use:
PRIMARY KEY (property_list)
[REPORT 'message_string '[ON VIOLATION]]
[DISABLE|ENFORCE [BY] APPLICATION]
property_list is a comma‑separated list of the properties that make up the key. The
properties must be single‑valued properties and each must have a NOT NULL constraint.
Additionally, all the properties must be defined for the same object type.
message_string is a string literal that contains the error message you want displayed if the
constraint is violated. You can include two special tokens in the message to parameterize
it:
• $value(property_name)
When the message is displayed, the server replaces $value(property_name) with the
value entered by the user in the field associated with the property. The property
name must be enclosed in parentheses with no space before the opening parenthesis.
For example:
The security type must be folder or cabinet and you
entered $value(security_val).
• $$
Use $$ in a message string to display a single dollar sign in the message.
The DISABLE|ENFORCE clause lets you specify that the constraint is either disabled or
enforced by the client application. Content Server does not enforce constraints.
Unique key
To define a unique key constraint, use:
UNIQUE KEY (property_list)
[REPORT 'message_string '[ON VIOLATION]]
[DISABLE|ENFORCE [BY] APPLICATION]
property_list is a comma‑separated list of the properties that make up the key. The
properties can be either single‑valued or repeating properties, but all must be defined
for the same object type.
Refer to the description of a primary key constraint on Primary key, page 96 for
information about the error message and enforcement clauses.
Foreign key
You must have Sysadmin or Superuser user privileges to define a foreign key constraint.
Use the following syntax:
FOREIGN KEY (property_list)
REFERENCES type_name [(attr_list)]
[REPORT 'message_string'[ON VIOLATION]]
[DISABLE|ENFORCE [BY] APPLICATION]
Check
Check constraints are used most commonly for data validation. The constraint consists
of an expression or routine that must return TRUE. If it returns FALSE, the property’s
value violates the constraint. Check constraints are defined at the type level when
expression_string references two or more properties. To define a check constraint, use:
CHECK(expression_string)
mapping_table_specification
A mapping table specification is typically used to map a user‑friendly character string
value to an underlying value that may not be as readable or easy to understand. A
mapping table can also be used to map localized or type‑specific values to an underlying
value.
For example, Desktop Client uses a mapping table defined at the type level to display a
list of the display config objects appropriate for the object type. The actual names of the
display config objects are mapped to more user‑friendly strings. (Display config objects
represent subsets of type properties that have a common display definition.)
If you define a mapping table at the type level, the mappings apply to that object type
and its subtypes.
component_specification
Component specifications identify which components can operate on objects of the
type. The syntax is:
COMPONENTS (component_id_list)
Related statements
Examples
The following example creates a new subtype called employee, sets the label text for
most properties and constraints in the property modifier list and the type modifier list,
and publishes the data dictionary information.
CREATE TYPE "employee"
(
"emp_ssn" string(10)
(PRIMARY KEY,
CHECK ('Len(emp_ssn)=10'
LANGUAGE docbasic)
REPORT 'The SSN must have exactly 10 digits.'
ENFORCE BY APPLICATION,
SET "label_text"='Social Security Number'),
"emp_first_name" string(32)
(SET "label_text"='First Name',
NOT NULL),
"emp_middle_name" string(32)
(SET "label_text"='Middle Name'),
"emp_last_name" string(32)
(SET "label_text"='Last Name',
NOT NULL),
"emp_disambiguator" integer,
"emp_department" integer
(FOREIGN KEY REFERENCES "department" ("department_id")
The following example creates a subtype of dm_document and publishes its information
in the data dictionary:
CREATE TYPE "legal"
("lawyer" CHAR(30),"case_number" INT,
"defendants" CHAR(30) REPEATING)
WITH SUPERTYPE "dm_document" PUBLISH
100 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Delete
Delete
Syntax
Arguments
Variable Description
table_name Identifies the registered table from which you
are removing rows. Use the name of table in the
underlying RDBMS.
qualification Defines the conditions used to restrict the rows that
are deleted. Refer to The WHERE clause, page 161 for
a description of the valid forms of a qualification.
Return value
The DELETE statement returns a collection whose result object has one property,
rows_deleted, that contains the number of rows deleted.
Permissions
EMC Documentum Content Server Version 6.5 DQL Reference Manual 101
Delete
• The user account under which Content Server is running must have the appropriate
RDBMS permission to delete from the specified table. (The actual name of this
permission will depend on your RDBMS.)
(For more information about security and object‑level and table permissions, refer to
the Content Server Administration Guide.)
Description
The DELETE statement deletes rows from a registered table. A registered table is a
table in the underlying RDBMS that has been registered with Content Server. (Refer to
Register, page 123 for information about registering tables.) All rows for which the
WHERE clause qualification evaluates to TRUE are deleted.
Related statements
Examples
The following example deletes the rows in the registered table authors_table that contain
the name of any author who is not also found in the authors property of a document:
DELETE FROM "authors_table"
WHERE NOT EXISTS (SELECT * FROM "dm_document"
WHERE ANY "authors" = authors_table.name)
102 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Delete...Object
Delete...Object
Syntax
DELETE [PUBLIC]type_name[(ALL)]
[correlation_variable]
[WITHIN PARTITION (partition_id {,partition_id})
OBJECT[S]
[IN ASSEMBLY document_id [VERSION version_label]
[NODE component_id][DESCEND]]
[SEARCH fulltext search condition]
[WHERE qualification]
Arguments
Variable Description
type_name Identifies the type of object to remove from the
repository. Valid type_names are:
EMC Documentum Content Server Version 6.5 DQL Reference Manual 103
Delete...Object
Variable Description
IN ASSEMBLY clause Restricts the statement to objects in a particular
assembly.
Return value
The DELETE...OBJECT statement returns a collection whose result object has one
property, objects_deleted, that contains the number of objects deleted.
104 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Delete...Object
Permissions
Description
General notes
Deleting objects is subject to the following conditions:
• The object cannot belong to a frozen assembly or a frozen or immutable virtual
document.
• If the compound_integrity property in the server’s server config object is set to TRUE,
the object cannot belong to any virtual document, regardless of the whether the
document is immutable or not.
The type_name argument specifies the type of object to delete. The server searches all
objects of the specified type and any subtypes for objects that meet any additional
criteria you define in the statement.
The keyword PUBLIC restricts the query to those objects with the r_is_public property
set to TRUE. If the query contains a SEARCH clause, the full‑text search is restricted to
those documents for which ISPUBLIC is TRUE. When the server queries or searches only
public objects, it uses only the setting of r_is_public for security checks.
The keyword ALL directs the server to consider all versions of each object. If you do not
include ALL, the server only considers versions with the symbolic label CURRENT. You
must enclose ALL in parentheses.
After the server finds all objects that meet the defined criteria, it deletes those for which
you have Delete permission. If any of the objects that are otherwise eligible for deletion
belong to a frozen assembly or an unchangeable virtual document, then the entire
statement is rolled back and no objects are deleted.
The optional clauses, WITHIN PARTITION, IN ASSEMBLY, SEARCH, and WHERE,
restrict the statement’s scope. The WITHIN PARTITION clause restricts the operation to
particular partitions. The IN ASSEMBLY clause restricts the operation to a particular
virtual document assembly or node (component) within the virtual document. The
SEARCH clause restricts the operations to indexed objects that meet the fulltext search
condition. The WHERE clause restricts the operations to objects that meet the specified
qualification. The clauses are applied in the following order:
• SEARCH
• IN ASSEMBLY
• WHERE
EMC Documentum Content Server Version 6.5 DQL Reference Manual 105
Delete...Object
You cannot use DELETE...OBJECT to destroy record objects. Use the Destroy API
command instead.
Related statements
Change...Object, page 71
Create...Object, page 79
Update...Object, page 178
Examples
The following statement deletes all documents that contain the word yeast but not the
word rolls:
DELETE "dm_document" OBJECTS
SEARCH DOCUMENT CONTAINS 'yeast' AND NOT'rolls'
This statement deletes all documents that contain the words yeast and bread and those
that contain the words cake and wedding:
DELETE "dm_document" OBJECTS
SEARCH DOCUMENT CONTAINS 'yeast' AND 'bread'
OR 'cake' AND 'wedding'
The following statement deletes all workflows that have either Janine or Jeremy as
a supervisor:
DELETE "dm_workflow" OBJECTS
WHERE "supervisor_name" = 'janine' OR
"supervisor_name" = 'jeremy'
This example also deletes all workflows that have Janine or Jeremy as a supervisor:
DELETE "dm_workflow" OBJECTS
WHERE "supervisor_name" IN ('janine','jeremy')
106 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Drop Group
Drop Group
Syntax
Syntax description
Variable Description
group_name Identifies the group to remove from the repository.
You can specify the name as an identifier or as a
character string literal.
Permissions
You must be the owner of a group or have Superuser user privileges to drop a group.
General notes
When you drop a group, Content Server also removes any registry objects that identify
the group as the subject of an audit or event notification request.
Related statements
EMC Documentum Content Server Version 6.5 DQL Reference Manual 107
Drop Group
Example
108 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Drop Type
Drop Type
Syntax
Arguments
Variable Description
type_name Identifies the object type to remove.
Permissions
You must own the type or have Superuser privileges to drop a type.
Description
EMC Documentum Content Server Version 6.5 DQL Reference Manual 109
Drop Type
Related statements
Examples
110 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Execute
Execute
Syntax
Arguments
Argument Description
admin_method_name Specifies which administration method you want to
execute. Table 22, page 112 lists the methods.
Return value
The EXECUTE statement returns a collection. The properties of the query result object
in the collection depend on which administration method was executed. Refer to the
description of each method in Chapter 3, Administration Methods, for details.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 111
Execute
Permissions
The privileges required depend on the administration method you are executing. Refer
to the description of the individual method in Chapter 3, Administration Methods,
for information.
Description
The EXECUTE statement is the DQL equivalent of the IDfSession.apply method. You can
use EXECUTE to invoke any of the administration methods that you can invoke using
the apply method except PING and WEBCACHE_PUBLISH. These cannot be executed
using the EXECUTE statement.
Table 22, page 112, lists the administration methods that you can invoke with the
EXECUTE statement and briefly describes the task that each performs.
112 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Execute
EMC Documentum Content Server Version 6.5 DQL Reference Manual 113
Execute
114 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Execute
EMC Documentum Content Server Version 6.5 DQL Reference Manual 115
Execute
116 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Execute
The EXECUTE statement is not case sensitive. Also, you do not have to specify the
datatype of the arguments for each function. The statement determines the datatype
from the value you assign to the argument.
Examples
EMC Documentum Content Server Version 6.5 DQL Reference Manual 117
Grant
Grant
Syntax
Arguments
Argument Description
privilege Identifies the privilege you want to grant. Valid
privileges are
SUPERUSER
SYSADMIN
CREATE TYPE
CREATE CABINET
CREATE GROUP
CONFIG AUDIT
PURGE AUDIT
VIEW AUDIT
users Identifies the users to whom you want to a privilege
or privileges. The user name must belong to an
individual user. You can specify one or more users
as a comma‑separated list of user names or use a
SELECT statement to identify the user names. (Refer
to Examples, page 119, for the use of a SELECT
statement.)
118 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Grant
Permissions
To grant Superuser or Sysadmin user privileges, you must have Superuser privileges.
To grant Create Group, Create Type, or Create Cabinet user privileges, you must have
Superuser or Sysadmin user privileges.
To grant Config Audit, Purge Audit, Or View Audit privileges, you must be the
repository owner or a Superuser. Repository owners and Superusers cannot grant these
privileges to themselves.
Description
Granting a privilege to a user who already has that particular privilege does not generate
an error.
Related statements
Examples
The following example grants the Create Type user privilege to the users donna and carol:
GRANT CREATE TYPE TO donna,carol
This example grants the Create Cabinet user privilege to all individual users (that is, to
those user names that do not represent a group):
GRANT CREATE CABINET TO
(SELECT "user_name" FROM "dm_user"
WHERE "r_is_group" = FALSE)
The final example grants two privileges to the users jim and mike:
GRANT SYSADMIN,SUPERUSER TO jim,mike
EMC Documentum Content Server Version 6.5 DQL Reference Manual 119
Insert
Insert
Syntax
Arguments
Argument Description
table_name Identifies the registered table in which you want to
insert new rows.
column_name Identifies a column in the table to receive an assigned
value.
value Specifies the value assigned to a column. The number
of values specified must equal the number of columns
named or the number of columns in the table. Refer
to Assigning values to columns, page 121 for more
information.
dql_subselect Specifies a SELECT statement. The returned values
are inserted into the table.
Return value
The INSERT statement returns a collection whose result object has one property,
rows_inserted, that contains the number of rows inserted into the table.
Permissions
120 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Insert
• Your object‑level permission for the dm_registered object representing the RDBMS
table must be at least Browse.
• Your table permission for the dm_registered object representing the table must be
DM_TABLE_INSERT.
• The user account under which Content Server is running must have the appropriate
RDBMS permission to insert data into the specified table. (The actual name of this
permission will depend on your RDBMS.)
For more information about security and object‑level and table permissions, refer to
the Content Server Administration Guide.
Description
Defining values
There are two possible ways to define the values to assign to columns. You can use the
VALUES clause or you can use a DQL subselect statement.
The VALUES clause has the syntax:
VALUES value {,value}
One value must be specified for each column named in the statement. Each value
must be a literal value appropriate for the datatype of the column to which it is being
assigned. For example, assume there is a registered table called customer_accounts and
that you want to insert values into four of its columns: customer_name, acct_number,
open_date, and balance. The customer_name and acct_number columns are character
EMC Documentum Content Server Version 6.5 DQL Reference Manual 121
Insert
string datatypes. The open_date column is a date datatype, and the balance column is a
floating point datatype. The following statement inserts values into these columns:
INSERT INTO "customer_accounts" ("customer_name","account_number","open_date,
balance") VALUES ('Henrietta Hornsby','01264',date('4/2/1993'),125.00)
The value Henrietta Hornsby is inserted into the customer_name column, the value
01264 is inserted into the account_number column, and so forth.
Similarly, when you use a subselect statement, the returned values must be equal in
number to the number of columns named in the INSERT statement and the values must
be appropriate for the column into which they will be inserted. (Refer to Select, page
130 for the subselect statement’s syntax.)
Related statements
Examples
This example saves the object names and creation dates of the contents of the flowers
folder into the objects table:
INSERT INTO "objects" ("o_name", "c_date")
SELECT "object_name", "r_creation_date"
FROM "dm_document"
WHERE FOLDER ('/public/subject/flowers')
122 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Register
Register
Purpose Registers a table from the underlying RDBMS with the repository.
Syntax
Arguments
Argument Description
owner_name Identifies the table’s owner.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 123
Register
Argument Description
table_name Identifies the RDBMS table to register with the
repository.
float, double
integer, int
char, character, string
date, time
124 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Register
Argument Description
column_list Identifies the columns in the table on which indexes
have been built. Use a comma‑separated list of
column names.
table_ identification The name of the table in the underlying RDBMS.
Return value
When issued through IDQL, the REGISTER statement returns the object ID of the
dm_registered object for the table. If you issue the statement through IAPI (using the
Query method), the statement returns a collection whose result object has one property,
called new_object_id, that contains the object ID of the dm_registered object for the table.
Note: IAPI is a deprecated feature.
Permissions
To register a table, you must own the table or have Superuser user privileges. If folder
security is enforced in the repository, you must also have at least Write permission on
the System cabinet.
Description
General notes
When you execute the REGISTER statement, the server creates an object of type
dm_registered (a SysObject subtype) that represents the RDBMS table in the repository.
This object is automatically linked to the system (/system) cabinet.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 125
Register
After he registers the table, he can use the synonym in DQL statements and it is passed
directly to the database server. For example, issuing the following DQL:
SELECT * FROM johndoe."remote1"
126 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Register
When you run against MS SQL Server or Sybase, Content Server substitutes the value
you specified in the SYNONYM clause (recorded in the synonym_for property) for the
table name in the SELECT, INSERT, UPDATE and DELETE statements. For example,
suppose johndoe issues the following REGISTER statement:
REGISTER TABLE johndoe."remote1" ("columnA" int)
SYNONYM FOR londonserver.londonremote.johndoe.myremotetable
Content Server substitutes the actual table name for the synonym and the following
SQL is generated:
SELECT * FROM londonserver.londonremote.johndoe.myremotetable
Special note for Oracle platforms
If you create a database link between the database on which the Documentum repository
is installed and another database, and then the use SYNONYM feature to obtain
information from that second database, both databases must be in the same codepage.
Related statements
Examples
EMC Documentum Content Server Version 6.5 DQL Reference Manual 127
Revoke
Revoke
Purpose Removes one or more user privileges from one or more users.
Syntax
Arguments
Argument Description
privilege Specifies the privilege to revoke. Valid privileges are:
SUPERUSER
SYSADMIN
CREATE TYPE
CREATE CABINET
CREATE GROUP
CONFIG AUDIT
PURGE AUDIT
VIEW AUDIT
users Specifies the users from whom you are revoking
the specified privilege or privileges. The user name
must belong to an individual user. You can specify
one or more users as a comma‑separated list of user
names or use a SELECT statement to identify the user
names. (Refer to Examples, page 129 for the use of a
SELECT statement.)
128 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Revoke
Permissions
To revoke the Sysadmin or Superuser user privilege, you must have Superuser user
privileges.
To revoke the Create Group, Create Type, or Create Cabinet user privilege, you must
have either Superuser or Sysadmin user privileges.
To revoke Config Audit, Purge Audit, Or View Audit privileges, you must be the
repository owner or a Supersuser. Repository owners and Superusers cannot revoke
these privileges from themselves.
Description
The statement succeeds even if a user does not have the privilege being revoked.
Related Statements
Examples
The following example revokes the Create Cabinet and Create Type privileges from the
users john and howard:
REVOKE CREATE CABINET, CREATE TYPE FROM john, howard
The next example demonstrates the use of a subselect statement to identify the users.
This example revokes the Superuser user privilege from all users except haroldp:
REVOKE SUPERUSER FROM
(SELECT "user_name" FROM "dm_user"
WHERE "user_privilege" >= 16 AND "user_name" != 'haroldp')
EMC Documentum Content Server Version 6.5 DQL Reference Manual 129
Select
Select
Syntax
130 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Select
Arguments
Argument Description
base_permit_level Defines a minimum permission level for the returned
objects. If specified, the query returns only those
objects for which the user has at least the specified
permit level.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 131
Select
Argument Description
AS name Defines a name for the result object property that
will contain the retrieved value. This argument
is optional. If you omit it, the system provides a
default name. (Refer to The AS clause, page 149 for
information about the default name.)
Argument Description
EMC Documentum Content Server Version 6.5 DQL Reference Manual 133
Select
Argument Description
qualification Restricts returned results to objects meeting the
conditions in the qualification. Refer to The WHERE
clause, page 161 for a full description of the valid
forms of a qualification for a WHERE clause or a
HAVING clause.
dql_subselect Defines an additional DQL SELECT statement. The
columns returned by the statement must correspond
to those returned by the outermost SELECT statement
in number and datatype.
SQL_DEF_RESULT_SET N
FORCE_ORDER
RETURN_TOP N
OPTIMIZE_TOP N
FETCH_ALL_RESULTS N
OPTIMIZATION_LEVEL level_1 level_2
UNCOMMITTED_READ
FTDQL
NOFTDQL
TRY_FTDQL_FIRST
ROW_BASED
GROUP_LIST_LIMIT N
HIDE_SHARED_PARENT
134 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Select
Argument Description
Appendix A, Using DQL Hints, which contains full
information about all the standard hints.
Description
General notes
The SELECT statement retrieves information from object types and RDBMS tables.
By default, the statement returns only objects for which the user has at least Browse
permission. If you want to enforce a higher level of permission on the returned objects,
you can include the FOR base_permit_level clause. For example, suppose you issue the
following SELECT statement:
SELECT FOR VERSION "r_object_id","object_name","owner_name"
FROM "dm_document" WHERE "subject"='budget_proposal'
The query returns all budget proposal documents for which the currently logged‑in user
has at least Version permission.
You can execute the statement as a standalone statement and indirectly, as part of a
variety of other DQL statements. For example, the following CREATE GROUP statement
uses a SELECT statement to select the users that will populate the new group:
CREATE GROUP supers MEMBERS
(SELECT "user_name" FROM "dm_users"
WHERE "user_privilege" >= 16)
(For more information about CREATE GROUP, refer to Create Group, page 76 .)
EMC Documentum Content Server Version 6.5 DQL Reference Manual 135
Select
on particular clauses enforced for an FTDQL query are listed in the Usage Notes sections
describing each clause. (A summary of the rules is found in Table 107, page 428.)
An FTDQL SELECT statement must be a standalone statement. That is, SELECT
statements embedded as a subselect in another DQL statement are never executed as
FTDQL SELECT statements. Nor are unioned SELECT statements executed as FTDQL
SELECT statements. All FTDQL SELECT statements must include one of the following:
• A SEARCH clause
• The keyword SCORE, SUMMARY, or TEXT in the list of selected values
• The DQL hint ENABLE(FTDQL)
A query that conforms to the FTDQL syntax rules is automatically executed as an FTDQL
query. If you are wondering whether a particular query conforms to the rules, you can
include the ENABLE(FTDQL) hint in the query. If the query conforms, the hint has no
effect and the query is executed as an FTDQL query. If the query does not conform,
Content Server returns an error.
If you do not want a particular query to execute as an FTDQL query even though it
conforms to the FTDQL syntax, include the ENABLE(NOFTDQL) in the query.
Note: A query that does not conform to the FTDQL syntax and does not include the
ENABLE(FTDQL) hint is executed as a standard SELECT query. It does not return
an error.
If an FTDQL query contains references to aspect properties, those properties must be
indexed. Aspect properties are not indexed by default. You must explicitly declare them
for indexing. Use Documentum Application Builder or an ALTER ASPECT statement
to do so.
FTDQL metadata queries that contain LIKE predicates with pattern matching or
on metadata that contains underscores in the values may return different results
than non‑FTDQL queries on the same metadata. This occurs because the index
server processes FTDQL queries against metadata and the database server processes
non‑FTDQL queries against metadata.
FTDQL queries are not affected by the distinct_query_results key in the server.ini.
Setting this key to T (TRUE) does not affect how an FTDQL query is processed.
136 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Select
For example:
SELECT grant_validation.grant_amount FROM education_grants
....
If the query has multiple object types in the FROM clause, any aspect properties
referenced in the selected values must be also qualified with the type name. For example,
assuming that grant_validation and salary_calc are names of aspects:
SELECT education_grants.grant_validation.grant_amount,
dm_user.research_personnel.salary_calc
FROM education_grants, dm_user
...
The query result column that contains the selected aspect property value is named with
the fully qualified name as specified in the selected values list.
Select object property values by specifying the property’s name as a selected value. The
properties you specify must belong to an object type identified in the FROM clause. The
properties can be either single‑valued or repeating properties. Repeating properties,
page 138, contains guidelines for selecting repeating property values.
You cannot select any of the following properties if you are querying audit trail entries
unless you have Superuser or View_audit privileges:
• acl_name • object_name
• acl_domain • object_type
EMC Documentum Content Server Version 6.5 DQL Reference Manual 137
Select
• property_list • owner_name
• property_list_id • session_id
• chronicle_id • version_label
The following statement returns the value of title, a single‑valued property, for all
documents in the repository:
SELECT "title" FROM "dm_document"
This next example returns the value of authors, a repeating property, from all documents
that have bread as their subject:
SELECT "authors" FROM "dm_document"
WHERE "subject"='bread'
You can use an asterisk (*) to select a predefined set of system‑defined properties for the
object. Refer to The asterisk (*) as a selected value, page 148 for details.
Repeating properties
Including a repeating property in the selected values list is subject to the following
constraints:
• You cannot select a repeating property and the name of a column from a registered
table unless you also include the DQL hint, ROW_BASED.
Note: The ROW_BASED hint may not be included in FTDQL queries or queries that
reference a lightweight object type in the FROM clause.
• You cannot select a repeating property if there are multiple object types identified in
the FROM clause unless you also include the DQL hint, ROW_BASED.
Note: The ROW_BASED hint may not be included in FTDQL queries or queries that
reference a lightweight object type in the FROM clause.
138 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Select
EMC Documentum Content Server Version 6.5 DQL Reference Manual 139
Select
For example, suppose you want to obtain the object ID and authors of a document whose
object_name is French Bread, and you want the results in a separate row for each author.
The following query that includes the ROW_BASED hint returns a separate row for each
returned value for the authors property:
SELECT "r_object_id","authors" FROM dm_document
WHERE "title" = 'Breads of France'
ENABLE(ROW_BASED)
Assuming that there are three authors, named Jean, Connie, and Corwin, the returned
rows are:
r_object_id authors
0900000334fa21c3 Jean
0900000334fa21c3 Connie
0900000334fa21c3 Corwin
Additionally, if the query has a WHERE clause qualification that references a value in the
selected repeating property, then the query will return only the row that contains that
value. For example, suppose you execute the following statement:
SELECT "r_object_id","title","authors" FROM dm_document
WHERE "authors" = 'JPierpont'
ENABLE(ROW_BASED)
FTDQL requirements
The requirements for single or repeating properties in a selected values list for an FTDQL
query are the same as those for a standard query.
Select column values by specifying column names as values. The columns must belong to
a RDBMS table that you identify in the FROM clause. You can use column names to select
some or all of the column values, or you can use an asterisk to retrieve all column values.
Note: The account from which Content Server was installed must have SELECT
privileges on the underlying table in the RDBMS before you can use DQL to select
from an RDBMS table. Additionally, to query a registered table, you must have
DM_TABLE_SELECT table permission and at least Browse object‑level permission for
140 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Select
the dm_registered object representing the table. If the SELECT statement includes a
SEARCH clause, your object‑level permission must be at least Read.
FTDQL requirements
The requirements for column values in a selected values list for an FTDQL query are
the same as those for a standard query.
You can include scalar, aggregate, and date functions to manipulate returned values.
A scalar function operates on one value. The DQL SELECT statement accepts three
scalar functions:
• UPPER, which returns the uppercase form of a character string
• LOWER, which returns the lowercase form of a character string
• SUBSTR, which returns a subset of a specified character string
An aggregate function operates on a set of values and returns one value. The DQL
SELECT statement accepts five aggregate functions:
• COUNT, which returns the number of values in a group of values
• MIN, which returns the minimum value in a group of values
• MAX, which returns the maximum value in a group of values
• AVG, which returns the average value of a group of values
• SUM, which returns the total of all values in a group of values
For example, the following statement returns the number of documents owned by the
user horace:
SELECT COUNT(*) FROM "dm_document"
WHERE "owner_name"='horace'
EMC Documentum Content Server Version 6.5 DQL Reference Manual 141
Select
A date function manipulates a date in some manner. To use a date function in the
selected values list, use the AS clause to provide an alias for the returned value in the
result object. For example:
SELECT DATETOSTRING("r_modify_date",'yymmdd") AS ModifyDate
FROM "dm_document"
It is recommended that you use the AS clause to alias a return value for any function
referenced in the selected values list. The AS clause, page 149, has information about
the AS clause.
FTDQL requirements
You can include scalar, aggregate, and date functions in the selected values list of an
FTDQL query.
The MFILE_URL function returns URLs for the content files and renditions associated
with the objects returned by the SELECT statement. The function has three arguments
that are used to control which URLs are returned. For a description of the function and
its arguments, refer to The MFILE_URL function, page 28.
You can include the MFILE_URL function in the selected values list of an FTDQL query.
You can include arithmetic expressions to perform calculations on the returned values.
Arithmetic expressions are expressions that use arithmetic operators to form the
expression, such as:
property A + property B
column C * column D
(2 * column B) property F
property X + 4
The following statement returns the total of all rental charges paid in June, including
regular rents and late charges:
SELECT "rent_received" + "late_charge_total" AS month_total
FROM "yearly_rent_records"
WHERE "mon" = 'june'
FTDQL requirements
Arithmetic expressions are not allowed in the selected values list in an FTDQL query.
142 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Select
Keywords are words that have a special meaning for the server. The majority are full‑text
keywords. That is, the values they return are property values stored in the full‑text index
or values computed during a full‑text search. Three keywords return information about
an object’s relationships to other objects in a virtual document. The remaining keywords
determine whether an object is a replica, return the current user name, and return the
URL to an object’s thumbnail file.
It is not necessary to include a SEARCH clause in the query to include a full‑text key in
the selected values list. However, for some keywords such as TEXT, the returned values
are not useful unless a SEARCH clause is included.
FullText keywords
The following keywords return information about full‑text indexes.
• CONTENTID
The CONTENTID keyword returns the object ID of the content object representing
the content file that matches the select criteria. (A content object links a content file
to all documents that contain the file.)
• ISCURRENT
The ISCURRENT keyword is a Boolean keyword that returns 1 (TRUE) if the object
is the current version and 0 (FALSE) if the object is not the current version.
• ISPUBLIC
The ISPUBLIC keyword is a Boolean keyword that returns 1 (TRUE) if the object is a
public object (its r_is_public property is TRUE) and 0 (FALSE) if the object is not a
public object.
• OBJTYPE
The OBJTYPE keyword returns the r_object_type of the selected object.
• SCORE
The SCORE keyword returns a document’s relevance ranking as determined by the
index server. If an ORDER BY clause is not included in the query, the returned
document order is by descending score.
• SYSOBJ_ID
The SYSOBJ_ID keyword returns the object ID of the objects returned with a fulltext
search. It is the object ID stored in the fulltext index for the object.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 143
Select
• SUMMARY
The SUMMARY keyword returns a summary of each document returned by the
SELECT statement. The summary is up to 4096 bytes from the document, chosen by
the Full‑Text Engine. For example, the following statement returns a summary of the
document whose name is Company History:
SELECT SUMMARY FROM "dm_document"
WHERE "object_name"='Company History'
• TEXT
The TEXT keyword returns the variant text forms to which a specified term was
match, to return a particular document. The values are returned as a repeating
property. For example, if the search string specifies “talk”, the index server may
return documents that contain the words “talking” or “talked”. If so, then TEXT
would return those forms of the word “talk”.
FTDQL requirements
All the keywords classified as fulltext keywords can be included in an FTDQL query.
144 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Select
• DEPTH
The DEPTH keyword returns a component’s level within a virtual document.
You can only use the DEPTH keyword if the SELECT statement includes the IN
DOCUMENT clause and the clause includes the DESCEND keyword.
To illustrate its use, suppose the following query is executed against the virtual
document shown in Figure 1, page 145 :
SELECT "r_object_id", DEPTH FROM "dm_document"
IN DOCUMENT ID('object_id_A') DESCEND
Object ID DEPTH
A 0
B 1
D 2
C 1
EMC Documentum Content Server Version 6.5 DQL Reference Manual 145
Select
• PARENT
The PARENT keyword returns the object ID of the object that directly contains
a direct or indirect component of a virtual document. You can only include
the PARENT keyword in the value list if the SELECT statement contains an IN
DOCUMENT clause.
For example, suppose the following query is executed against the virtual document
shown in Figure 1, page 145:
SELECT "r_object_id", PARENT FROM "dm_document"
IN DOCUMENT ID('object_id_A') DESCEND
The statement returns the object IDs and parents of each component of the virtual
document:
Object ID PARENTS
A A
B A
D B
C A
Miscellaneous keywords
The following keywords return miscellaneous information.
• ISREPLICA
The ISREPLICA keyword is a Boolean keyword that returns 1 (TRUE) if the returned
object is a replica and 0 (FALSE) if the object is not a replica. (Replica is the term
used to describe any object in the repository that has been placed in the repository
as a copy of an object from another repository. Only environments using object
replication have replicas.)
You can only include the ISREPLICA keyword in the value list of the outermost
SELECT statement. You cannot use ISREPLICA in a subquery.
146 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Select
• THUMBNAIL_URL
The THUMBNAIL_URL keyword returns the URL to a thumbnail file. Use
THUMBNAIL_URL in a SELECT statement’s selected values to return the URL to the
thumbnail associated with the returned objects. For example:
SELECT object_name,THUMBNAIL_URL FROM dm_document
WHERE FOLDER('/Corporate Objectives')
The statement returns the documents in the folder Corporate Objectives. If the
content of any of returned document has an associated thumbnail, the URL to
that thumbnail is returned also. If a document has multiple content pages with
thumbnails, the keyword returns only the thumbnail associated with the first content
page that has a thumbnail.
The URL contains the following information:
— The base URL defined for the thumbnail storage area
— A path relative to the storage area identified in the store property that points to
the thumbnail file
— A store property that identifies the storage area containing the thumbnail
If the storage area’s require_ticket property is TRUE, the URL also contains a
ticket that contains an encryption of the path plus a time stamp. The ticket is
valid for five minutes, which means that the URL is good only for five minutes.
For example:
http://myserver.documentum.com:8080/getThumbnail?
path=00232803/80/00/01/Ob.jpg&store=thumbnail_store_01&ticket=8002DWR670X
EMC Documentum Content Server Version 6.5 DQL Reference Manual 147
Select
If the FROM clause references only registered tables or only object types, you can use
an asterisk (*) in the values list.
For registered tables, the asterisk returns all columns in the table.
For lightweight object types:
• If the LITE keyword is included in the query, the asterisk returns all single‑valued
properties of the lightweight object.
• If the LITE keyword is not included in the query, the asterisk returns all single‑valued
properties of both the lightweight object and its shared parent.
For non‑lightweight object types, what is returned by an asterisk depends on whether
or not the ROW_BASED hint is included in the query. If the hint is not included, an
asterisk returns values only for the first object type listed in the FROM clause. The values
returned depend on the object type:
• For objects that are subtypes of persistent object type, the asterisk returns:
— All read/write single‑valued properties
— The r_object_id property
• If the object type is SysObject or a SysObject subtype, in addition to the properties
returned for a persistent object, the asterisk also returns:
— r_object_type
— r_creation_date
— r_modify_date
— a_content_type
If the query includes the ROW_BASED hint, the asterisk returns the values of all
properties of all object types in the FROM clause. For example, the following query
returns all property values from both object types for returned objects:
SELECT * FROM dm_user,dm_group
If you want to limit the returned values to only the property values for a particular type
in the FROM clause, qualify the asterisk with the type. For example:
SELECT a.*, b.r_object_id FROM dm_document a, mydoc b
WHERE a.subject = b.title ENABLE(ROW_BASED)
In the above example, the asterisk returns the values only for properties from
dm_document objects. You can use an asterisk in this manner only when the
ROW_BASED hint is included in the query.
An asterisk does not return values of properties defined for any aspects attached to
an object.
148 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Select
FTDQL requirements
You may not use an asterisk as a selected value in an FTDQL query.
The AS clause
The AS clause lets you name the properties of the query result objects that represent the
returned results. For example, suppose you issue the following SELECT statement:
SELECT "a"+"b" AS total FROM "accts"
Total is assigned as the name of the query result object property that contains the
returned a + b values.
When the statement returns the value of a property or column name, providing a name
for the query result property is optional. The system assigns the property or column
name as the default name. If you provide a name, the name must consist of ASCII
characters.
When the statement includes a function, arithmetic expression, or a keyword, you must
specify a name if you are running against MS SQL Server or Sybase, and we recommend
that you also do so if you are running against Oracle or DB2.
MS SQL Server and Sybase do not provide default names when values are functions,
arithmetic expressions, or keywords. For example, suppose you issue the following
statement:
SELECT COUNT(*) FROM "dm_document"
WHERE "subject" = 'cake'
EMC Documentum Content Server Version 6.5 DQL Reference Manual 149
Select
FTDQL requirements
You may use the AS clause in an FTDQL query.
The FROM clause defines which items are searched. Both the PUBLIC keyword and
the source list restrict the search.
PUBLIC keyword
The PUBLIC keyword restricts the search to objects for which the r_is_public property is
set to TRUE. If the query contains a SEARCH clause, the full‑text search is restricted to
those documents for which ISPUBLIC is TRUE. When the server searches public objects
only, it uses the setting of r_is_public for security checks.
You may include PUBLIC in an FTDQL query.
Including PUBLIC increases the search performance.
Source list
A source list defines which object types and which RDBMS tables to search. The source
list for a standard query can include:
• One or more object types, to a maximum of 10 types
Any object type except those internal object types that represent aspect properties
may be specified.
• One or more RDBMS table names
The total number of object types and tables that you can include in the FROM clause
is constrained by the RDBMS. Each relational database has a limit on the number of
tables that can joined in one query. In the underlying RDBMS query, for each object type
in the FROM clause, all the _s tables in the type’s hierarchy plus any needed indexes
are candidates for inclusion in the underlying query. If the query references repeating
properties, the _r tables are included also.
For registered tables, all object types included in the view’s definition are included in
the query.
DQL passthrough hints included in the source list are applied only to the type or
table after which the hint appears. For portability, you can include hints for multiple
databases. If you include hints for multiple databases, only the hints that are applicable
to the database receiving the request are used.
For more information about using passthrough hints, refer to Passthrough hints, page
405.
150 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Select
The type name argument identifies the object type to search. The server searches objects
of the specified type and all subtypes. For example, to search all SysObjects, specify
dm_sysobject. The server searches dm_sysobject and all of its subtypes, such as
dm_document, dm_process, and so forth.
The keyword ALL directs the server to search all versions of each object. The keyword
DELETED directs the server to search all versions of each object including any versions
for which i_is_deleted is set to TRUE. (This property is set to TRUE if you delete the
object and it is the root version of a version tree). The keyword LITE directs the server to
search only the properties in the lightweight type, otherwise the server also searches the
properties in the shareable parent and the supertype(s). If you specify LITE, then you
must only specify properties in the lightweight type. You must enclose ALL, DELETED,
and LITE in parentheses.
If the FROM clause includes neither ALL nor DELETED, the server searches only the
CURRENT version.
The value of correlation_variable is a qualifier for the type name that is used to clarify
property references in the query.
Any user can specify any object type in a query with two exceptions. The first exception
is the type dmi_audittrail_attrs. To specify that type, you must have either Superuser or
View Audit privileges. The second exception are the object types representing aspect
properties. These types cannot be referenced in the FROM clause by any user.
The server searches only objects within that specified type that are owned by the user
or objects to which the user has access. Whether a user has access depends on the
object‑level permissions of the objects. The user must have at least Browse permission on
an object for the object to be included in a query run by the user. If the query includes a
SEARCH clause, the user must have at least Read permission on the object. (For a full
description of server security, refer to the Content Server Administration Guide.)
Including multiple object types is subject to the following constraints:
• The selected values list cannot contain repeating properties unless the ROW_BASED
hint is included in the query.
Note: The ROW_BASED hint may not be included in FTDQL queries or queries that
reference a lightweight object type in the FROM clause.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 151
Select
• If the selected values list contains an asterisk (*), only the first type’s properties will
be expanded unless the ROW_BASED hint is included in the query.
The asterisk (*) as a selected value, page 148, contains details about including an
asterisk in the selected values list.
Note: The ROW_BASED hint may not be included in FTDQL queries or queries that
reference a lightweight object type in the FROM clause.
• The query cannot include a SEARCH clause.
• Unqualified property names in the query are disambiguated from left to right, as the
object types appear in the FROM clause.
• It the query includes an IN DOCUMENT clause, the object types must join in
one‑to‑one relationship.
• If the query includes an IN DOCUMENT or IN ASSEMBLY clause or a TYPE or
FOLDER predicate, the clause or predicate is applied to only one type in the join,
and that type will be the first object type identified in the FROM clause.
Including table names in the source list
You can include one or more RDBMS table names in the FROM clause of a standard
query. The syntax is:
[owner_name.]table_name [correlation_variable]
The owner_name argument identifies the owner of the table. You must include the owner
name if you are not the owner of the table. If the owner is the DBA of the database,
you can use the alias dm_dbo as the owner name. (Using dm_dbo when appropriate
makes your statement portable across databases.) If the owner name is unspecified, the
current user is assumed.
You must be a superuser to include an unregistered RDBMS table in the list. Any user
with appropriate permissions can include a registered table.
table_name is the name of the table that you want to search.
correlation_variable is a qualifier for the table name used to clarify column references
in the query.
Clarifying type and table names
Type and table names can be the same. In such instances, the server must distinguish
which name identifies a type and which identifies a table. The server uses the following
rules for distinguishing between type and table names:
• If (ALL) or (DELETED) is present, the name is a type name.
• If ownername is present, the name is a table name.
• All other cases are ambiguous references. In such cases, the server checks to see
whether the name is a type name. If it is, the name is assumed to be a type.
The values in the source_list argument are processed from left to right. Consequently,
if you include tables and types with the same name in the FROM clause, be sure to
152 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Select
qualify the table name with its owner’s name. This will ensure that the server does not
mistakenly assume that the table name is the type name.
To illustrate, suppose you have an object type named legal_docs and a registered table
of the same name. The following statement shows one correct way to include them
both in one SELECT statement:
SELECT a."r_object_id", b."client"
FROM "legal_docs" a, jolenef."legal_docs" b
The first legal_docs (with correlation name a) is a type name. The server knows the
second is a registered table because an owner name is specified. Note that correlation
variables should be used in this case to clarify column references.
The following statement is valid because billing_docs is not found to be a type and so is
assumed to be a registered table:
SELECT a."r_object_id", b."client"
FROM "dm_document" a, "billing_docs" b
In the following statement, the server assumes that the query references the legal_docs
type, not the registered table, because no owner name is specified and there is a type
called legal_docs:
SELECT a."object_id", b."client"
FROM "legal_docs" b, "dm_document" a
FTDQL constraints on the source list
Observe the following rules if you want to execute the query as an FTDQL query:
• You can only reference one object type and that type must be dm_sysobject or a
dm_sysobject subtype.
• You cannot reference a registered table in the source list.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 153
Select
If the value list for the SELECT statement contains a repeating property and the
statement contains an IN DOCUMENT clause, the server automatically removes any
duplicates of the repeating property.
You cannot include an ORDER BY clause when you include an IN DOCUMENT clause.
The syntax of the IN DOCUMENT clause is:
IN DOCUMENT object_id [VERSION version_label]
[DESCEND][USING ASSEMBLIES]
[WITH binding condition]
[NODESORT BY property {,property} [ASC|DESC]]]
If the SELECT statement is a subquery, you can also specify the object_id using a
correlated r_object_id property reference. For example:
SELECT "r_object_id" FROM "dm_document" x
WHERE EXISTS
(SELECT * FROM "dm_document"
IN DOCUMENT x."r_object_id"
WHERE "object_name"='Chapt1')
The VERSION option lets you specify a version label. This label can be assigned to any
version in the version tree that contains the specified virtual document. If you do specify
a label, the server searches the specified version rather than the version identified by
the object ID.
154 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Select
particular version of a virtual document always contains the same material. (Refer to
Content Server Fundamentals for information about creating assemblies.)
If a component selected for inclusion is a virtual document and the USING ASSEMBLIES
clause is included, the server determines whether an assembly is defined for that
component. If so, the server uses the information in the assembly as the definition of the
component’s composition.
Refer to in Content Server Fundamentals for a full discussion of assemblies.
where binding condition is one or more expressions that resolve to a single Boolean
TRUE or FALSE. The expressions can include comparison operators, literals, qualifiable
property names, column names, scalar and date functions, arithmetic expressions, and
any predicates except SysObject predicates. Multiple expressions in the condition are
joined using logical operators.
The condition defined by the WITH option is applied to any component of the virtual
document that was added without a version being specified at the time of its addition.
For example, suppose you add component C to virtual document A without specifying
a particular version of component C. Later, when you assemble virtual document A,
you can use the WITH clause condition to determine which version of component C
to include in the document. You may want to include the version that has the word
accounting as a keyword or the version that carries the symbolic label CURRENT. Each
time you assemble the document, you can select a different version of component C.
Choosing a version for inclusion at the time of actual assembly is called late binding.
(For more information about late binding, refer to Content Server Fundamentals.)
More than one version of a component may qualify for inclusion in the virtual document.
To resolve this, you can include the NODESORT BY option in the IN DOCUMENT
clause or you can allow the server to make a default choice. If you allow the server to
make the choice, the server includes the version with the smallest object ID; that is, the
earliest version of the component.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 155
Select
where property is any qualifiable property belonging to the component. You can sort
in ascending (ASC) or descending (DESC) order. If you do not specify a sort order,
the default is ascending (ASC).
If you use the NODESORT BY option and two or more versions still qualify for inclusion,
the server picks the version having the smallest object ID. This situation could occur if
two or more versions have exactly the same values in the properties specified in the
NODESORT BY option.
where document_id identifies the document with which the assembly is associated. Use
the document’s object ID for this argument, specified as an ID literal:
ID('object_id')
Note: You can create an assembly for a virtual document and assign that assembly to
another document. In such cases, the value of the document_id argument identifies the
document to which the assembly is assigned, not the virtual document that the assembly
represents.
If the specified document does not have an associated assembly, the statement fails
with an error.
The VERSION option lets you specify a particular version of a document. If you include
a version label, the server finds the version of the document carrying that label and
156 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Select
uses the assembly associated with that version. You can specify either a symbolic label
or an implicit label.
The NODE option allows you to identify a particular component of a virtual document.
Use the component’s object ID, specified as an ID literal:
ID('component_id')
The SEARCH clause identifies a subset of the full‑text indexed documents. When
you include a SEARCH clause, Content Server submits the query to the index server,
which returns all objects that meet the SEARCH clause condition. The index server
searches both content files and indexed metadata (property values) for matches with
the specified condition.
The syntax of the SEARCH clause for a standard query is:
SEARCH [FIRST|LAST]fulltext_search_condition
[IN FTINDEX index_name {,index_name}]
The FTDQL SEARCH clause may not contain either the FIRST or LAST keywords.
The fulltext_search_condition has two variants. The first, preferred syntax is described in
SEARCH DOCUMENT CONTAINS, page 158. The second syntax variant is described in
SEARCH TOPIC, page 160.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 157
Select
documents that have the word fiduciary in their content and then finds the members of
that group that are also legal_documents:
SELECT "object_name" FROM "legal_documents"
SEARCH FIRST DOCUMENT CONTAINS 'fiduciary'
If you include LAST, the server first searches the repository for all objects that meet the
SELECT criteria and then applies the criteria in the SEARCH clause. For example, the
following statement first finds all legal_documents authored by G. Oliphant and then
finds the members of that group that contain the word fiduciary:
SELECT "object_name" FROM "legal_documents"
SEARCH LAST DOCUMENT CONTAINS 'fiduciary'
WHERE ANY "authors"='G.Oliphant'
The default behavior is to search the full‑text index first. If you include a full‑text
keyword in the selected values list, the full‑text search is conducted first even if LAST is
specified in the SEARCH clause.
word may be a word, a phrase. It may also be a list of words or phrases, or both,
separated by spaces and quoted appropriately. For more information about this syntax,
refer to Specifying words and phrases in SEARCH DOCUMENT CONTAINS, page 158.
The complex syntax using logical operators is not recommended as future support may
be dropped for this syntax and replaced with a different syntax. However, this syntax
is currently supported.
Specifying words and phrases in SEARCH DOCUMENT CONTAINS
Including a list of words or phrases in a SEARCH DOCUMENT CONTAINS clause
returns those documents whose content contains the one or more of the specified words
or phrases. The documents are returned in order of importance.
A word can be any character string that does not include spaces or punctuation. For
example, the following statement finds all indexed documents that contain the word
yeast:
SELECT * FROM "dm_documents"
SEARCH DOCUMENT CONTAINS 'yeast'
To search for multiple words, separate each word in the list with a space. For example,
the following query returns documents that have yeast or cake or both words in their
content or metadata:
158 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Select
If you want to include a single quote in the search string, you must escape the quote
with another single quote. For example:
SELECT * FROM "dm_documents"
SEARCH DOCUMENT CONTAINS 'O''Malley'
To search on a phrase, enclose the phrase in double quotes inside the quoted search
string. For example, the following query returns all documents that include the phrase
“blend butter and sugar”:
SELECT * FROM "dm_documents"
SEARCH DOCUMENT CONTAINS '"blend butter and sugar"'
Note: You can use single quotes to enclose a phrase, but if you do so, you must escape
the quotes with single quotes.
You can combine words and phrases in the same search string. For example, the
following query returns documents that contain the word “yeast” or the phrase “blend
butter and sugar” or both:
SELECT * FROM "dm_documents"
SEARCH DOCUMENT CONTAINS 'yeast "blend butter and sugar"'
The following example searches for documents that contain yeast but not butter:
SELECT * FROM "dm_documents"
SEARCH DOCUMENT CONTAINS 'yeast' AND NOT 'butter'
Case sensitivity
All searches conducted by the index server are case insensitive.
For example, suppose you issue the following query:
SELECT owner_name,r_creation_date FROM dm_document
SEARCH DOCUMENT CONTAINS 'budget'
The query returns all documents that contain, either in content or metadata, the word
budget in lowercase or uppercase or in any combination (Budget, buDget, budgeT,
and so forth).
Accent and diacritical marks
Some languages use accents and diacritical marks on some characters or syllables in
words. Searches are insensitive to accent and diacritical marks. When you search on a
word or phrase, the search returns all objects that contain the word or phrase, even if
some matches also contain an accent or diacritical mark. Similarly, when you search on a
word or phrase that contains such marks, the search ignores the marks and returns all
objects that contain the word or phrase, spelled with or without the accent or diacritical
mark.
For example, suppose you issue the following query:
SELECT owner_name,r_creation_date FROM dm_document
SEARCH DOCUMENT CONTAINS 'cote'
EMC Documentum Content Server Version 6.5 DQL Reference Manual 159
Select
The query returns all documents that contain, in metadata or content, the word cote,
including those with instances of the word with accents or diacritical marks (côte, côté,
and so forth).
Now, suppose you issue the following query that specifies a search term that includes
an accent:
SELECT owner_name,r_creation_date FROM dm_document
SEARCH DOCUMENT CONTAINS 'coté'
That query also returns all documents that contain, in metadata or content, the word
cote, including those with instances of the word with accents or diacritical marks (côte,
côté, and so forth).
Asterisk as wildcard character
You can use the asterisk (*) as a wildcard character in a search string. The asterisk
matches any string of letters. You can use it in any position in the string. For example,
foo* matches any word that begins with “foo”. The string *foo* matches any word that
contains “foo” in its sequence of letters. The string faa*foo matches any word that begins
with faa and ends with foo.
You may also use the asterisk as a wildcard in a phrase search. For example, suppose
you provide the following search string:
'"n* is th* time*"'
That string matches phrases such as “now is the time”, “nothing is thoroughly timed”,
and “November is thinking time”.
SEARCH TOPIC
Note: Although the SEARCH TOPIC syntax is supported for backwards compatibility,
queries are not guaranteed to behave exactly as in releases prior to Release 5.3 because
the syntax in the topic_query_string is translated by the new index server introduced in
Release 5.3. It is strongly suggested that new applications use the SEARCH DOCUMENT
CONTAINS syntax.
The syntax of the clause is:
SEARCH [FIRST|LAST]TOPIC 'topic_query_string'
The query string is passed to the index server, which translates and executes the query.
160 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Select
Use the WHERE clause to restrict which objects are returned. For example, the following
statement selects the title of every document but only returns the titles of documents
owned by the current user:
SELECT "title" FROM "dm_document"
WHERE "user_name" = USER
The qualification argument consists of one or more expressions that resolve to a single
Boolean TRUE or FALSE. The expressions can include comparison operators, literals,
qualifiable property names, column names, scalar and date functions, arithmetic
expressions, predicates, and full‑text keywords. Multiple expressions are joined together
using the logical operators. (Chapter 1, DQL Language Elements, contains descriptions
of all accepted comparison and arithmetic operators, predicates, functions, and logical
operators. Full‑text keywords are described in Full‑Text keywords, page 143.)
A qualification can also include a subquery:
SELECT "r_object_id" FROM "dm_document"
WHERE ANY "authors" IN
(SELECT "user_name" FROM "dm_user"
WHERE "r_is_group" = TRUE)
The qualification can be simple or as complex as necessary. For example, the following
WHERE clause is simple:
SELECT * FROM "dm_workflow"
WHERE "supervisor_name" = 'horace'
The next example references an aspect property. Note that the property name is fully
qualified with the name of the aspect. All references to aspect properties must be
qualified with the aspect name.
SELECT "r_object_id", "title" FROM "dm_document"
WHERE ANY AUTHOR IN ("JohnDoe") and grant_validation.grant_amount>100000
EMC Documentum Content Server Version 6.5 DQL Reference Manual 161
Select
• acl_name • object_name
• acl_domain • object_type
• property_list • owner_name
• property_list_id • session_id
• chronicle_id • version_label
If ROW_BASED is included, the query may be written without the ANY predicate:
SELECT "r_object_id","title","subject" FROM "dm_document"
WHERE "authors" IN ('gillian') ENABLE(ROW_BASED)
Note: The ROW_BASED hint may not be included in FTDQL queries or queries that
reference a lightweight object type in the FROM clause.
If you are referencing a repeating property and including a subquery, you can use the
IN or EXISTS keyword after the ANY keyword to control the generated SQL query.
The syntax is:
WHERE ANY [IN|EXISTS] attr_name IN subquery
Including IN or EXISTS may change the generated SQL query and consequently, enhance
performance. IN and EXISTS, page 400 contains an example that shows the differences
between the options in the generated query.
Referencing repeating properties in compound expressions
A compound expression is multiple expressions linked by logical operators. For
example, the following is a compound expression:
object_name = 'book_proposal' AND owner_name = 'john doe'
162 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Select
However, suppose you want to select from two object types and use a compound
expression that referenced repeating properties from both types. To do that, you must
include the ROW_BASED hint:
SELECT a.r_object_id, b.i_acceptance_date
FROM dm_document a, dmi_package b
WHERE a.authors IN ('john doe') AND b.r_package_label = 'APPROVED' ENABLE(ROW_BASED)
Without the ROW_BASED hint, the query would fail with an error stating that the two
repeating properties it references, authors and r_package_label, are not from the same
type.
Additionally, when ROW_BASED is included, it is not necessary to include the ANY
predicate. Including ANY does not generate an error in such cases, but it is not necessary.
Note: The ROW_BASED hint may not be included in FTDQL queries or queries that
reference a lightweight object type in the FROM clause.
Referencing repeating properties in comparison expressions
A comparison expression is an expression that uses a comparison operator, such as = or
>, to compare the values of two properties. The following rules apply when comparing a
repeating property to another property in a qualification:
• You can compare a repeating property to a single‑valued property from the same or
a different object type.
For example, the following queries are legal:
SELECT r_object_id, title FROM dm_document
WHERE ANY authors=object_owner
To make that example a legal statement, you must include the ROW_BASED hint:
SELECT a.r_object_id,b.r_object_id,a.title
FROM dm_document a,dm_sysobject b
WHERE ANY a.authors = b.keywords
ENABLE(ROW_BASED)
Note: The ROW_BASED hint may not be included in FTDQL queries or queries that
reference a lightweight object type in the FROM clause.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 163
Select
• Any repeating properties referenced in the clause must be of type string or ID.
• Only the DQL UPPER and LOWER functions are allowed. The functions SUBSTR
and MFILE_URL and all aggregate functions are not acceptable.
• The following predicates are not allowed:
— BETWEEN
— NOT LIKE
— NOT FOLDER
— [NOT] CABINET
— ONLY
— TYPE
• The IN and EXISTS keywords are not allowed.
• Any valid form of the FOLDER predicate (except NOT FOLDER) may be used. The
DESCEND option is also allowed.
• The following rules apply to the LIKE predicate:
— The LIKE predicate may be used with pattern matching characters.
— The LIKE predicate may not be used with an escape clause.
• The keywords TODAY, YESTERDAY, TOMORROW may not be used in the DATE
function.
• The following rules apply to all expressions in the WHERE clause:
— Expressions may not contain the ISREPLICA or USER keywords.
— Expressions may use any comparison operator.
— Expressions may use an arithmetic operator, but they may not be used to form a
compound expression.
— Expressions that compare one property to another are not allowed. For example,
subject=title is invalid.
— Expressions in the following format are not allowed:
property_name operator('literal' operator 'literal)
164 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Select
This next example selects the names of all documents, their owners, and their subjects,
and groups them first by owner and then, within each owner group, by subject:
SELECT "owner_name", "subject", count (*)
FROM "dm_document"
GROUP BY "owner_name", "subject"
EMC Documentum Content Server Version 6.5 DQL Reference Manual 165
Select
This statement first finds and counts all documents for each owner name. It returns only
those groups (owner’s name and count) for which the count is greater than 100.
You can also use the HAVING clause in a SELECT statement that does not include the
GROUP BY clause when a value in the value list is an aggregate function. For example,
the following statement returns a count of the workflows supervised by haroldk if that
count is greater than or equal to 25:
SELECT COUNT(*) FROM "dm_workflow"
WHERE "supervisor_name" = 'haroldk'
HAVING COUNT (*) >=25
If the number of workflows supervised by haroldk is less than 25, the statement returns
nothing.
Note that if you do not include a GROUP BY clause when you use a HAVING clause, the
only value permitted in the value list for the SELECT statement is one aggregate function.
The dql_subselect argument must return the same number of properties or columns as the
first SELECT statement, and each property or column must have the same datatype as its
corresponding property or column in that SELECT statement. For example, if the first
SELECT statement returns three properties, then the subselect argument in the UNION
clause must also return three properties. The datatypes of the first properties returned
by each must be the same, as must the datatypes of the second and third properties.
Neither the first SELECT statement nor any subsequent UNION SELECT statements can
contain an IN DOCUMENT clause. The IN ASSEMBLY clause can be included only if the
clause is in the first SELECT statement and all unioned subselect statements.
For all databases except DB2, when you union two or more SELECT statements, the
property names that are returned are derived from the first SELECT statement. For
example, suppose you issue the following statement:
SELECT "name", "address" FROM "current_emp"
UNION SELECT "ret_name", "ret_address" FROM "retired_emp"
The query result objects for this statement have two properties, name and address, taken
from the value list of the first SELECT in the statement.
166 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Select
For DB2 , if corresponding selected values in the unioned SELECT statements don’t
have the same name or alias, the returned property name is an number representing
the property’s position in the selected values list. For example, suppose you issue the
following query:
SELECT "name", "address" FROM "current_emp"
UNION SELECT "ret_name", "ret_address" FROM "retired_emp"
The query result objects for this statement have two properties. The first property is
named 1, representing selected values from name and ret_name. The second property is
named 2, representing selected values from address and ret_address.
The server does not return duplicate rows when you union two or more SELECT
statements. This is true even if the ALL keyword is included in the first SELECT
statement.
Use the ORDER BY clause to sort the results of the SELECT statements. The syntax of
this clause is:
ORDER BY value [ASC|DESC] {,value [ASC|DESC]}
The value argument must be a property or column name that appears in the value list.
You can sort in ascending (ASC) or descending (DESC) order. If you do not specify a sort
order, the default is ascending.
The primary sort is on the first value specified, the secondary sort is on the second value
specified, and so forth. To illustrate, the following statement returns the owner name,
subject, and title of all documents in the system in ascending order by owner name
and the subject:
SELECT "owner_name", "subject", "title"
FROM "dm_document"
ORDER BY "owner_name", "subject"
You can specify a value either explicitly, by name, or by position. For example, the
following statement returns the same results as the previous example, but notice that the
ORDER BY clause specifies values by their position in the SELECT value list:
SELECT "owner_name", "subject", "title"
FROM "dm_document"
ORDER BY 1, 2
The only exception occurs when you union two or more SELECT statements. In such
cases, you can only specify a value by its position in the value list.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 167
Select
ORDER BY SCORE
You cannot reference SCORE by its position in the selected values list. You must
reference it by name. You may sort in either ascending or descending order.
You can include processing hints for DQL and the RDBMS servers in SELECT statements.
The hints for DQL are called standard hints and can be added at the end of the
SELECT statement, using the ENABLE keyword. Hints to the RDBMS server are called
passthrough hints and can be added in the FROM clause, after a table or type name, and
at the end of the statement, using the keyword ENABLE.
The ROW_BASED hint may not be included in FTDQL queries or in queries that
reference a lightweight object type in the FROM clause. All other hints are acceptable in
FTDQL queries or when querying lightweight object types.
Table 28, page 168, lists the standard hints and provides brief guidelines for their use. For
detailed information about their implementation, refer to Appendix A, Using DQL Hints .
Guidelines
168 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Select
Guideline
Guidelines
Guidelines
EMC Documentum Content Server Version 6.5 DQL Reference Manual 169
Select
Guideline
Guideline
• This hint in only useful against DB2 databases.
It is ignored for other databases. For
information about valid values for level_1 and
level_2, refer to your DB2 documentation.
UNCOMMITTED_READ Ensures that a read only query returns quickly
even if another session is holding locks on the
tables queried by the read only query.
170 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Select
Examples
The following example returns the names and titles of all documents owned by the
current user:
SELECT "object_name", "title" FROM "dm_document"
WHERE "owner_name" = USER
The next example selects all documents and their authors with the subject
employee_benefits:
SELECT "r_object_id", "authors" FROM dm_document
WHERE "subject" = 'employee_benefits'
ORDER BY 1
The following example returns the names of all objects in the New Books cabinet:
EMC Documentum Content Server Version 6.5 DQL Reference Manual 171
Select
The following FTDQL example returns those documents that contain the phrase “for
publication:” for which the user has Write permission:
SELECT FOR WRITE object_name,title,owner_name FROM dm_document
SEARCH DOCUMENT CONTAINS 'for publication'
There are additional examples demonstrating the use of specific clauses in the
descriptions of the clauses.
172 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Unregister
Unregister
Syntax
Arguments
Argument Description
owner_name Identifies the table’s owner. The default value is the
current user.
Permissions
You must be the owner of the registered table or have Superuser privileges to unregister
a table.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 173
Unregister
Description
Unregistering a table removes the object of type dm_registered that represents the table
in the repository. It does not remove the table from the underlying RDBMS.
If you attempt to unregister a table that is not registered, you receive an error message.
Related statements
Examples
174 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Update
Update
Syntax
Arguments
Argument Description
table_name Identifies the registered table to update. (Refer to
Register, page 123 for information about registering
tables in the repository.)
SET clause Specifies the columns to update and the new values to
assign to them. The syntax for column_assignments is:
column_name = value expression
Return value
The UPDATE statement returns a collection whose result object has one property,
rows_updated, that contains the number of updated rows.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 175
Update
Permissions
Description
General notes
The SET clause identifies which columns are updated and the WHERE clause determines
which rows are updated. The server searches for all rows that meet the qualification
and updates the specified columns. If a WHERE clause is not included, then all rows
are updated.
176 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Update
Related statements
Examples
EMC Documentum Content Server Version 6.5 DQL Reference Manual 177
Update...Object
Update...Object
Syntax
Arguments
Argument Description
type_name Identifies the type of the object that you want to
update. Valid values are:
178 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Update...Object
Argument Description
update_list Specifies the update operations to perform on the
object. Valid formats are:
set property_name = value set property_
name[[index]] = value append [n]
property_name = value insert property_
name[[index]] = value remove property_
name[[index]] truncate property_
name[[index]] [un]link 'folder path' move
[to] 'folder path'
EMC Documentum Content Server Version 6.5 DQL Reference Manual 179
Update...Object
Argument Description
SEARCH clause Restricts the statement to objects that meet the
SEARCH clause fulltext search condition. Refer to The
SEARCH clause, page 157 for a detailed description
of a SEARCH clause.
WHERE clause Restricts the statement to objects that meet the
qualification. The qualification is an expression
that evaluates to TRUE or FALSE. It can include
comparison operators, literals, property names, scalar
and date functions, special keywords, predicates, and
arithmetic expressions. Multiple expressions can be
joined together using logical operators.
Return value
The UPDATE...OBJECT statement returns a collection whose result object has one
property, called objects_updated, that contains the number of objects updated.
Permissions
Description
General notes
To update an object, the object cannot belong to a frozen assembly or a frozen or
immutable virtual document.
The type_name argument specifies the type of objects to update. The server searches
all objects of the specified type and any subtypes for objects that meet any additional
criteria you define in the statement.
180 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Update...Object
The keyword PUBLIC restricts the query to those objects with the r_is_public property
set to TRUE. If the query contains a SEARCH clause, the full‑text search is restricted to
those documents for which ISPUBLIC is TRUE. When the server queries or searches only
public objects, it uses only the setting of r_is_public for security checks.
The keyword ALL directs the server to consider all versions of each object. If you do not
include ALL, the server only considers the version with the symbolic label CURRENT.
You must enclose ALL in parentheses.
The IN ASSEMBLY, SEARCH, and WHERE clauses restrict the scope of the statement.
The IN ASSEMBLY clause restricts the operation to a particular virtual document
assembly or node (component) within the virtual document. The SEARCH clause
restricts the operations to indexed objects that meet the fulltext search condition. The
WHERE clause restricts the operations to objects that meet the specified qualification.
The clauses are applied in the following order:
• SEARCH
• IN ASSEMBLY
• WHERE
If you do not include any of these clauses, the updates are applied to all objects of that
type for which you have Write permission.
If any of the objects that are otherwise eligible for updating belong to a frozen assembly
or an unchangeable virtual document, then the entire statement is rolled back and no
objects are updated.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 181
Update...Object
The filepath must identify a location that is visible to Content Server. The file must have
the same file format as the existing content associated with the object.
The page number identifies the file’s position of the content file within the ordered
contents of the new object. You must add content files in sequence. For example, you
cannot add two files and specify their page numbers as 1 and 3, skipping 2. Because the
first content file has a page number of 0, page numbers for subsequent additions begin
with 1 and increment by 1 with each addition.
To replace a content file, specify the page number of the file you want to replace.
182 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Update...Object
The property_name argument is the name of the property. If the property is a repeating
property, the index identifies the position of the new value in the property’s list of values.
The positions of the values for a repeating property are numbered from zero. Enclose the
index value in square brackets.
The value argument is the value to assign to the property. The value can be a literal or a
subquery. If it is a subquery, it cannot return more than one row. If it returns more than
one row, the statement returns an error.
Appending a value to a repeating property
To append a value to a repeating property, use the following syntax:
append [n]property_name = value
The property_name argument is the name of the property to which to append a new value.
The value argument specifies what value to add to the property’s ordered list of values.
The value is automatically added to the end of the repeating property’s list of values.
The value can be either a literal value or a subquery. The subquery can return any
number of rows. By default, the system appends a maximum of 20 rows. To override the
default, use the [n] option to define how many rows to append. You can use any integer
number (to append that number of rows) or an asterisk (*) (to append all rows).
Inserting a value into a repeating property
To insert a value into the list of values for a repeating property, use the following syntax:
insert property_name[[index]] = value
The property_name argument identifies the property. The index argument defines where
to insert the new value. The positions of all values for a repeating property are numbered
from zero. If you do not include the index, the server automatically inserts the new
value in position zero, as the first element in the ordered list. You must enclose the
index in square brackets.
The value defines the value that you want to insert. The value can be either a literal value
or a subquery. If it is a subquery, it cannot return more than one row. If it returns
multiple rows, the statement returns an error.
When you insert a value, all values that follow the inserted value are renumbered. For
instance, when you insert a value at position [5], the value formerly at position [5] is
moved up to position [6]. Consequently, if you are inserting more than one value in the
property (for example, if the statement is in a program loop), be sure to increase the
index number each time you insert a value.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 183
Update...Object
The property_name argument identifies the property. The index argument indicates the
position of the value to remove in the property’s ordered list of values. The positions of
all values for a repeating property are numbered from zero. If you do not include the
index, the server removes the first value (position 0) in the property. Enclose the index
in square brackets.
When you remove a value, the remaining values are renumbered. For instance, when
you remove the value at position [5], the value formerly at position [6] is moved up to
position [5]. Consequently, if you are removing more than one value in the property (for
example, if the statement is in a program loop), be sure to start with the highest index
number and decrement the index number each time you delete a value.
For example, if you want to remove the values at positions 6 and 7, remove 7 first and
then 6. If you remove 6 first, the value at 7 is moved into position 6 and the value at 8
is moved into position 7. When you remove 7, you are actually removing the value
formerly in the position 8.
Truncating a repeating property
To truncate a repeating property (remove its values), use the following syntax:
truncate property_name[[index]]
The property_name argument identifies the property. The index argument specifies where
in the property’s list of values to begin the truncation. For example, if you specify
property_name[4], the server removes all values beginning with property_name[4]. If
you do not specify an index level, the server removes all values.
Linking or unlinking an object
To link an object to a folder or cabinet, use the following syntax in the update_list:
link 'folder path'
Linking an object adds a new link for the object. Current links are not affected.
To unlink an object from a cabinet or folder use the following syntax:
unlink 'folder path'
Unlinking removes only the specified link. Other links are not affected.
The folder path argument specifies the folder or cabinet to which you are linking the
object. A folder path has the following format:
cabinet_name{/folder_name}
Moving an object to a new folder or cabinet
To move an object to a new folder or cabinet, use the following syntax:
move [to] 'folder path'
184 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Update...Object
The folder path argument specifies the folder or cabinet to which to link the object. A
folder path has the following format:
cabinet_name{/folder_name}
Moving an object removes all current links and adds a link to the specified cabinet or
folder.
Related statements
Change...Object, page 71
Create...Object, page 79
Delete...Object, page 103
Examples
The following statement deletes all indexed documents that contain the word yeast:
UPDATE "dm_document" OBJECTS
SET "keywords" = 'yeasted'
SEARCH DOCUMENT CONTAINS 'yeast'
This next statement updates all documents that contain the word yeast but not the word
rolls:
UPDATE "dm_document" OBJECTS
SET "keywords" = 'pastries'
SEARCH DOCUMENT CONTAINS 'yeast' AND NOT 'rolls'
The following statement updates all cabinets that have either Janine or Jeremy as their
owner:
UPDATE "dm_cabinet" OBJECTS
SET "is_private" = TRUE
WHERE "owner_name"='janine' OR owner_name='jeremy'
EMC Documentum Content Server Version 6.5 DQL Reference Manual 185
Update...Object
186 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Chapter 3
Administration Methods
EMC Documentum Content Server Version 6.5 DQL Reference Manual 187
Administration Methods
188 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Administration Methods
EMC Documentum Content Server Version 6.5 DQL Reference Manual 189
Administration Methods
190 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Administration Methods
EMC Documentum Content Server Version 6.5 DQL Reference Manual 191
Administration Methods
192 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Administration Methods
EMC Documentum Content Server Version 6.5 DQL Reference Manual 193
BATCH_PROMOTE
BATCH_PROMOTE
Syntax
Arguments
Return value
Permissions
The user issuing the method must have the necessary permissions to promote the objects
listed in the argument.
194 EMC Documentum Content Server Version 6.5 DQL Reference Manual
BATCH_PROMOTE
Description
BATCH_PROMOTE allows you to promote multiple objects with one command. The
objects can be attached to different lifecycles and can be in different states.
The method checks the permissions on each object specified to ensure that the user
issuing the method has the correct permissions to promote the object. Then the method
checks that associated lifecycle or lifecycles are valid. Finally, the method executes any
entry criteria specified for the objects’ next states. If BATCH_PROMOTE encounters an
error at this stage, the method exits and returns nothing.
If the permissions are correct, the lifecycles are valid, and any entry criteria are fulfilled,
BATCH_PROMOTE launches the dm_bp_batch method. The method performs any
action procedures needed, as a single transaction. If an error occurs, the method exits
and reports an error. Any objects promoted before the action procedure error remain
promoted; the object whose procedure caused the error and any objects in the list after
it are not promoted. For example, if the argument list includes 6 objects and an error
occurs on an action procedure for object 4 in the list, objects 1, 2, and 3 are promoted.
Objects 4, 5, and 6 are not.
There are two limitations on the use of BATCH_PROMOTE:
• BATCH_PROMOTE cannot run actions on behalf of the lifecycle_owner. If the
value in the a_bpaction_run_as property in the docbase config object is set to
lifecycle_owner, BATCH_PROMOTE exits with an error.
• You can specify a maximum of 200 objects in each execution of BATCH_PROMOTE.
None
EMC Documentum Content Server Version 6.5 DQL Reference Manual 195
CAN_FETCH
CAN_FETCH
Syntax
Arguments
Return value
CAN_FETCH returns a collection with one query result object. The object has one
Boolean property that is set to TRUE if the fetch is possible or FALSE if it is not.
Permissions
Description
196 EMC Documentum Content Server Version 6.5 DQL Reference Manual
CAN_FETCH
Examples
The following examples determine whether Content Server can fetch the content file
associated with the content object 06000002472185e1:
EXECUTE can_fetch FOR '06000002472185e1'
EMC Documentum Content Server Version 6.5 DQL Reference Manual 197
CHECK_CACHE_CONFIG
CHECK_CACHE_CONFIG
Syntax
Do not include the FOR clause if you include the CONFIG_NAME argument.
Arguments
198 EMC Documentum Content Server Version 6.5 DQL Reference Manual
CHECK_CACHE_CONFIG
Return value
The method returns a collection with one query result object. The object has the
properties listed in Table 35, page 199.
If an error occurs, the method returns an error rather than the collection.
Permissions
EMC Documentum Content Server Version 6.5 DQL Reference Manual 199
CHECK_CACHE_CONFIG
Description
None
Examples
The following example identifies the cache config object by its object ID and forces the
recomputation of the data:
EXECUTE check_cache_config FOR '08000002723ae36b'
WITH force_check = true
This next example identifies the cache config object by its owner and name.
EXECUTE check_cache_config
WITH config_name='johndoe.report_app_config'
200 EMC Documentum Content Server Version 6.5 DQL Reference Manual
CHECK_RETENTION_EXPIRED
CHECK_RETENTION_EXPIRED
Purpose Generates a list of objects whose content, stored in content‑addressed storage, has
an expired retention period or a zero retention period.
Syntax
EXECUTE CHECK_RETENTION_EXPIRED
WITH QUERY='where_clause'
[,SELECT_LIST='property_list']
[,INCLUDE_ZERO_RETENTION_OBJECTS=T|F]
Arguments
EMC Documentum Content Server Version 6.5 DQL Reference Manual 201
CHECK_RETENTION_EXPIRED
Return value
Permissions
202 EMC Documentum Content Server Version 6.5 DQL Reference Manual
CHECK_RETENTION_EXPIRED
Description
QUERY argument
The QUERY argument’s where clause is a DQL where clause qualification. It is used to
select objects for possible inclusion in the results returned by the method. The objects
that fulfill the QUERY argument and are stored in an appropriate content‑addressed
storage area are then examined to determine whether the retention period has expired. If
so, the object is included in the results.
The QUERY argument can reference only literal values or properties defined for the
dm_sysobject object type. If the where clause includes single quotes, you must escape
them with single quotes. For example:
...QUERY,S,'a_storage_type=''castore_1''
and r_creation_date > DATE(01/01/2003)'
INCLUDE_ZERO_RETENTION_OBJECTS argument
By default, the method does not include objects whose content has a 0 retention period
because the assumption is that such content is meant to be kept forever. However, in
EMC Documentum Content Server Version 6.5 DQL Reference Manual 203
CHECK_RETENTION_EXPIRED
a storage area that allows but does not require a retention period, a 0 retention period
can be result from two possible causes:
• The user deliberately set no retention period, and consequently, the server set the
retention period to 0
• The user specified a retention date that had already elapsed. When this occurs,
the server sets the retention period to 0.
Because the meaning of 0 is ambiguous in such storage areas, the method supports the
INCLUDE_ZERO_RETENTION_OBJECTS argument to allow you to include content
with a zero retention in storage areas that allow but do not require a retention period.
If you set INCLUDE_ZERO_RETENTION_OBJECTS to T, when the method examines
objects in storage areas that allow but do not require a retention period and it will
include in the results any object with an expired or zero retention period.
SELECT_LIST argument
The SELECT_LIST argument allows you to include additional SysObject properties in
the result objects. You must enclose the argument’s value in single quotes.
None
Examples
The following example checks SysObjects stored in the content‑addressed storage area
named “castore_2” owned by the user named “John Arthur”. It also adds the title and
subject property values to the result objects.
EXECUTE check_retention_expired
WITH QUERY='a_storage_type=''castore_2'' and
owner_name=''John Author''',
SELECT_LIST='title,subject'
This example directs the method to include objects in a storage area that allows but
doesn’t require a retention period:
EXECUTE check_retention_expired
WITH QUERY='a_storage_type=''castore_3'' and
owner_name=''Mary Writer''',
SELECT_LIST='title,subject',
INCLUDE_ZERO_RETENTION_OBJECTS=true
204 EMC Documentum Content Server Version 6.5 DQL Reference Manual
CHECK_SECURITY
CHECK_SECURITY
Purpose Checks a user’s or group’s access permissions on one or more objects or checks a
user’s or group’s permission level in one or more ACLs.
Syntax
Arguments
1, for None
2, for Browse
3, for Read
4, for Relate
5, for Version
6, for Write
7, for Delete
OBJECT_LIST S list of object IDs The objects being checked.
This can be a list of SysObject
object IDs, a list of ACL object
EMC Documentum Content Server Version 6.5 DQL Reference Manual 205
CHECK_SECURITY
Return value
CHECK_SECURITY returns a collection of query result objects. The objects have one
property, r_object_id. The property contains the object IDs of those objects submitted
in the OBJECT_LIST argument for which the user or group has at least the permission
level identified in the LEVEL argument.
Permissions
Description
None
206 EMC Documentum Content Server Version 6.5 DQL Reference Manual
CHECK_SECURITY
Examples
This example checks to determine whether the user LibbyLoo has at least Write
permission on three documents:
EXECUTE check_security WITH user_name='LibbyLoo',
level=5,object_list='09000001734912ac
0900000153813f2b 0900000116572af3'
This example determines whether the group Engineering has accessor entries that give
the group at least Read permission in the ACLs included in the object list:
EXECUTE check_security WITH group_name='Engineering',
level=3,object_list='4500000112562e4c 450000017351213c'
EMC Documentum Content Server Version 6.5 DQL Reference Manual 207
CLEAN_DELETED_OBJECTS
CLEAN_DELETED_OBJECTS
Purpose Removes deleted lightweight and parent objects from the repository.
Syntax
Arguments
Return value
Permissions
Description
208 EMC Documentum Content Server Version 6.5 DQL Reference Manual
CLEAN_DELETED_OBJECTS
all the lightweight children are not removed when a shareable parent is deleted. The
dmClean job can be configured to remove these objects as part of the usual repository
cleanup, or this method can be used to start removing the objects immediately.
When a lightweight object is reparented from its private parent to a shareable parent, the
private parent is not deleted until the CLEAN_DELETED_OBJECTS method is run with
remove_orphaned_parents set.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 209
CLEAN_LINKS — Deprecated
CLEAN_LINKS — Deprecated
Purpose On Windows, this method removes unneeded dmi_linkrecord objects and resets
security on file store objects to the original state. On UNIX, this method removes
unneeded dmi_linkrecord objects and the auxiliary directories and symbolic links.
Syntax
Arguments
Return value
CLEAN_LINKS returns a collection with one query result object. The object has one
Boolean property whose value indicates the success (TRUE) or failure (FALSE) of the
operation.
Permissions
Description
Note: The CLEAN_LINKS method is deprecated. DFC Version 6 does not support
linked storage areas. Consequently, the CLEAN_LINKS method, which supports those
storage areas, is deprecated.
210 EMC Documentum Content Server Version 6.5 DQL Reference Manual
CLEAN_LINKS — Deprecated
Linked storage areas are handled differently on UNIX and Windows platforms.
Consequently, the behavior of CLEAN_LINKS is slightly different on each platform.
On UNIX, when a linked storage area is referenced, the server creates a dmi_linkedrecord
object and auxiliary directories and symbolic links. On Windows, the server creates a
dmi_linkrecord object and resets the security of the linked storage object. Generally, the
server removes unneeded linkrecord objects and, on UNIX, any unneeded auxiliary
directories and symbolic links. On Windows, the server typically resets the linked
storage object’s security as needed. However, there are conditions that do not allow
the server to do this work.
You can use CLEAN_LINKS to perform this work manually. We recommend running
CLEAN_LINKS regularly. (Note that CLEAN_LINKS is run automatically whenever
the server is restarted.)
To determine if you need to run CLEAN_LINKS, run LIST_SESSIONS and compare the
reported session IDs (in session[x]) to the values in the session_id properties of the
dmi_linkrecord objects. If the session_id property in a link record object references an
inactive session (a session not reported in LIST_SESSIONS), that link record object is not
needed. Depending on how many unneeded link record objects you find, you may want
to run CLEAN_LINKS to remove them and perform the other, associated clean up work.
Examples
This example runs CLEAN_LINKS against only inactive sessions because the
FORCE_ACTIVE argument is defaulted to FALSE:
EXECUTE clean_links
The following example removes the unneeded link record objects for all repository
sessions, active and inactive:
EXECUTE clean_links WITH force_active=true
EMC Documentum Content Server Version 6.5 DQL Reference Manual 211
DB_STATS
DB_STATS
Purpose Returns a set of statistics about database operations for the current session.
Syntax
Arguments
Return value
DB_STATS returns a collection with one result object, described in Table 40, page 212.
Table 40. Query result object properties for DB_STATS administration method
212 EMC Documentum Content Server Version 6.5 DQL Reference Manual
DB_STATS
Permissions
Description
DB_STATS returns a set of statistics about database operations for the current session.
The statistics are counts of the numbers of:
• Inserts, updates, deletes, and selects executed
• Data definition statements executed
• RPC calls to the database
• Maximum number of cursors opened concurrently during the session
None
Examples
The following example uses EXECUTE to invoke DB_STATS. It returns the statistics for
the current docbase session and resets the counters to zero:
EXECUTE db_stats WITH clear=true
EMC Documentum Content Server Version 6.5 DQL Reference Manual 213
DELETE_REPLICA
DELETE_REPLICA
Syntax
Arguments
Return value
DELETE_REPLICA returns a collection with one query result object. The object has one
Boolean property that indicates the success (TRUE) or failure (FALSE) of the operation.
Permissions
214 EMC Documentum Content Server Version 6.5 DQL Reference Manual
DELETE_REPLICA
Description
Examples
This example removes the content file associated with the content object identified by
06000001684537b1 from the distcomp_2 storage area:
EXECUTE delete_replica FOR '06000001684537b1'
WITH STORE='distcomp_2'
EMC Documentum Content Server Version 6.5 DQL Reference Manual 215
DESTROY_CONTENT
DESTROY_CONTENT
Purpose Removes content objects from the repository and their associated content files
from storage areas.
Syntax
Arguments
Return value
DESTROY_CONTENT returns a collection with one query result object. The object
has one Boolean property that indicates the success (TRUE) or failure (FALSE) of the
operation.
Permissions
Description
216 EMC Documentum Content Server Version 6.5 DQL Reference Manual
DESTROY_CONTENT
Note: Do not use this method to archive content. It removes the file’s content object,
rather than marking it off‑line.
Examples
EMC Documentum Content Server Version 6.5 DQL Reference Manual 217
DO_METHOD
DO_METHOD
Purpose Executes an external program, a Docbasic script, or a Java method. (Note that
use of Docbasic is deprecated.)
Syntax
Arguments
If the method is to be
executed on the application
server, UTF‑8 characters are
accepted for the argument
strings.
If the method is to be
executed on the method
server or Content Server, only
characters from the server OS
code page are accepted for
the argument strings.
218 EMC Documentum Content Server Version 6.5 DQL Reference Manual
DO_METHOD
This argument is
ignored if the method’s
use_method_server property
is TRUE.
launch_async Boolean true | false Indicates whether to execute
the program asynchronously.
TRUE executes the method
asynchronously. The default
is FALSE.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 219
DO_METHOD
Recording tracing
information and program
output, page 225 describes
where the information is
stored.
Return value
A DO_METHOD function returns a collection that contains one query result object.
Table 43, page 221 lists the properties of this object.
220 EMC Documentum Content Server Version 6.5 DQL Reference Manual
DO_METHOD
EMC Documentum Content Server Version 6.5 DQL Reference Manual 221
DO_METHOD
Permissions
Description
222 EMC Documentum Content Server Version 6.5 DQL Reference Manual
DO_METHOD
If you are directing the DO_METHOD to the Java method server, Content Server encodes
the arguments using application/x‑www‑form‑urlencoded format. For example, suppose
you issued the following DO_METHOD:
EXECUTE do_method WITH METHOD='paymethod',
ARGUMENTS='docbase accounting
user paymaster
ticket DM_TICKET=0000000222a02054.accounting@host01
document "weekly record"
Launching directly
When you execute DO_METHOD using Content Server as the execution agent, the
server calls the Windows or Unix (depending on the platform on which the method is
running) system API to execute it by default. If you set LAUNCH_DIRECT to TRUE,
the server calls the exec API instead. This API executes the program or script directly,
instead of calling a shell script, which provides the advantage of better error reporting.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 223
DO_METHOD
Launching asynchronously
There are two ways to launch a program or script asynchronously:
• Use the ARGUMENTS argument to DO_METHOD to append an ampersand (&)
to the end of the command line arguments. If there are multiple command‑line
arguments, the ampersand must be the last argument in the list.
For example,
EXECUTE do_method
WITH method = 'validate',arguments = '&'
• Set the DO_METHOD’s LAUNCH_ASYNC argument to TRUE.
For example,
EXECUTE do_method
WITH method = 'validate',launch_async = TRUE
If you launch asynchronously and the method is executing on the application server, it is
not possible to capture the method’s output.
Saving results
For DO_METHOD methods that are executing on the application server, EMC
Documentum provides a simple, example interface that captures the program output so
the output can be saved into the repository if SAVE_RESULTS is TRUE. This interface is
described fully in the Content Server Administration Guide.
224 EMC Documentum Content Server Version 6.5 DQL Reference Manual
DO_METHOD
Notes:
• If LAUNCH_DIRECT is set to TRUE, either on the command line or in the method’s
property, RUN_AS_SERVER must also be set to TRUE. If it is not, the method does
not execute correctly.
• Content Server uses the assume user program to run procedures and print jobs
as the logged‑in user. If you disable the assume user program (by setting the
assume_user_location property in the server config object to a blank), Content Server
runs all procedures and all print jobs under its account.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 225
DO_METHOD
Examples
226 EMC Documentum Content Server Version 6.5 DQL Reference Manual
DROP_INDEX
DROP_INDEX
Syntax
Do not include the FOR clause if you include the NAME argument.
Arguments
Return value
DROP_INDEX returns a collection that contains one query result object. The object has
one Boolean property whose value indicates the success (TRUE) or failure (FALSE) of
the operation.
Permissions
Description
You can obtain an object type index’s name or object ID from the dmi_index type table.
Each row in this table represents one index in the repository.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 227
DROP_INDEX
Examples
These examples illustrate using EXECUTE to drop a user‑defined index on the dm_user
object type. The first example identifies the index by its name, user_index, and the
second example identifies the index by its object ID.
EXECUTE drop_index WITH name='user_index'
EXECUTE drop_index FOR '1f00000011231563a'
228 EMC Documentum Content Server Version 6.5 DQL Reference Manual
ESTIMATE_SEARCH
ESTIMATE_SEARCH
Syntax
Do not include the FOR clause if you include the NAME argument.
Arguments
EMC Documentum Content Server Version 6.5 DQL Reference Manual 229
ESTIMATE_SEARCH
Return value
Permissions
Any user can execute this method. However, the return value is affected by the user’s
privilege level. Refer to the General Notes for an explanation.
To execute this method, the server.ini key, use_estimate_search, must be set to TRUE.
The key defaults to TRUE.
Description
None
230 EMC Documentum Content Server Version 6.5 DQL Reference Manual
ESTIMATE_SEARCH
Examples
EMC Documentum Content Server Version 6.5 DQL Reference Manual 231
EXEC_SQL
EXEC_SQL
Syntax
Arguments
Return value
EXEC_SQL returns a collection that contains one query result object. The object has
one Boolean property whose value is TRUE if the query succeeded and FALSE if it
was unsuccessful.
Permissions
Description
EXEC_SQL executes any SQL statement with the exception of SQL SELECT statements.
If you use an IDfSession.apply method to execute the method and the query contains
commas, you must enclose the entire query in single quotes.
In the EXECUTE statement, character string literals must always be single‑quoted:
232 EMC Documentum Content Server Version 6.5 DQL Reference Manual
EXEC_SQL
EXECUTE exec_sql
with query='create table mytable (name char(32), address char(64))'
Examples
EMC Documentum Content Server Version 6.5 DQL Reference Manual 233
EXPORT_TICKET_KEY
EXPORT_TICKET_KEY
Syntax
Arguments
Return value
If successful, the method returns the login ticket key used by the repository as an
encrypted and ASCII‑encoded string. The returned key is encrypted using the password
provided as an argument and then encoded as an ASCII string.
If the method fails, the method returns NULL.
Permissions
Description
Use EXPORT_TICKET_KEY when you want to copy a login ticket key from one
repository to another, to configure a trust relationship between the two repositories. (For
a description of trusted repositories, refer to Content Server Fundamentals.)
234 EMC Documentum Content Server Version 6.5 DQL Reference Manual
EXPORT_TICKET_KEY
Related methods
Examples
EMC Documentum Content Server Version 6.5 DQL Reference Manual 235
FINISH_INDEX_MOVES
FINISH_INDEX_MOVES
Syntax
EXECUTE finish_index_moves
Arguments
Return value
FINISH_INDEX_MOVES returns a collection with one query result object. The object has
one Boolean property whose value indicates the success (TRUE) or failure (FALSE) of
the operation.
Permissions
Description
236 EMC Documentum Content Server Version 6.5 DQL Reference Manual
FINISH_INDEX_MOVES
Examples
EMC Documentum Content Server Version 6.5 DQL Reference Manual 237
FIX_LINK_CNT
FIX_LINK_CNT
Syntax
Arguments
None
Return Value
Permissions
Executing this method requires either Superuser privileges or Write permission on the
specified folder.
Description
Use this method if the value of a folder’s r_link_cnt property is incorrect. The method
determines how many documents are linked to the specified folder and then sets that
value in the folder’s r_link_cnt property.
Examples
238 EMC Documentum Content Server Version 6.5 DQL Reference Manual
GENERATE_PARTITION_SCHEME_SQL
GENERATE_PARTITION_SCHEME_SQL
Syntax
Arguments
EMC Documentum Content Server Version 6.5 DQL Reference Manual 239
GENERATE_PARTITION_SCHEME_SQL
240 EMC Documentum Content Server Version 6.5 DQL Reference Manual
GENERATE_PARTITION_SCHEME_SQL
Return Value
Permissions
Description
Use this method to generate a database partitioning script. After the script is generated,
it is run against the underlying database, using the database’s SQL facility. For all
versions of this method, except for add_partition, stop the repository before you run the
script against the database, then restart the repository for the changes to take effect
at the content server level. For the add_partition method, you do not need to stop or
restart the repository.
The first form of the command, in which operation=’db_partition’, allows you to specify
a type or a table to partition. If you do not specify a type or table, the generated script
will partition all the partitionable types in the repository if it is run. You would use this
command to partition a repository that was upgraded from an earlier version. The first
range value means that objects with i_partition values from 0 to the first value will be
in the first partition. The second partition will contain objects with i_partition values
greater than first range value up to the second range value. Each subsequent partition
will contain all the objects with i_partition values greater than the previous partition and
up to its value. The last partition contains those objects with i_partition values greater
than any previously specified partition.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 241
GENERATE_PARTITION_SCHEME_SQL
The second form of the command, in which operation=’add_partition’, allows you to add
partitions. This form is similar to the first form, but the first added partition begins
with values greater than previously defined partitions. If there happen to be objects in
the last partition whose i_partition values fall into the new partition’s range, they will
be moved into the new partition.
If you create a new repository with partitioning enabled, there is only one partition,
called the last partition. You can then customize your repository by adding partitions. In
this case, the first added partition range goes from 0 to the value you specified.
The final two versions, in which operation=’exchange_partition’, allow you to exchange a
partition with a schema‑identical offline table in the database tablespace. Commonly,
you would use this feature to load a large number of objects into a table and then swap
the table into the partition.
Note: In order to use this method with an Oracle installation, you must run the script as
SYSDBA. For example, if dmadmin is the installation owner:
C:\Documents and Settings\dmadmin>sqlplus "/as sysdba"
@ C:\Documentum\data\testenv\content_storage_01\00000057\80\00\01\19.txt
To increase the number of cursors, consult your Oracle documentation. It may tell you to
use a command similar to:
ALTER SYSTEM SET OPEN_CURSORS=2000 SID='*' SCOPE=MEMORY;
to alter the number of open cursors.
If you exit the script with an error (from inadvertently exceeding the number of open
cursors, for example), correct the error, and rerun the script, you may see an error
message like:
ORA12091: cannot online redefine table "TECHPUBS"."DMC_WFSD_ELEMENT_S" with
materialized views
caused by leftover temporary items from the previous script failure. One way to correct
this error is to run a command similar to:
execute DBMS_REDEFINITION.ABORT_REDEF_TABLE('<Schema Name>', '<Table Name>'
,'<Table Name>I');
Where <Table Name>I is the intermediate table name used for the redefinition. From
the previous error message, we would use this command:
execute DBMS_REDEFINITION.ABORT_REDEF_TABLE('TECHPUBS', 'DMC_WFSD_ELEMENT_S'
,'DMC_WFSD_ELEMENT_SI');
242 EMC Documentum Content Server Version 6.5 DQL Reference Manual
GENERATE_PARTITION_SCHEME_SQL
and
last_tablespace='filegroup'
for SQL Server installations.
Partition Exchange
Partition exchange must be carefully planned. Typically, you will create a number of
offline tables to load with data, use whatever native database method is available to load
the tables, create the table indexes, and then swap the tables into the prepared repository
partition. This technique can load large amounts of data into a repository while causing
a minimum of disruption to normal use of the repository. This technique can also be
used to remove large amounts of data from a repository by swapping out a partition
for small offline tables.
The typical steps you would take to do a partition exchange involve the following:
EMC Documentum Content Server Version 6.5 DQL Reference Manual 243
GENERATE_PARTITION_SCHEME_SQL
Check the online data to be sure that the exchange was successful.
More details about executing a partition swap are covered in Documentum High‑Volume
Server Development Guide.
Examples
This example generates a script to partition all the partitionable types in a repository.
After the script is run, partitionable objects with an i_partition value of 0 to 10 will be
stored in partition P1 of the database. Partitionable objects with an i_partition value of 11
to 20 will be stored in partition P2 of the database.
EXECUTE generate_partition_scheme_sql WITH
"partition_name"='P1',"range"=10,"tablespace"='dm_techpubs_docbase',
"partition_name"='P2',"range"=20,
"tablespace"='dm_techpubs_docbase'
To get the script, you can issue the following DQL statement (assume that the result of
the earlier method returned the object ID 0855706080007c19):
EXECUTE get_file_url FOR '0855706080007c19' WITH "format"='text'
244 EMC Documentum Content Server Version 6.5 DQL Reference Manual
GET_FILE_URL
GET_FILE_URL
Syntax
object_id is the object ID of the document that contains the content file.
Arguments
The default is 0.
Return value
GET_FILE_URL returns a collection consisting of one object with five properties. One
property indicates the success or failure of the method call. If the call is successful, the
other property values can be concatenated to compose the URL.
The properties are:
EMC Documentum Content Server Version 6.5 DQL Reference Manual 245
GET_FILE_URL
Permissions
You must have at least Read permission on the object or Sysadmin privileges to use this
method.
Description
Use GET_FILE_URL in an application when you want to access content using a Web
server or a streaming server.
None
Examples
246 EMC Documentum Content Server Version 6.5 DQL Reference Manual
GET_INBOX
GET_INBOX
Syntax
Arguments
EMC Documentum Content Server Version 6.5 DQL Reference Manual 247
GET_INBOX
Return value
GET_INBOX returns a collection containing the Inbox items in query result objects.
The query result objects have 49 properties. The first 41 are the properties of the
dmi_queue_item object representing the Inbox item. The property names in the query
result object match the names of the properties of the queue items. The remaining 8
properties identify the SysObject associated with the Inbox item, if any. Generally, these
properties have values if the Inbox item is a workflow task. Notification items have no
values in these 8 properties. (Refer to the General Notes for a more detailed explanation.)
Table 51, page 248, lists the SysObject‑related properties and their corresponding
SysObject property.
Table 51. SysObjectrelated property names for GET_INBOX query result objects
248 EMC Documentum Content Server Version 6.5 DQL Reference Manual
GET_INBOX
Permissions
Any user can issue this method to return either his or her own Inbox items or the Inbox
items of another user.
Description
With one exception, you can specify the arguments in any order. The exception is
ORDER_BY. This argument must appear last.
Generally, GET_INBOX returns one query result object for each item in user’s Inbox.
However, if a particular task has multiple objects associated with it, the method returns
one query result object for each object associated with the task. The queue item
property values for the multiple objects will be the same. Only the values of the eight
SysObject‑related properties will be different.
The eight SysObject‑related properties contain null values in the following cases:
• The Inbox item is an event notification and therefore has no associated object.
• The Inbox item is a task, but its associated object has been deleted from the repository.
• The Inbox item is a task but the user who issues the method doesn’t have at least
Browse permission on the associated object.
• The Inbox item is a workflow task, such as a Beginning task, that has no package
attached to it.
• The Inbox item represents an object in a remote repository.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 249
GET_INBOX
None
Examples
This example returns all tasks and notifications for the user issuing the method:
EXECUTE get_inbox WITH category=7
250 EMC Documentum Content Server Version 6.5 DQL Reference Manual
GET_LAST_SQL
GET_LAST_SQL
Purpose Retrieves the SQL translation of the last DQL statement issued.
Syntax
EXECUTE get_last_sql
Arguments
None
Return value
GET_LAST_SQL returns a collection with one query result object. The result object has
one property whose value is the last SQL statement. To see the statement, issue a Next on
the collection and then dump the collection.
If the last SQL tracing option is turned off, this method returns the following error
message:
No SQL Statement is available because Last SQL Trace is disabled.
Permissions
Description
The last SQL tracing feature is turned on by default when a server starts. If the feature
is turned off, you can turn it on using the last_sql_trace option of the SET_OPTIONS
method. (Refer to SET_OPTIONS, page 357, for instructions.)
EMC Documentum Content Server Version 6.5 DQL Reference Manual 251
GET_LAST_SQL
None
Examples
EXECUTE get_last_sql
252 EMC Documentum Content Server Version 6.5 DQL Reference Manual
GET_PATH
GET_PATH
Purpose Returns the directory location of a content file stored in a distributed storage area.
Syntax
Arguments
Return value
Permissions
Description
EMC Documentum Content Server Version 6.5 DQL Reference Manual 253
GET_PATH
If you do not include the STORE argument, the method looks in the local component of
the distributed storage area. If the file isn’t found in the local area, the method attempts
to create a replica of the file in the local area and returns the path of the local replica.
None
Examples
The following examples return the file path for the content file represented by the content
object whose object ID is 060000027435127c in the storage1 storage area:
EXECUTE get_path FOR '060000027435127c'
WITH store='storage1'
254 EMC Documentum Content Server Version 6.5 DQL Reference Manual
GET_SESSION_DD_LOCALE
GET_SESSION_DD_LOCALE
Syntax
EXECUTE get_session_dd_locale
Arguments
None
Return value
The method returns a collection with one result object. The result object has one property,
named dd_locale. The value of this property is the locale for the session.
Permissions
Description
None
None
EMC Documentum Content Server Version 6.5 DQL Reference Manual 255
GET_SESSION_DD_LOCALE
Examples
EXECUTE get_session_dd_locale
256 EMC Documentum Content Server Version 6.5 DQL Reference Manual
HTTP_POST
HTTP_POST
Syntax
Arguments
0, do not save
1, save the results
‑1, save the results if there is
an error
EMC Documentum Content Server Version 6.5 DQL Reference Manual 257
HTTP_POST
Return value
HTTP_POST returns a collection with one query result object that has seven properties.
Table 54, page 258, lists the properties:
258 EMC Documentum Content Server Version 6.5 DQL Reference Manual
HTTP_POST
HTTP/1.1 2xx OK
HTTP/1.1 5xx Internal Server Error
Permissions
You must have Superuser privileges to execute this method. (Refer to Preserving security,
page 260, for more information about security when using this method.)
Description
EMC Documentum Content Server Version 6.5 DQL Reference Manual 259
HTTP_POST
If you set LAUNCH_ASYNC to TRUE, Content Server closes the connection to the
application server immediately after sending the request. If LAUNCH_ASYNC is
FALSE, the server waits for a response until a response is received or the time out
period is reached.
Setting TRACE_LAUNCH to TRUE logs tracing information about the invocation of the
HTTP_POST method and its success or failure.
The ARGUMENTS argument can contain only UTF‑8 characters. Content Server encodes
the arguments using application/x‑www‑form‑urlencoded format. For example, suppose
you issued the following HTTP_POST method:
EXECUTE http_post WITH app_server_name='payroll',
save_response=true,trace_launch=true,
arguments='docbase accounting user paymaster
ticket DM_TICKET=0000000222a02054.accounting@host01
document "weekly record"'
Preserving security
The application server, all servlets that it invokes, and the methods invoked by the
servlets run as the Content Server installation owner, which is an account with Superuser
privileges. Consequently, it is important that they are written and execute using
adequate security precautions.
There are two primary security issues:
• Determining origin of HTTP_POST requests
• Login without passwords (this is only possible on Windows platforms)
The application server or the servlet has no inherent way to know whether the
HTTP_POST request was sent from a Documentum Server. When you write a servlet,
you must include security checking to ensure that the request comes from a Documentum
Server. One recommended way is have the servlet ensure that the generated request
comes from a machine that hosts a Content Server by checking the IP address of the
sender against a list of valid IP addresses. (This is how the do_method servlet checks the
origin. Refer to Installing Content Server for information about how that is set up.)
On Windows platforms, the current operating system user is allowed to log in to the
repository without providing a password. Consequently, a servlet or an invoked Java
method can log into the repository with Superuser privileges without providing a
password.
If you write a servlet or method that uses this manner of login, you may want to
ensure that the actual user who issues the HTTP_POST to invoke the program has the
appropriate privileges to execute the program as a superuser. To do this, send the
current user’s name and a login ticket to the method in the arguments. The method
260 EMC Documentum Content Server Version 6.5 DQL Reference Manual
HTTP_POST
can use these to log in and check the privileges of the user before connecting as the
current operating system user.
Recording output
If you set SAVE_RESPONSE to TRUE, then anything that the invoked servlet writes to
HttpServerletResponse.OutputStream is saved to a document in the repository.
Examples
The following examples send an HTTP_POST request to the Java servlet called
DevAppSrv. The content of the request passes a repository name, user name, a login
ticket, and a document name to the Java servlet.
EXECUTE http_post WITH app_server_name='DevAppSrv',
save_response=1,trace_launch=T,time_out=60,
arguments='docbase DevTest user test_user
ticket DM_TICKET=0000000221c02052.DevTest@dev012
document "A Test"'
EMC Documentum Content Server Version 6.5 DQL Reference Manual 261
IMPORT_REPLICA
IMPORT_REPLICA
Purpose Imports files from one distributed storage area into another distributed storage area.
Syntax
Arguments
262 EMC Documentum Content Server Version 6.5 DQL Reference Manual
IMPORT_REPLICA
Return value
IMPORT_REPLICA returns a collection with one query result object. The object has one
property whose value indicates success (TRUE) or failure (FALSE).
Permissions
Description
IMPORT_REPLICA imports files from one distributed storage area into another
distributed storage area. The files are considered replicas in the target storage area.
To use IMPORT_REPLICA, you must be using one server for both data and content
requests. If the configuration is set up for content servers, you must issue a connection
request that bypasses the content server to use IMPORT_REPLICA in the session.
Examples
The following examples import the file mydoc into the storage area named distcomp_2:
EXECUTE import_replica FOR '06000001402371e1'
WITH store='distcomp_2',FILE='mydoc'
EMC Documentum Content Server Version 6.5 DQL Reference Manual 263
IMPORT_TICKET_KEY
IMPORT_TICKET_KEY
Syntax
EXECUTE import_ticket_key
WITH KEY_STRING='string',
PASSWORD='password'
Arguments
Return value
This method returns a collection with one query result object. The object has one
property, named result, that contains T (TRUE) if the method was successful or F
(FALSE) if unsuccessful.
Permissions
264 EMC Documentum Content Server Version 6.5 DQL Reference Manual
IMPORT_TICKET_KEY
Description
Use IMPORT_TICKET_KEY to import a login ticket key into a repository. The key must
have been exported from a repository using the EXPORT_TICKET_KEY method. When
you import the key, the password argument in IMPORT_TICKET_KEY must be the same
password that you used in the EXPORT_TICKET_KEY method.
You must restart Content Server after importing a login ticket key to make the key take
effect.
Keys are typically exported from one respository and imported into another as part of
the configuration process when setting up trusted respositories, to allow use of global
login tickets or tokens. (For a description of trusted repositories, global login tickets, and
global tokens, refer to Content Server Fundamentals.)
Example
EXECUTE import_ticket_key
WITH KEY_STRING='ticket_string',
PASSWORD='myword'
EMC Documentum Content Server Version 6.5 DQL Reference Manual 265
LIST_AUTH_PLUGINS
LIST_AUTH_PLUGINS
Purpose Lists the authentication plugins that the server has loaded.
Syntax
EXECUTE list_auth_plugins
Arguments
None
Return value
The method returns a collection with one query result object. The object has two
repeating string properties, plugin_id and plugin_filepath. The values in plugin_id are
the unique plugin identifiers and the values in plugin_filepath are the full paths of the
plugins. The values at corresponding index positions represent one plugin.
Permissions
Description
This method is useful only at sites that have a Trusted Content Services license because
the ability to use authentication plugins is a feature of Trusted Content Services.
None
266 EMC Documentum Content Server Version 6.5 DQL Reference Manual
LIST_AUTH_PLUGINS
Examples
EMC Documentum Content Server Version 6.5 DQL Reference Manual 267
LIST_RESOURCES
LIST_RESOURCES
Purpose Lists a variety of information about the server’s operating system environment
and the server.
Syntax
Arguments
Return value
268 EMC Documentum Content Server Version 6.5 DQL Reference Manual
LIST_RESOURCES
EMC Documentum Content Server Version 6.5 DQL Reference Manual 269
LIST_RESOURCES
Issuing LIST_RESOURCES
with RESET=T reinitializes
session_heap_size_new to zero.
max_processes integer The maximum number of processes
that can be created by the account
under which the server is running.
server_init_file string(255) The full path to the server’s server.ini
file.
initial_working_directory string(255) The full path to the directory
containing the server executable.
On UNIX, the result object has eight properties, described in Table 59, page 270.
270 EMC Documentum Content Server Version 6.5 DQL Reference Manual
LIST_RESOURCES
Permissions
Description
Examples
The following examples return the resources information and reset the heap size
counters:
EMC Documentum Content Server Version 6.5 DQL Reference Manual 271
LIST_RESOURCES
272 EMC Documentum Content Server Version 6.5 DQL Reference Manual
LIST_SESSIONS
LIST_SESSIONS
Purpose Returns information about all the currently active repository sessions.
Syntax
Arguments
Return value
LIST_SESSIONS returns a collection. Each result object in the collection describes one
currently active session or one historical session.
If BRIEF_INFO is FALSE
Table 61, page 273 lists the information returned if BRIEF_INFO is FALSE.
Property Description
root_start The time when the main server thread
(root server process) was started.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 273
LIST_SESSIONS
Property Description
root_pid On Windows, the process ID of the
Content Server process.
274 EMC Documentum Content Server Version 6.5 DQL Reference Manual
LIST_SESSIONS
Property Description
client_locale A verbose description of the client’s
environment, including the operating
system version, the character set in use,
the language in use, and the date format.
start The starting time of the session.
last_used The last time the client session contacted
the server.
session_status The session status. Active means that the
session is connected and has not timed
out. Inactive means that the session has
timed out.
shutdown_flag Records the setting of the immediacy_level
argument in the kill method.
last_rpc The last RPC the server ran for the session
current_rpc The current RPC being run by the server
for the session
If BRIEF_INFO is TRUE
Table 62, page 275, lists the information returned if BRIEF_INFO is TRUE.
Property Description
session The object ID of the session begun by
user_name.
db_session_id The ID of the database session.
user_name The user name of the user who started the
session.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 275
LIST_SESSIONS
Property Description
client_host The host name of the machine on which
the session was started.
start The starting time of the session.
last_used The last time the client session contacted
the server.
session_status The session status. Active means that the
session is connected and has not timed
out. Inactive means that the session has
timed out.
Permissions
Description
276 EMC Documentum Content Server Version 6.5 DQL Reference Manual
LIST_SESSIONS
Examples
This example executes LIST_SESSIONS with the BRIEF_INFO argument set to TRUE:
EXECUTE list_sessions WITH brief_info='true'
EMC Documentum Content Server Version 6.5 DQL Reference Manual 277
LIST_TARGETS
LIST_TARGETS
Purpose Lists the connection brokers to which the server is currently projecting.
Syntax
EXECUTE list_targets
Arguments
Return value
LIST_TARGETS returns a collection with one query result object. The Table 2‑9. The
values across the properties at one index position represent the information about one
connection broker to which the server is projecting.
278 EMC Documentum Content Server Version 6.5 DQL Reference Manual
LIST_TARGETS
Permissions
Description
A server’s connection broker targets are those connection brokers to which the server
is sending checkpoint messages. Target connection brokers are defined in the server’s
server config object and may also be defined in the server.ini file. This method returns a
list of the targets defined in the server config object.
None
Examples
The following examples list the current connection broker targets for the server:
EXECUTE list_targets
EMC Documentum Content Server Version 6.5 DQL Reference Manual 279
LOG_OFF
LOG_OFF
Syntax
EXECUTE log_off
Arguments
Return value
LOG_OFF returns a collection with one query result object. The object has one Boolean
property whose value indicates the success (TRUE) or failure (FALSE) of the operation.
Permissions
Description
None
280 EMC Documentum Content Server Version 6.5 DQL Reference Manual
LOG_OFF
Examples
EMC Documentum Content Server Version 6.5 DQL Reference Manual 281
LOG_ON
LOG_ON
Syntax
Arguments
Return value
LOG_ON returns a collection with one query result object. The object has one Boolean
property whose value indicates the success (TRUE) or failure (FALSE) of the operation.
Permissions
Description
282 EMC Documentum Content Server Version 6.5 DQL Reference Manual
LOG_ON
operation. If you set DETAIL to TRUE, the server also includes information about the
arguments passed with each call and the results of the call.
Examples
EMC Documentum Content Server Version 6.5 DQL Reference Manual 283
MAKE_INDEX
MAKE_INDEX
Syntax
EXECUTE make_index
WITH type_name='object_type',attribute='property_name'
{,attribute='property_name'}
[,unique=true|false][,index_space='name'][,index_name='name']
[,use_id_col=true|false]
[,global_index=true|false]
Arguments
284 EMC Documentum Content Server Version 6.5 DQL Reference Manual
MAKE_INDEX
Return value
MAKE_INDEX returns a collection with one query result object. The object has one
property, named result, that contains the object ID of the dmi_index_object for the new
index if successful.
If the method failed because the syntax was incorrect or the property specified did not
exist, the result property contains F (FALSE).
If the specified index already exists, the result property contains ’0000000000000000’.
Permissions
Description
MAKE_INDEX creates an index for a persistent object type. You can create an index for
any persistent object type.
You can specify one or more properties. However, if you specify multiple properties,
you must specify all single‑valued properties or all repeating properties. You cannot mix
single and repeating valued properties in the same argument list. (This is because the
underlying RDBMS stores an object’s single and repeating properties in separate tables.)
EMC Documentum Content Server Version 6.5 DQL Reference Manual 285
MAKE_INDEX
If you specify multiple properties, the sort order within the index corresponds to the
order in which the properties are specified in the statement. To include the r_object_id
column in the index, include the USE_ID_COL argument.
The properties you specify must be defined for the type you specify. They cannot be
inherited properties. For example, if you want to create an index on the subject and
title properties, you would specify dm_sysobject in TYPE_NAME, as these properties
are defined for dm_sysobject. (The Object Reference Manual lists the properties defined
for each object type.)
A unique index is an index in which the values in the columns to be indexed are unique
within the index. If you include the UNIQUE argument, the RDBMS server enforces
the uniqueness.
GLOBAL_INDEX is a boolean parameter that indicates whether the index being created
is a global index. The default value is FALSE. This parameter can be used only when
the type is a partitioned type, and is only useful if UNIQUE=TRUE is also specified. If
an index of a partitioned table is a unique local index, it must include the i_partition
column as part of the index. Otherwise, the database server will return an error. This
is a requirement of the database for unique local indexes in a partitioned table. Since
i_partition is an internal attribute, both single value tables and repeating value tables
have this column. The internal attribute i_partition will not be included for unique
indexes created for a partitioned type if GLOBAL_INDEX is TRUE.
Note: If you plan to use partition exchange, do not create global indexes on the types
to use for the exchange. See EMC Documentum High‑Volume Server Development Guide
for more details on partition exchange.
Examples
This example creates an index for the dm_sysobject object type, indexing on the subject
and title properties:
EXECUTE make_index WITH type_name='dm_sysobject',
attribute='subject', attribute='title'
The next example creates an index for the dm_sysobject type on the property
r_creator_name:
286 EMC Documentum Content Server Version 6.5 DQL Reference Manual
MAKE_INDEX
The next example creates an index for the dm_sysobject type on the properties
r_creator_name and r_creation_date:
EXECUTE make_index WITH type_name='dm_sysobject',
attribute='r_creator_name',
attribute='r_creation_date'
EMC Documentum Content Server Version 6.5 DQL Reference Manual 287
MARK_AS_ARCHIVED
MARK_AS_ARCHIVED
Syntax
Arguments
Return value
Permissions
Description
Use this method to set an audit trail entry’s i_is_archived property to TRUE after you
archive the entry.
288 EMC Documentum Content Server Version 6.5 DQL Reference Manual
MARK_AS_ARCHIVED
Examples
EMC Documentum Content Server Version 6.5 DQL Reference Manual 289
MARK_FOR_RETRY
MARK_FOR_RETRY
Purpose Finds queue items representing events queued to the Index Agent that are in the
acquired or failed state and resets them to the pending state
Syntax
EXECUTE mark_for_retry
WITH NAME = 'index_name'
Arguments
Return value
MARK_FOR_RETRY returns a collection with one query result object. The object has
one Boolean property whose value indicates the success (TRUE) or failure (FALSE) of
the operation.
Permissions
290 EMC Documentum Content Server Version 6.5 DQL Reference Manual
MARK_FOR_RETRY
Description
Use MARK_FOR_RETRY in the recovery procedure if you encounter problems with the
index agent. The method scans the repository to find queue items representing events
queued to the index agent that are in the acquired or failed state and resets them to
the pending state.
The index agent registers itself for certain events on all SysObjects. The events serve
as notice to the index agent that the objects need to be indexed or updated in the
index. If there is a problem with the index agent, for example, if it crashes, some of
the queue items representing those events may be left in the acquired or failed state.
MARK_FOR_RETRY is used to reset those events to pending so that the index agent will
pick up those events and properly process the objects after the problem is resolved.
None
Examples
These examples find all the content objects in the index that have an update_count value
of ‑5 and marks them for a retry:
EXECUTE mark_for_retry
WITH NAME = 'storage1_index'
EMC Documentum Content Server Version 6.5 DQL Reference Manual 291
MIGRATE_CONTENT
MIGRATE_CONTENT
Syntax
Arguments
292 EMC Documentum Content Server Version 6.5 DQL Reference Manual
MIGRATE_CONTENT
(Blobstores cannot be
specified as a target storage
area.)
RENDITIONS S all, primary, or Indicates which content files
secondary associated with the SysObject
or SysObjects you wish to
move. This argument is
used only when object_id
references a SysObject or
when SYSOBJECT_QUERY is
set to T. Valid values are:
EMC Documentum Content Server Version 6.5 DQL Reference Manual 293
MIGRATE_CONTENT
The default is T.
LOG_FILE S log_file_path Identifies where to log
messages generated by the
method.
294 EMC Documentum Content Server Version 6.5 DQL Reference Manual
MIGRATE_CONTENT
EMC Documentum Content Server Version 6.5 DQL Reference Manual 295
MIGRATE_CONTENT
The default is F.
TYPE_TO_QUERY S type_name Name of a SysObject subtype.
Return value
The method returns a collection with one query result object. The object has one integer
property, named result, whose value is the number of contents successfully migrated.
Permissions
296 EMC Documentum Content Server Version 6.5 DQL Reference Manual
MIGRATE_CONTENT
Description
General notes
MIGRATE_CONTENT is the preferred way to move content files from a file store, ca
store, blobstore, or distributed store storage area to a file store, ca store, or distributed
store storage area. You cannot move content to a blob store storage area. Additionally,
you cannot use this method to move files to or from turbo or external storage. If content
is stored in a retention‑enabled ca store storage area, you can only move the content
to another retention‑enabled ca store storage area. If you move a file to a distributed
storage area, the file is placed in the distributed component local to the Content Server
to which you are connected when executing the method.
The method moves content files associated with immutable objects as well as changeable
objects. It does not update a SysObject’s r_modify_date property when the object’s
content is moved. You must use this method if you want to move content files from an
unencrypted storage area to an encrypted storage area. The method allows you to move
one file, all files in a particular storage area, or a set of files selected by a DQL WHERE
clause qualification.
The method operates on dmr_content objects, resetting their storage_id property to the
new storage area and resetting the data ticket property. It also updates the i_vstamp
property. The i_vstamp property is also incremented for any SysObject that contains the
content file as the first primary content (page 0). (Consequently, if the affected content
objects are associated with replicated SysObjects, the next replication job for those objects
will refresh the objects.) Similarly, if the content objects are associated with persistently
cached objects, the next time the cached objects are accessed by the client, they will
be refreshed.
Here are some general guidelines for using MIGRATE_CONTENT:
• If you want to move content to or from a distributed storage area, you must specify
the dm_distributedstore object as the target or source storage area—do not specify
the actual distributed component.
• Make sure none of the objects whose content you intend to migrate are checked out.
If the method attempts to migrate content associated with a checked out object,
the method fails with an error.
• If the content to be migrated is stored in a content‑addressed storage area with a
retention date, make sure the retention date has expired. If not, the method fails
with an error.
• If the content’s current storage area and the target storage area are the same
content‑addressed storage area and the storage area has a retention period, the
method updates the content’s metadata and retention period and creates a new
address for the content. However, the content is not physically moved.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 297
MIGRATE_CONTENT
• Back up the repository and the file store storage areas before using the method.
• Make sure that the target storage area has enough disk space to hold the migrated
content.
• If you choose not to remove the original content, that content becomes an orphaned
content file and can be removed using dmfilescan.
Including a query
You can include a DQL predicate in the method arguments. Depending on the value of
the SYSOBJECT_QUERY argument, the predicate is run against instances of a specified
object type or against content objects.
SYSOBJECT_QUERY is F (FALSE) by default, meaning that the predicate is applied to
content objects. You must have Superuser permissions to run the predicate against
content objects. When you run the query against content objects, it is recommended
that you use a predicate that references a unique value in the content object. For
example, reference the storage area ID—there is only one storage area in the repository
with any given storeage ID. You cannot include the TYPE_TO_QUERY argument if
SYSOBJECT_QUERY is set to F.
If SYSOBJECT_QUERY is T and the TYPE_TO_QUERY argument is not included,
the predicate executes against instances of the dm_sysobject type. However, if
SYSOBJECT_QUERY is T and the TYPE_TO_QUERY argument is included, the
predicate executes against instances of the object type specified in the TYPE_TO_QUERY
argument. When the query is executed, the method affects the content of only those
objects that match the query and for which you have at least Write permission.
298 EMC Documentum Content Server Version 6.5 DQL Reference Manual
MIGRATE_CONTENT
When the query is run against instances of an object type, the properties specified in
the DQL predicate must be defined for the object type. Consequently, if you want to
specify custom properties of a SysObject subtype in the predicate, you must include the
TYPE_TO_QUERY argument and identify the subtype in that argument.
For example, suppose you want to migrate all content of a subtype called
“loan_documents”, and that subtype has a property named customer_state. The
following MIGRATE_CONTENT statement will execute against all loan_document
objects and moves the content for those belonging to customers in CA (California) state:
EXECUTE migrate_content
WITH target_store='storage_005',
query='customer_state='CA'',
sysobject_query=T,
type_to_query='loan_documents'
EMC Documentum Content Server Version 6.5 DQL Reference Manual 299
MIGRATE_CONTENT
1. Any parent of a migrating content object has more content objects to migrate.
2. The content object has more than one parent and the qualification predicate is
specified against dm_sysobject.
In case 1, the different worker sessions will attempt to migrate the different content
objects. One session will succeed, but the others will fail due to an i_vstamp mismatch.
In case 2, a content object shared by two or more sysobjects may get assigned to multiple
worker sessions. As a result, it is possible for the sessions to migrate the same content
object simultaneously, and thus cause a deadlock or some indefinite behaviors.
To avoid those difficulties, the master session will create a special worker session to
migrate any content that is in a special case. The special session will migrate all of the
special case content objects. If there is a special worker session, there will be total of
PARALLEL_DEGREE + 1 worker sessions. For example, if PARALLEL_DEGREE is 3,
there will be total of 4 worker sessions. These worker sessions are numbered as 0, 1, 2,
and 3. Worker session 0 always acts as the special worker session.
300 EMC Documentum Content Server Version 6.5 DQL Reference Manual
MIGRATE_CONTENT
The special session will always try to acquire tasks from the special task queue. If the
queue is empty, it will try to acquire a task from the regular task queue. In this way, the
special session will share the workload with the other sessions. However, if most of the
migration objects are in one of the special cases, the special session will perform most
of the migration sequentially. If the content to be migrated falls mostly into the special
cases, the migration will be mostly sequential.
The BATCH_SIZE parameter applies to each worker session individually. For example,
if the BATCH_SIZE is 400, each worker session will migrate 400 content objects in a
single transaction.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 301
MIGRATE_CONTENT
• Performance metrics about the amount of time spent in the RDBMS and in the
storage area. The information is logged for each object successfully migrated, and
accummulated totals for ever 100 objects, and a summary total for all objects.
Here are samples of the performance messages. The first sample shows the column
headers for entries for individual objects and the information about one object:
Fri Jan 12 10:03:52 2007 953000
[DM_CONTENT_T_MIGRATE_CONTENT_PERF_REC]info: "Total Time (secs)
Total Storage Time (secs) Total Database Time (secs) Storage Time
for current file (secs) Database Time for current file (secs) Total
Objects Current file size Xput (bytes/sec) for current file Max
storage time (secs) Max database time (secs) Max file size Migration
Xput (docs/sec) Storage Xput (bytes/sec) Total KBytes"
None
Examples
This example migrates a single content file, represented by the content object
0600000272ac100d:
EXECUTE migrate_content FOR 0600000272ac100d
WITH target_store='filestore_02'
The next example migrates all the content from filestore_01 to engr_filestore:
EXECUTE migrate_content
WITH source_store='filestore_01',
302 EMC Documentum Content Server Version 6.5 DQL Reference Manual
MIGRATE_CONTENT
target_store='engr_filestore',batch_size=100,
log_file='C:\temp\migration.log'
The final example uses a DQL predicate to select the content to migrate. The query uses
content size to select the content.
EXECUTE migrate_content
WITH target_store='engr_filestore',
query='content_size>1000',max_migrate_count=1000,
batch_size=100,log_file='C:\temp\migration.log'
EMC Documentum Content Server Version 6.5 DQL Reference Manual 303
MIGRATE_TO_LITE
MIGRATE_TO_LITE
Syntax
To generate, and optionally run, a script to split standard objects into a shareable parent
object and a lightweight object:
EXECUTE migrate_to_lite WITH source_type='source_type'
,shared_parent_type='shared_parent_type'
,execution_mode='execution_mode_split'[,recovery_mode=TRUE|FALSE]
,parent_attributes='parent_attributes'
Arguments
304 EMC Documentum Content Server Version 6.5 DQL Reference Manual
MIGRATE_TO_LITE
EMC Documentum Content Server Version 6.5 DQL Reference Manual 305
MIGRATE_TO_LITE
306 EMC Documentum Content Server Version 6.5 DQL Reference Manual
MIGRATE_TO_LITE
EMC Documentum Content Server Version 6.5 DQL Reference Manual 307
MIGRATE_TO_LITE
Return Value
MIGRATE_TO_LITE returns an object id for the text file containing the SQL script to do
the migration. The script will be generated regardless of the execution_mode specified.
For the first form of the method, execution_mode can take on the following values:
• Split and Finalize—Generates the script and immediately runs it.
• Split without Finalize—Generates the script, but the original types are not changed.
You can then validate the changes before making the changes permanent.
• Finalize—Makes the changes. For this mode, only the source_type,
shared_parent_type, and execution_mode parameters are required.
For the second form of the method, execution_mode can take on the following values:
• Generate Script Only—Generates the script, but does not execute it.
• Run and Finalize—Generates the script and immediately runs it.
• Run without Finalize—Generates the script and immediately runs it, but the
original types are not changed. All the changes will be applied to corresponding
internally‑created types (and tables) with the name dm_lw_id_of_my_parent_type and
dm_lw_id_of_my_child_type created with the changes. You can then validate the
changes before making the changes permanent.
• Cancel—Allows you to remove the interim types and tables created by the Run
without Finalize mode. Typically you would do this if you decided not to finalize the
changes. After removing the interim types and tables, the method ends.
• Finalize—Makes the changes permanent by replacing the original types with the
internal types and dropped the internal types afterwards. If this option is provided
when there is nothing to swap, a warning will be reported back to client and
recorded in server log.
Permissions
You must have Superuser privileges, or be the owner of the involved types, to use this
method. But also see the note for Oracle installation users following the description
section.
308 EMC Documentum Content Server Version 6.5 DQL Reference Manual
MIGRATE_TO_LITE
Description
Use this method to migrate standard types and objects to shareable and lightweight
types and objects. This method can also be used to reparent lightweight objects.
The first form of the command is used to convert a standard type to a lightweight
and a shareable type. In this form of the command, the shareable type is formed by
splitting off attributes from the original standard type. The remaining attributes are used
to create the lightweight type. Specify the name of the standard type to split in the
source_type parameter, the new shareable type in the shared_parent_type parameter,
and list the attributes to split off of the original type in the parent_attributes parameter.
When you use this method to split standard objects, each lightweight object has its own
private parent. In other words, each lightweight object is materialized. You can then
reparent the lightweight objects by using the second form of the command, specifying
parent_sql_predicates and parent_ids to point the lightweight objects to shareable
parents.
The second form of the command does not move attributes from one type to another.
You will use it when all the non‑inherited standard type attributes will remain with the
lightweight type. You can also use this form to reparent lightweight objects.
If you use the second form of the command and do not specify a lightweight type, and
you specify a standard type in the shared_parent_type argument, the standard type is
changed into a shareable type.
The second form can convert standard objects to lightweight objects and parent them
with specified shareable parents. To do this, you specify a shared_parent_type and a
lightweight_type. Conceptually, you can imagine that all the standard objects specified
by the lightweight_type argument are converted to materialized lightweight objects
pointing to private parents of the shared_parent_type. Next, all the objects of the
lightweight type that match the parent_sql_predicate argument are made to point to
the shareable parent with the associated parent_id. The method continues associating
each group of lightweight objects that matches each subsequent parent_sql_predicate
and parenting that group with the associated shareable parent. If any unconverted
materialized lightweight objects remain after converting each parent_sql_predicate
group, the remaining objects are parented with the default_parent_id shareable parent,
if specified. Typically, you would create some shareable parents ahead of time, and
then use this method to associate that list of objects with the groups defined by the
parent_sql_predicate.
To use this method to reparent lightweight objects, specify the shared_parent_type and
the lightweight_type, the parent_sql_predicate to select which objects to reparent and the
parent_id to reparent to. You must also specify recovery_mode as TRUE, or the method
won’t work with already converted objects of lightweight_type.
Note: In order to use this method with an Oracle installation, the user account that
Content Server uses to access the database must have enhanced privileges. The following
EMC Documentum Content Server Version 6.5 DQL Reference Manual 309
MIGRATE_TO_LITE
example assumes that you have logged into SQLPLUS as the SYS user, in SYSDBA mode
to grant these privileges to the repository_1 user:
grant DBA to repository_1;
Examples
This example generates a script to convert usertype_1 to a shareable type. You do not
execute this script against your database. It is created so you can examine the commands
that will be issued when you later execute this method using another form of the method,
either Run and Finalize or Run without Finalize:
EXECUTE migrate_to_lite WITH "shared_parent_type"='usertype_1'
,"execution_mode"='Generate Script Only'
To get the script, you can issue the following DQL statement (assume that the result of
the earlier method returned the object ID 0855706080007c19):
EXECUTE get_file_url FOR '0855706080007c19' WITH "format"='text'
This example converts usertype_3 to a shareable type in two steps. After step one, you
can examine the script and the temporary types and tables to verify the repository
changes. For step one, use the Run without Finalize execution_mode to run the script
and create the temporary tables:
EXECUTE migrate_to_lite WITH "shared_parent_type"='usertype_3'
,"execution_mode"='Run without Finalize'
Then, for step two, use the Finalize execution_mode to swap in the temporary tables
and commit the change:
EXECUTE migrate_to_lite WITH "shared_parent_type"='usertype_3'
,"execution_mode"='Finalize'
This example converts an existing standard type, emc_payment_check, and all its objects,
into a lightweight type and a shareable type, emc_payment_bank. Each lightweight
object will have its own private parent object. The parent type will take the attributes
bank_code and routing, but the other attributes will be part of the lightweight type.
In this example, there are already objects created of type emc_payment_check. You can
create the type using the following command:
CREATE TYPE "emc_payment_check" (
account integer,
check_number integer,
transaction_date date,
amount float,
310 EMC Documentum Content Server Version 6.5 DQL Reference Manual
MIGRATE_TO_LITE
bank_code integer,
routing integer
) WITH SUPERTYPE "dm_document" PUBLISH
You can also use the batch example program listed in EMC Documentum High‑Volume
Server Development Guide to create a number of objects for this example.
Use the following command to split the emc_payment_check objects into lightweight
objects of type emc_payment_check, and private parents of type emc_payment_bank.
The bank_code and routing attribute values will be associated with the private parent,
and the other attributes will be associated with the lightweight objects:
EXECUTE migrate_to_lite WITH "source_type"='emc_payment_check'
,"shared_parent_type"='emc_payment_bank'
,"execution_mode"='Split and Finalize'
,"parent_attributes"='bank_code,routing'
The following example takes the materialized lightweight objects converted by the last
example and reparents them. Objects with check_numbers less than five are reparented
to a separately created emc_payment_bank shareable parent, and the remaining
materialized objects are reparented to another separately created shareable parent:
EXECUTE "migrate_to_lite" WITH
"shared_parent_type"='emc_payment_bank',"lightweight_type"='emc_payment_check'
,"execution_mode"='Run and Finalize',"parent_sql_predicate"='check_number<5'
,"parent_id"='0925392d80001d5d'
,"default_parent_id"='0925392d80001d5e'
EMC Documentum Content Server Version 6.5 DQL Reference Manual 311
MODIFY_TRACE
MODIFY_TRACE
Purpose Turns tracing on and off for full‑text index query operations.
Syntax
EXECUTE modify_trace
WITH subsystem='fulltext',value='tracing_level'
Arguments
Return value
MODIFY_TRACE returns a collection with one query result object. The object has one
Boolean property that indicates the success (TRUE) or failure (FALSE) of the operation.
Permissions
312 EMC Documentum Content Server Version 6.5 DQL Reference Manual
MODIFY_TRACE
Description
MODIFY_TRACE turns tracing on and off for full‑text index operations. When tracing
is on, tracing information for all full‑text queries is logged. The trace information is
placed in the server’s log file.
The tracing information includes informational, verbose, and debug messages. All trace
messages include time stamps and process and thread ID information.
If the method returns FALSE, the level of tracing remains unchanged. For example, if
tracing is currently set at all and you execute MODIFY_TRACE to reset the level to none,
but the method returned FALSE, the trace level remains at the all level.
Examples
EMC Documentum Content Server Version 6.5 DQL Reference Manual 313
MOVE_INDEX
MOVE_INDEX
Purpose Moves an existing object type index from one tablespace or segment to another.
(This method is not supported for servers running against DB2.)
Syntax
Arguments
Return value
MOVE_INDEX returns a collection with one query result object. The object contains one
Boolean property that indicates the success (TRUE) or failure (FALSE) of the operation.
Permissions
314 EMC Documentum Content Server Version 6.5 DQL Reference Manual
MOVE_INDEX
Description
MOVE_INDEX moves an existing object type index from one tablespace or segment to
another. You can obtain the index’s object ID from the index’s index object. Refer to the
System Object Reference Manual for a list of the properties defined for the index type.
GLOBAL_INDEX is a boolean parameter that indicates whether the index being moved
is a global index. The default value is FALSE. This parameter can be used only when the
type is a partitioned type, and is only useful if the index is a unique index.
MOVE_INDEX only operates on object type indexes that are represented in the
repository by dmi_index objects.
Note: Those indexes that do not have a dmi_index object (DMI_OBJECT_TPE_UNIQUE
and DM_FED_LOG_INDEX for example) may be moved manually. However, be sure to
shut down Content Server before moving them.
Examples
This example moves the index represented by 1f0000012643124c to the index2 tablespace:
EXECUTE move_index FOR '1f0000012643124c'
WITH name = 'index2'
EMC Documentum Content Server Version 6.5 DQL Reference Manual 315
PING
PING
Syntax
dmAPIGet("apply,c,NULL,PING[,RETRY_ON_TIMEOUT,B,T|F]")
Arguments
Return value
PING returns a collection with one query result object. The object has one property,
called result, that is TRUE if the connection is alive. If the connection has timed out, a
null collection is returned.
Permissions
Description
None
316 EMC Documentum Content Server Version 6.5 DQL Reference Manual
PING
None
Examples
dmAPIGet("apply,c,NULL,PING,RETRY_ON_TIMEOUT,B,T")
EMC Documentum Content Server Version 6.5 DQL Reference Manual 317
PURGE_AUDIT
PURGE_AUDIT
Syntax
Arguments
318 EMC Documentum Content Server Version 6.5 DQL Reference Manual
PURGE_AUDIT
EMC Documentum Content Server Version 6.5 DQL Reference Manual 319
PURGE_AUDIT
320 EMC Documentum Content Server Version 6.5 DQL Reference Manual
PURGE_AUDIT
Include ID_START if
the DELETE_MODE is
ID_RANGE. You must also
include ID_END.
ID_END S end_id The object ID of an audit trail
entry.
Include ID_END if
the DELETE_MODE is
ID_RANGE. You must also
include ID_START. The
ID_END object ID must be
larger than the object ID
identified in ID_START
OBJECT_ID S object_id Include this argument
if DELETE_MODE
is ALL_VERSIONS,
SINGLE_VERSION,
SINGLE_ID, or
AUDIT_RECORD.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 321
PURGE_AUDIT
The default is F
(FALSE), meaning the
dm_adddigsignature and
dm_addesignature entries are
not considered for deletion.
322 EMC Documentum Content Server Version 6.5 DQL Reference Manual
PURGE_AUDIT
Return value
The PURGE_AUDIT method returns a collection with one query result object. The query
result object has two properties, result and deleted_objects. The result property is set to T
if the method completed successfully and F if the method did not complete successfully.
deleted_objects records the number of audit trail entries that were deleted.
Permissions
Description
Executing the PURGE_AUDIT method always generates at least one audit trail entry
with the event name dm_purgeaudit. The operation generates one audit trail entry for
each transaction within the operation. For example, if you set COMMIT_SIZE to 100 and
EMC Documentum Content Server Version 6.5 DQL Reference Manual 323
PURGE_AUDIT
the operation deletes 700 audit trail entries, the operation generates 7 audit trail entries,
one for each transaction.
The entry for each transaction has the event name dm_purgeaudit. The optional
properties record the following information for the transaction:
• string_1 stores the time_stamp value of the first audit trail entry deleted in the
transaction
• string_2 stores the time_stamp value of the last audit trail entry deleted in the
transaction
• string_3 stores the actual number of audit trail entries deleted by the transaction
• string_5 stores the entire list of arguments from the method’s command line
• id_1 stores the object ID of the first audit trail object deleted in the transaction
• id_2 stores the object ID of the last audit trail object deleted in the transaction
None
Examples
This example deletes all archived audit trail entries generated from January 1, 2003
to January 1, 2004:
EXECUTE purge_audit WITH DELETE_MODE='DATE_RANGE',
date_start='01/01/2003 00:00:00 AM',
date_end='01/01/2004 00:00:00 AM'
This example deletes all audit trail entries generated from January 1, 2003 to January 1,
2004, including unarchived entries. The number of entries deleted in each transaction is
set to 500:
EXECUTE purge_audit WITH delete_mode='DATE_RANGE',
date_start='01/01/2003 00:00:00 AM',
date_end='01/01/2004 00:00:00 AM'
purge_non_archived=T,commit_size=500
This example deletes all archived audit trail entries that identify the document
09000003ac5794ef as the audited object:
EXECUTE purge_audit WITH delete_mode='ALL_VERSIONS',
object_id='09000003ac5794ef'
This example deletes the single audit trail entry whose object ID is 5f0000021372ac6f:
EXECUTE purge_audit WITH delete_mode='AUDIT_RECORD',
object_id='5f0000021372ac6f'
324 EMC Documentum Content Server Version 6.5 DQL Reference Manual
PURGE_AUDIT
This example deletes all audit trail entries whose object IDs range from 5f1e9a8b003a901
to 5f1e9a8b003a925, including unarchived entries:
EXECUTE purge_audit WITH delete_mode='ID_RANGE',
id_start='5f1e9a8b003a901',id_end='5f1e9a8b003a925',
purge_non_archived=T
This example deletes all audit trail entries that satisfy the specified DQL predicate:
EXECUTE purge_audit WITH delete_mode='PREDICATE',
dql_predicate=
'dm_audittrail where event_name like ''dcm%''and
r_gen_source=0'
If you need to include single‑quotes in the predicate string, (for example, ’dcm%’), escape
the single‑quotes with single‑quotes. This is illustrated in the example above.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 325
PURGE_CONTENT
PURGE_CONTENT
Purpose Sets a content file off line and deletes the file from its storage area.
Syntax
Arguments
Return value
PURGE_CONTENT returns a collection with one query result object. The object has
one Boolean property whose value indicates the success (TRUE) or failure (FALSE) of
the operation.
Permissions
You must have Sysadmin or Superuser user privileges to use this method.
Description
326 EMC Documentum Content Server Version 6.5 DQL Reference Manual
PURGE_CONTENT
deletes the file from the storage area and sets the is_offline property of the file’s content
object to TRUE.
To use PURGE_CONTENT, you must be using one server for both data and content
requests. If the configuration is set up for content servers, you must issue a connection
request that bypasses the content server to use PURGE_CONTENT in the session.
Examples
This example deletes the content file associated with the content object represented by
060000018745231c and set the is_offline property in the associated content object to TRUE:
EXECUTE purge_content FOR '060000018745231c'
EMC Documentum Content Server Version 6.5 DQL Reference Manual 327
PUSH_CONTENT_ATTRS
PUSH_CONTENT_ATTRS
Syntax
Arguments
328 EMC Documentum Content Server Version 6.5 DQL Reference Manual
PUSH_CONTENT_ATTRS
Return value
PUSH_CONTENT_ATTRS returns a collection with one query result object. The object
has one Boolean property that contains TRUE if the method was successful and FALSE if
unsuccessful.
Permissions
To execute this method you must be a superuser and you must have at least Write
permission on the object identified in object_id.
Description
EMC Documentum Content Server Version 6.5 DQL Reference Manual 329
PUSH_CONTENT_ATTRS
Examples
330 EMC Documentum Content Server Version 6.5 DQL Reference Manual
RECOVER_AUTO_TASKS
RECOVER_AUTO_TASKS
Purpose Recovers work items that have been claimed, but not yet processed, by a workflow
agent associated with a failed Content Server.
Syntax
EXECUTE recover_auto_tasks
WITH server_config_name=name
Arguments
Return value
Permissions
Description
If a Content Server fails, its workflow agent is stopped also. When the server is restarted,
the workflow agent will recognize and process any work items it had claimed but not
processed before the failure. However, if you cannot restart the Content Server, you
EMC Documentum Content Server Version 6.5 DQL Reference Manual 331
RECOVER_AUTO_TASKS
must recover those work items already claimed by its associated workflow agent so
that another workflow agent can process them. RECOVER_AUTO_TASKS performs
that recovery.
Running RECOVER_AUTO_TASKS executes a query to update all work items claimed
but unprocessed by the failed server’s workflow agent. The query resets the a_wq_name
property in the work items to empty. This allows other workflow agents running against
the repository to claim those work items for processing.
Before executing this method, make sure that the specified Content Server is not running.
None
Examples
EXECUTE recover_auto_tasks
WITH server_config_name='DevRepository_1'
332 EMC Documentum Content Server Version 6.5 DQL Reference Manual
REGISTER_ASSET
REGISTER_ASSET
Purpose Queues a request to the Media Server to generate a thumbnail, proxies, and
metadata for a rich media content file.
Syntax
object_id is the object ID of the document that contains the content file.
Arguments
Return value
REGISTER_ASSET returns a collection with one query result object. The object has
properties, result and result_id. The result property is a Boolean property whose value
indicates success (TRUE) or failure (FALSE) of the operation. The result_id property
records the object ID of the newly created queue item object.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 333
REGISTER_ASSET
Permissions
You must have at least Version permission on the object or Sysadmin privileges to use
this method.
Description
Property Set to
event dm_register_event
item_id object ID of the SysObject that triggered the request
instruction_page page number of the content in the SysObject
date_sent date the request was made
name dm_mediaserver
sent_by session user
priority priority level identified in the REGISTER_ASSET call
Example
334 EMC Documentum Content Server Version 6.5 DQL Reference Manual
REINDEX_PARTITIONABLE_TYPE
REINDEX_PARTITIONABLE_TYPE
Syntax
Arguments
Return value
Permissions
Description
EMC Documentum Content Server Version 6.5 DQL Reference Manual 335
REINDEX_PARTITIONABLE_TYPE
None.
Example
336 EMC Documentum Content Server Version 6.5 DQL Reference Manual
REORGANIZE_TABLE
REORGANIZE_TABLE
Syntax
Arguments
EMC Documentum Content Server Version 6.5 DQL Reference Manual 337
REORGANIZE_TABLE
Return value
REORGANIZE_TABLE returns a collection with one query result object. The object has
one property, named result, that contains T if the method was successful or F if the
method was unsuccessful.
Permissions
Description
338 EMC Documentum Content Server Version 6.5 DQL Reference Manual
REORGANIZE_TABLE
Examples
This example reorganizes the dm_sysobject_s table. (Note that these two examples do
not work on Oracle because the required INDEX argument is not included.)
EXECUTE reorganize_table
WITH table_name='dm_sysobject_s'
EMC Documentum Content Server Version 6.5 DQL Reference Manual 339
REPLICATE
REPLICATE
Syntax
EXECUTE replicate
WITH query='value',store='value'
[,type='value']
Arguments
340 EMC Documentum Content Server Version 6.5 DQL Reference Manual
REPLICATE
Return value
REPLICATE returns a collection with one query result object. The object has one Boolean
property whose value indicates the success (TRUE) or failure (FALSE) of the operation.
Permissions
Description
REPLICATE copies content files from one component of a distributed storage area to
another. Typically, replication of content files is performed by the ContentReplication or
surrogate get. Use REPLICATE as a manual backup for these tools. (Refer to the Content
Server Administration Guide for information about the ContentReplication and to the
Distributed Configuration Guide for information about surrogate get.)
REPLICATE checks the contents stored in the storage area at a specified site and copies
back to the local storage area any contents that meet the conditions defined in the
function. (Refer to the Distributed Configuration Guide for more information.)
To use REPLICATE, you must be using one server for both data and content requests. If
the configuration is set up for content servers, you must issue a connection request that
bypasses the content server to use REPLICATE in the session.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 341
REPLICATE
Examples
This example replicates all content for documents of the subtype proposals owned by
jennyk:
EXECUTE replicate WITH query='owner_name=jennyk',
store='distcomp_1',type='proposals'
The next example replicates the content of all objects whose content is authored by Jane:
EXECUTE replicate WITH query='any authors in (''Jane'')',
store='diststorage3'
342 EMC Documentum Content Server Version 6.5 DQL Reference Manual
RESET_TICKET_KEY
RESET_TICKET_KEY
Syntax
EXECUTE reset_ticket_key
Arguments
None
Return value
The method returns a collection with one query result object. The object has one
property, result, that contains T (TRUE) if the method was successful or F (FALSE) if the
method was unsuccessful.
Permissions
Description
Use this method when you need to replace a login ticket key in a repository with a new
key. Any login tickets generated by the repository before the LTK was reset cannot
be used within the repository.
You must restart Content Server after resetting the login ticket key.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 343
RESET_TICKET_KEY
Examples
EXECUTE reset_ticket_key
344 EMC Documentum Content Server Version 6.5 DQL Reference Manual
RESTORE_CONTENT
RESTORE_CONTENT
Syntax
content_obj_id is the object ID of the content object associated with the specified file.
Arguments
Return value
RESTORE_CONTENT returns a collection with one query result object. The object has
one Boolean property whose value indicates the success (TRUE) or failure (FALSE) of
the operation.
Permissions
You must have Sysadmin or Superuser user privileges to use this method.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 345
RESTORE_CONTENT
General notes
Examples
The following examples restore the file named Myproposal using an EXECUTE
statement:
EXECUTE restore_content
WITH file='c:\archive1\Myproposal'
or, on UNIX:
EXECUTE restore_content
WITH file='u02/archive1/Myproposal'
346 EMC Documentum Content Server Version 6.5 DQL Reference Manual
ROLES_FOR_USER
ROLES_FOR_USER
Purpose Retrieves the roles assigned to the user in a particular client domain.
Syntax
Do not include the FOR clause if you include the NAME argument.
Arguments
Return value
This returns a collection of one query result object that has three properties: user_name,
domain, and roles. user_name contains the name of the user being queried. domain
EMC Documentum Content Server Version 6.5 DQL Reference Manual 347
ROLES_FOR_USER
lists the domains searched for user roles. roles is a repeating property that contains the
roles for the user.
Permissions
General notes
This method is used by client applications to determine the roles assigned to users who
use the applications. For example, when a user starts a session with Desktop Client,
DTC executes this method to query the domain group associated with Desktop Client,
to determine what roles the user has in Desktop Client.
(For more information about groups, roles, and domains, refer to Content Server
Fundamentals.)
None
Examples
EXECUTE roles_for_user
WITH user_name=MaryJean,domain="HR_app"
348 EMC Documentum Content Server Version 6.5 DQL Reference Manual
SET_APIDEADLOCK
SET_APIDEADLOCK
Syntax
EXECUTE set_apideadlock
WITH API=api_name,VALUE=T|F{,API=operation_name,VALUE=T|F}
Arguments
Return value
SET_APIDEADLOCK returns a collection with one query result object. The object has
one Boolean property whose value indicates the success (TRUE) or failure (FALSE) of
the operation.
Permissions
EMC Documentum Content Server Version 6.5 DQL Reference Manual 349
SET_APIDEADLOCK
General notes
Use SET_APIDEADLOCK to test deadlock retry code in client applications that execute
in explicit transactions. Operations that occur in explicit transactions are not protected by
Content Server’s internal deadlock retry functionality. Consequently, applications that
execute in an explicit transaction may include their own deadlock retry functionality.
To test the deadlock retry functionality, use SET_APIDEADLOCK to place a trigger on
one or more methods or operations executed in the application. When the application
is tested, Content Server simulates a deadlock when one of the methods or operations
executes, allowing you to test the deadlock retry code in the application. The simulated
deadlock sets the _isdeadlocked computed property and issues a rollback to the database.
The deadlock trigger is removed automatically from the method or operation which
triggered the simulated deadlock.
Table 83, page 350, lists the operations and methods on which you can place a deadlock
trigger.
Operation Representing
acquire Acquisition of a work item
bp_transition Completion of the bp_transition method
branch Branching of a version tree
checkin A checkin operation
complete Completion of a work item
demote Demotion of an object
dequeue Dequeuing an object
350 EMC Documentum Content Server Version 6.5 DQL Reference Manual
SET_APIDEADLOCK
Operation Representing
save Save on any object
None
Examples
This example sets a deadlock trigger on the Promote and Revert methods:
EXECUTE set_apideadlock
WITH api='promote',value=T,
api='revert',value=T
This example removes the deadlock trigger from the Checkin method:
EXECUTE set_apideadlock
WITH api='checkin',value=F
EMC Documentum Content Server Version 6.5 DQL Reference Manual 351
SET_CONTENT_ATTRS
SET_CONTENT_ATTRS
Syntax
object_id is the object ID of the document that contains the content file.
Arguments
352 EMC Documentum Content Server Version 6.5 DQL Reference Manual
SET_CONTENT_ATTRS
ʺcharacter_stringʺ
FLOAT(number)
DATE(date_value)
Return value
SET_CONTENT_ATTRS returns a collection with one query result object. The object has
one Boolean property whose value indicates the success (TRUE) or failure (FALSE) of
the operation.
Permissions
You must have at least Write permission on the object or Sysadmin privileges to use this
method.
General notes
EMC Documentum Content Server Version 6.5 DQL Reference Manual 353
SET_CONTENT_ATTRS
The Media Server uses this method to store the metadata it generates for a content file in
the file’s content object.
Because the PARAMETERS argument is a string argument, enclose the full string in
single quotes. Additionally, if value is a character string, enclose the individual value
in double quotes. For example:
EXECUTE set_content_attrs FOR 0900038000ab4d13
WITH format='jpeg',page=0,
PARAMETERS='name="photo_closeup"'
If the metadata value is a numeric value, use the FLOAT function to specify the value:
EXECUTE set_content_attrs FOR 0900038000ab4d13
WITH format='jpeg',page=0,
PARAMETERS='width=FLOAT(12.5)'
If the metadata value is a date, use the DATE function to specify the value:
EXECUTE set_content_attrs FOR 0900038000ab4d13
WITH format='jpeg',page=0,
PARAMETERS='take_down_date=DATE(09/30/2002)'
The method sets the content object properties with values specified in the PARAMETERS
argument beginning at the zero index position. The values are set in the order in which
they are included in the PARAMETERS argument.
The content_attr_name and content_attr_data_type values are set to the name of the
property and its datatype. If the property’s datatype is string, the value is stored
in content_attr_value and the remaining two properties (content_attr_date_value
and content_attr_num_value) are set to the default NULL values (NULLDATE
and NULLINT). If the property’s datatype is numeric, the value is stored in
content_attr_num_value and the remaining two properties (content_attr_value
and content_attr_date_value) are set to the default NULL values (NULLSTRING
and NULLDATE). If the property’s datatype is date, the value is stored in
content_attr_date_value and the remaining two properties (content_attr_num_value and
content_attr_value) are set to the default NULL values (NULLINT and NULLSTRING).
For example, suppose an application executes the following statement:
EXECUTE set_content_attrs FOR 0900038000ab4d13
WITH format='jpeg',page=0,
PARAMETERS='name="photo_closeup",width=FLOAT(12.5),take_down_date=DATE(09/30/2002)'
Table 85, page 355, shows the resulting values in the properties in the content object.
354 EMC Documentum Content Server Version 6.5 DQL Reference Manual
SET_CONTENT_ATTRS
Table 85. Example settings for content metadata properties in content objects
The TRUNCATE argument controls how existing values in the content properties are
handled. If TRUNCATE is set to T (TRUE), existing values in the properties are removed
before the properties are set to the new names and values. If TRUNCATE is F (FALSE),
existing names and values are not removed. If the PARAMETERS argument includes
a name that already present in the properties, the name’s value is overwritten. Names
specified in the PARAMETERS argument that are not currently present in the properties
are appended to the properties. The default for TRUNCATE is F.
Using PAGE_MODIFIER
Use the PAGE_MODIFIER argument to define an identifier that distinguishes a rendition
from any other rendition in the same format associated with a particular content page.
There are no constraints on the number of renditions that you can create for a document.
Additionally, you can create multiple renditions in the same format for a particular
document. To allow users or applications to distinguish between multiple renditions in
the same format for a particular document, define a page modifier.
Including the PAGE_MODIFIER argument in SET_CONTENT_ATTRS sets the
page_modifier property of the content object. This property, along with three others
(parent_id, page, i_format) uniquely identifies a rendition. Applications that query
renditions can use the modifier to ensure that they return the correct renditions.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 355
SET_CONTENT_ATTRS
Examples
356 EMC Documentum Content Server Version 6.5 DQL Reference Manual
SET_OPTIONS
SET_OPTIONS
Syntax
EXECUTE set_options
WITH option='option_name',"value"=true|false
Arguments
Return value
SET_OPTIONS returns a collection with on result object. The object has one Boolean
property whose value indicates the success (TRUE) or failure (FALSE) of the operation.
Permissions
General notes
The tracing results for the options representing server operations are printed to the
server log file. The trace_method_server option traces method server operations. The
EMC Documentum Content Server Version 6.5 DQL Reference Manual 357
SET_OPTIONS
358 EMC Documentum Content Server Version 6.5 DQL Reference Manual
SET_OPTIONS
EMC Documentum Content Server Version 6.5 DQL Reference Manual 359
SET_OPTIONS
Examples
360 EMC Documentum Content Server Version 6.5 DQL Reference Manual
SET_STORAGE_STATE
SET_STORAGE_STATE
Purpose Takes a storage area offline, places an off‑line storage area back online, or makes a
storage area read‑only.
Syntax
If you include the STORE argument, do not include the FOR clause.
Arguments
Return value
SET_STORAGE_STATE returns a collection with one result object. The object has one
Boolean property whose value indicates the success (TRUE) or failure (FALSE) of the
operation.
Permissions
EMC Documentum Content Server Version 6.5 DQL Reference Manual 361
SET_STORAGE_STATE
General notes
To change either an offline or readonly storage area back to the online state (users can
read and write the storage area), issue the SET_STORAGE_STATE method without
specifying a state argument; for example:
EXECUTE set_storage_state WITH store=filestore_33
None
Example
The following example moves the storage area called manfred offline:
EXECUTE set_storage_state
WITH store = 'manfred', offline = T
362 EMC Documentum Content Server Version 6.5 DQL Reference Manual
SHOW_SESSIONS
SHOW_SESSIONS
Purpose Lists information about all the currently active sessions and a user‑specified
number of historical sessions.
Syntax
EXECUTE show_sessions
Arguments
Return value
Permissions
General notes
SHOW_SESSIONS does not return information about historical (timed out) sessions.
It only returns information about currently active sessions. The information for each
session is identical to the information returned by LIST_SESSIONS for active sessions if
that method is run with the BRIEF_INFO argument set to FALSE.
Note: You can use SHOW_SESSIONS to obtain the process ID if you need to shutdown
or kill a session or server.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 363
SHOW_SESSIONS
Examples
364 EMC Documentum Content Server Version 6.5 DQL Reference Manual
TRANSCODE_CONTENT
TRANSCODE_CONTENT
Purpose Queues a transformation request for a content file to the Media Server.
Syntax
object_id is the object ID of the document that contains the content file.
Arguments
EMC Documentum Content Server Version 6.5 DQL Reference Manual 365
TRANSCODE_CONTENT
Return value
TRANSCODE_CONTENT returns a collection with one query result object. The object
has two properties, result and result_id. The result property is a Boolean property whose
value indicates the success (TRUE) or failure (FALSE) of the operation. The result_id
property records the object ID of the queue item that is created as by the method.
Permissions
You must have at least Write permission on the object or Sysadmin privileges to use this
method.
366 EMC Documentum Content Server Version 6.5 DQL Reference Manual
TRANSCODE_CONTENT
General notes
Property Set to
event dm_transcode_content
item_id object ID of the SysObject that triggered the request
instruction_page page number of the content in the SysObject
content_type starting format of the SysObject
message value specified in the MESSAGE argument
item_type format to which to transform the content
date_sent date the request was made
name dm_mediaserver
sent_by session user
priority priority level identified in the REGISTER_ASSET call
EMC Documentum Content Server Version 6.5 DQL Reference Manual 367
TRANSCODE_CONTENT
Example
368 EMC Documentum Content Server Version 6.5 DQL Reference Manual
UPDATE_STATISTICS
UPDATE_STATISTICS
Syntax
Arguments
Return value
UPDATE_STATISTICS returns a collection with one query result object. The object has
one property, called result, that contains T if the method was successful or F if the
method was unsuccessful.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 369
UPDATE_STATISTICS
Permissions
General notes
If you do not include EXTRA_DATA, all columns in the table are used.
Including this argument for Sybase databases can be expensive because the RDBMS must
scan the table and perform a sort operation on the table.
370 EMC Documentum Content Server Version 6.5 DQL Reference Manual
UPDATE_STATISTICS
For SQL Server and DB2, the argument identifies an index for which you want to
generate statistics. The index must be an index on the table identified in TABLE_NAME.
If you do not include the argument, the database table identified in TABLE_NAME and
all of its indexes are analyzed.
Examples
This example updates the statistics for the dm_user_s table, specifying that only the
user_name, user_os_name and user_address columns be used for the analysis:
EXECUTE update_statistics
WITH table_name='dm_user_s',
extra_data='user_name,user_os_name,user_address'
EMC Documentum Content Server Version 6.5 DQL Reference Manual 371
WEBCACHE_PUBLISH
WEBCACHE_PUBLISH
Syntax
apply,session,webc_config_obj_id,
WEBCACHE_PUBLISH[,ARGUMENTS,S,argument_list]"
Arguments
Table 93, page 372, lists the valid entries for the ARGUMENTS argument.
372 EMC Documentum Content Server Version 6.5 DQL Reference Manual
WEBCACHE_PUBLISH
EMC Documentum Content Server Version 6.5 DQL Reference Manual 373
WEBCACHE_PUBLISH
Return value
Permissions
You must have Sysadmin or Superuser privileges to use this administration method.
374 EMC Documentum Content Server Version 6.5 DQL Reference Manual
WEBCACHE_PUBLISH
When the operations generate a log file, the document is stored in the repository in
/System/Sysadmin/Reports/Webcache. By default, the method does not generate a
log file if you are publishing only a single item. To force it to generate a log file for
single‑item operations you can include the ‑store_log argument, set to TRUE
Example
dmAPIGet("apply,s0,080015b38001a43c,WEBCACHE_PUBLISH,
ARGUMENTS,S,source_object 090015b38007bf19")
EMC Documentum Content Server Version 6.5 DQL Reference Manual 375
WEBCACHE_PUBLISH
376 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Chapter 4
Using DQL
This chapter introduces DQL and then provides usability information for DQL. The chapter includes
the following topics:
• Introducing DQL, page 377, introduces the Document Query Language and its basic query
statements.
• Quoting object type and property names, page 379, describes a recommended best practice for
referencing object type and property names in queries.
• NULLs, default values, and DQL, page 380, describes how DQL handles NULLs and default
values.
• Repeating properties in queries, page 382, describes how to reference repeating properties
in queries.
• Querying virtual documents, page 387, describes how to query virtual documents.
• Full‑text searching and virtual documents, page 388, describes how you can conduct a fulltext
search on an assembled virtual document.
• Querying registered tables, page 388, describes how to reference registered tables in queries.
• Caching queries, page 390, describes how to cache query results.
• Privileges, permissions, and queries, page 390, describes how privileges and permissions affect
query results.
For information about using DQL and XDQL to query XML documents, refer to the XML Application
Development Guide.
Introducing DQL
DQL is the acronym for Document Query Language, the SQL‑like language that you
use to query the objects in a repository. Using DQL, you can retrieve, update, and
delete objects and create new objects. DQL also allows you to search indexed content
and metadata (property values).
EMC Documentum Content Server Version 6.5 DQL Reference Manual 377
Using DQL
You can also use DQL to access registered tables—tables in the underlying RDBMS that
are known to Content Server but that are not part of the repository. (Content Server
Fundamentals describes the database tables that make up a repository.)
The basic DQL query statements retrieve information about the objects in a repository
and manipulate those objects. Table 94, page 378, describes the basic query statements.
Statement Description
SELECT The SELECT statement is the primary
query statement. SELECT statements
return a wide variety of information from
the repository. SELECT statements are
not only stand‑alone statements but are
also used in other DQL statements.
378 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Using DQL
Statement Description
• Link an object to a folder or cabinet or
unlink an object
• Move an object to a new folder or
cabinet
CHANGE...OBJECT The CHANGE...OBJECT[S] statement
moves one or more objects from one
object type to another. With some
constraints, you can change an object of
a particular type to any type that is a
subtype or supertype of the current type.
For example, you can change an object
of type dm_document to a user‑defined
document subtype.
INSERT The INSERT statement adds a row to the
RDBMS table that underlies a registered
table.
DELETE The DELETE statement destroys rows
in the RDBMS table that underlies a
registered table.
DELETE...OBJECT The DELETE...OBJECT[S] statement
deletes objects from the repository.
When you issue one of these statements, only those objects for which you have the
appropriate permissions are affected. For example, if you issue an UPDATE...OBJECT
statement to update document objects, only those documents for which you have at least
Write permission are considered for updating. In addition, the statements have optional
clauses that let you identify specifically which objects are the target of the operation.
For a complete description of query statement syntax and usage, refer to the statement
descriptions in Chapter 2, DQL Statements, in the Content Server DQL Reference Manual.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 379
Using DQL
380 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Using DQL
Table 96. Predicates that test for NULL and default values
Predicate Description
IS [NOT]NULL Used only for columns in registered
tables. Tests for the presence of NULL.
ANY...IS [NOT]NULL Tests for the presence of the NULL
terminator in a repeating property. This is
primarily useful if you are testing values
in two or more repeating properties at
corresponding index levels.
[ANY]...IS [NOT]NULLDATE Tests for the presence of the NULLDATE
or a NULL. Use the ANY option if the
property is a repeating property.
[ANY]...IS [NOT]NULLSTRING Tests for the presence of the default string
value (a single blank) or a NULL in a
property. Use the ANY option if the
property is a repeating property.
[ANY]...IS [NOT]NULLINT Tests for the presence of the default
numeric value (a zero) or a NULL in a
property. Use the ANY option if the
property is a repeating property.
For more information about querying repeating properties, refer to Repeating properties
in queries, page 382.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 381
Using DQL
This statement (assuming the property values for ratings described for the previous
example) returns the number 4 because the default value is counted.
You can use the WHERE clause to exclude the default value when you are selecting
aggregate functions. For example, the following statement returns the correct number of
ratings for the lemon cake recipe:
SELECT COUNT(DISTINCT rating) FROM "recipe"
WHERE "object_name" = 'lemon cake'
AND "rating" IS NOT NULLINT
382 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Using DQL
Inserting values
When you want to control where the new value is placed in the repeating property, use
the insert option as the update clause in the UPDATE...OBJECT statement. The syntax is:
UPDATE object_type OBJECTS
INSERT property_name[x] = value
...
For example, suppose that the authors of the Espresso Cheesecake recipe forgot to
include one of the ingredients for the crust. The ingredients for the crust are listed ahead
of the ingredients for the filling in the document. Consequently, the authors want to
insert the forgotten ingredient ahead of the filling ingredients so that it appears with the
other crust ingredients. The ingredients for the crust occupy positions 0 through 3 in
the ingredients property, and the filling ingredients begin at position 4. The following
statement inserts the forgotten ingredient at position 4.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 383
Using DQL
The server inserts the requested value and renumbers all other values from position 4 on.
The filling ingredients now begin at position 5.
Inserting values into a repeating property never overwrites a current value. Any
value currently at the specified insertion point and any following values are always
renumbered.
If you do not specify an insertion point, the server automatically inserts the new value in
the first position (property_name[0]).
You can identify the value you want to insert either as literal value or by using a
subquery. If you use a subquery, it can return only one value. If it returns multiple
values, the INSERT statement fails with an error.
Appending values
When you append values, the server automatically adds the new value to the end of
the list of values in the property. You do not have to specify an index value when
you append. To illustrate, suppose the authors want to add another ingredient to the
Espresso Cheesecake recipe: strawberries to be used as a garnish. To append this
ingredient, they use the following statement:
UPDATE "recipe" OBJECT
APPEND "ingredients" = '1 pint strawberries'
WHERE "title" = 'Espresso Cheesecake'
You can identify the appended value as a literal value or by using a subquery. For
example, perhaps your company is reorganizing and employees currently working for
Mr. Rico are being moved to a group called frontline. The following statement uses a
subquery to find those employees and append them to the list of users in the frontline
group:
UPDATE "dm_group" OBJECTS
APPEND "users_names"=(SELECT "user_name"
FROM "dm_user","employees" e
WHERE e."manager"='rico' AND "r_is_group"=F)
WHERE "group_name" = 'frontline'
When using a subquery, you can specify the maximum number of values that you want
to append. The syntax in the update clause is:
APPEND n property_name = subquery
384 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Using DQL
Updating values
Note that the index value for cream cheese is [2]. This is because index values are
counted from zero, so the first two ingredients (eggs and sugar) have index values of
zero and one ([0] and [1]), respectively.
Deleting values
To delete a value in a repeating property, use the remove option as the update clause and
specify the index value associated with the value. To illustrate, the following example
removes the fifth ingredient in a list of ingredients for brownies:
UPDATE "recipe" OBJECT
REMOVE ingredients[4]
WHERE "object_name" = 'Mandarin Brownies'
If you do not specify which value to remove, the system automatically removes the
first ([0]) value.
To force index correspondence, the predicates must be ANDed inside the parentheses.
Using the OR operator to link the predicates inside the parentheses increases the query’s
EMC Documentum Content Server Version 6.5 DQL Reference Manual 385
Using DQL
performance but does not force index correspondence. The query returns any object that
contains one of the ORed values.
To illustrate, assume that the keywords untried, tested, approved, and rejected are
assigned to recipes in various stages of acceptance and that these keywords are always
placed in the first position in the keywords list, to correspond to the implicit version
label (the numeric label) associated with the recipe. The following statement finds only
original recipes (version 1.0) that were rejected by the testers:
SELECT "r_object_id", "object_name" FROM "recipe"
WHERE ANY ("r_version_label" = '1.0'
AND "keywords" = 'rejected')
In the above example, for the recipes returned, r_version_label[0] = 1.0 and keywords[0]
= rejected.
You can’t specify which position is searched when you force index correspondence. You
can only specify that the values be found in the same position. In the above example,
it was easy to know that the values are in the first position for all pairs because the
implicit version label is always stored in the first position. However, for other repeating
properties this will not be true. For example, look at the following statement:
UPDATE "recipe" OBJECTS
SET "subject" = 'lowfat meals'
WHERE ANY ("ingredients" IN ('skim milk','margarine')
AND "keywords" = 'fat free')
The statement updates the subject property for any recipe for which skim milk and
fat free or margarine and fat free occupy the same respective positions within their
individual properties. For one recipe, the positions might be the fourth: ingredients[3]
= margarine and keywords[3] = fat free. For another, the values might be found in the
seventh position: ingredients[6] = skim milk and keywords[6] = fat free. In all instances,
the values are at the same index position within their properties.
It is possible to combine both forms of the syntax. For example:
SELECT "r_object_id", "title" FROM "recipe"
WHERE ANY "ingredients" IN ('cream cheese','chocolate')
AND ANY("authors" = 'daphne' AND "keywords" IN ('cheesecake','brownies','mousse'))
This statement returns all recipes that have cream cheese or chocolate as an ingredient
and also have the author daphne paired with the keyword cheesecake, brownies, or
mousse.
386 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Using DQL
and MS SQL Server, and performance degrades in direct proportion to the number of
SysObjects in your repository.
To improve performance, here are some suggested alternative ways to formulate queries:
Instead of:
SELECT "r_object_id" FROM "dm_sysobject"
WHERE ANY "authors" = 'a' OR ANY authors = 'b'
Use:
SELECT "r_object_id" FROM "dm_sysobject"
WHERE ANY ("authors" = 'a' OR "authors" = 'b')
Instead of:
SELECT "r_object_id" FROM "dm_sysobject"
WHERE FOLDER ('/Temp) OR FOLDER ('/System')
Use:
SELECT "r_object_id" FROM "dm_sysobject"
WHERE FOLDER ('/Temp', '/System')
EMC Documentum Content Server Version 6.5 DQL Reference Manual 387
Using DQL
virtual document to pull out a specific part of the document for work. The NODE option
of the IN ASSEMBLY clause implements this feature.
388 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Using DQL
Security controls
Access to a registered table is controlled by the object‑level permissions and table permits
defined for the table’s dm_registered object. The object‑level permissions must give
you at least Browse access to the dm_registered object and the table permits must give
you permission for the operation that you want to perform. For example, if you want
to update a table, the table permits must grant you DM_TABLE_UPDATE permission.
Table permits are defined for three user levels: owner, group, and world. (For complete
information about table permits and Documentum security, refer to the Content Server
Administration Guide.)
Additionally, the user account under which Content Server is running must have the
appropriate RDBMS permission to perform the requested operation on the specified
table. (The actual name of this permission depends on your RDBMS.) For example, if
you want to update the table, the server account must have permission in the RDBMS
to update the table.
All three of these conditions must be met to gain access to a registered table. Even if a
user has permission to access the underlying table through the RDBMS, the user will not
have access through DQL unless the object‑level permissions and table permits on the
dm_registered object permit access. Similarly, a user might have the correct object‑level
permissions and table permits, but if the server’s user account in the RDBMS does not
have permission, then access is denied.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 389
Using DQL
The REGISTER statement automatically sets the object‑level permissions for a table’s
dm_registered object to default values. The statement also sets the default table permit to
SELECT for the owner (group and world have no default table permit).
You can change the object‑level permissions and table permits by setting the appropriate
properties directly. The Content Server Administration Guide provides more information
about these properties.
Caching queries
Some queries return the same results every time you run the query. For example, a
payroll application may ask for the names and social security numbers of the employees
in the company. Although the query results may change over a long period of time,
they may not change from week to week. Rather than incur the performance cost of
rerunning the query that returns the users and social security numbers each time the
payroll application executes, you can cache the query results on the client host. For
information about persistent caching, refer to Content Server Fundamentals.
390 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Using DQL
The Superuser user privilege bypasses all Documentum security checks. However,
Content Server must still have the SELECT privilege in the RDBMS for a superuser to
query registered tables.
You must have Write permission to update an object with the UPDATE...OBJECT
statement. You must have Delete permission for an object to delete it using the
DELETE...OBJECT statement.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 391
Using DQL
392 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Appendix A
Using DQL Hints
This appendix describes how DQL hints are implemented and how to use them in your queries.
• General guidelines for all, page 393
• SQL_DEF_RESULT_SET N, page 394
• FORCE_ORDER, page 395
• RETURN_TOP N, page 396
• OPTIMIZE_TOP N, page 398
• FETCH_ALL_RESULTS N, page 399
• OPTIMIZATION_LEVEL level_1 level_2, page 399
• UNCOMMITTED_READ , page 400
• IN and EXISTS, page 400
• ROW_BASED, page 401
• FTDQL and NOFTDQL, page 403
• TRY_FTDQL_FIRST, page 403
• FT_CONTAIN_FRAGMENT, page 403
• GROUP_LIST_LIMIT N, page 404
• HIDE_SHARED_PARENT, page 404
• Including multiple hints limiting rows returned, page 405
• Passthrough hints, page 405
EMC Documentum Content Server Version 6.5 DQL Reference Manual 393
Using DQL Hints
You can use any of the hints except ROW_BASED in an FTDQL query. The ROW_BASED
hint may not be included in an FTDQL query.
Additionally, you may not use the ROW_BASED hint in query that includes a lightweight
object type in the FROM clause.
SQL_DEF_RESULT_SET N
The SQL_DEF_RESULT_SET N is most useful on a SQL Server database. On a SQL
Server database, including SQL_DEF_RESULT_SET in a query causes the RDBMS to use
default result sets to return the query results rather than a cursor. Using default result
sets is the way that Microsoft recommends accessing a SQL Server database.
On other databases, it only controls how many rows are returned, and is identical to
the RETURN_TOP hint.
On SQL Server, using default result sets allows the RDBMS server to perform fewer
logical read operations. Table 97, page 394 shows some test examples:
Table 97. Comparison of logical reads with and without default result sets
394 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Using DQL Hints
limitation, Content Server internally buffers the results of queries that are executed
using default result sets.)
To determine whether using SQL_DEF_RESULT_SETS is useful for a query, run the
query with and without the hint and trace the results using the SQL Server Profiler.
Setting N to 0 causes all results to be returned. Setting N to an integer value limits the
number of rows returned to that value.
Using SQL_DEF_RESULT_SETS is recommended if:
• You are running on a SQL Server database.
• The query returns limited result sets.
• The query is a commonly executed query.
• Tests show that using the hint greatly improves query performance.
FORCE_ORDER
The FORCE_ORDER hint controls the order in which the tables referenced in the query’s
FROM clause are joined. The tables may be RDBMS tables or object type tables.
Oracle and SQL Server implement this hint at the statement level. For example, suppose
you issue the following DQL:
SELECT object_name
FROM DM_SYSOBJECT ENABLE(FORCE_ORDER)
Sybase implements the hint at the session level. If you include the hint, Content Server
uses the ct_options function to set the CS_OPT_FORCEPLAN variable to true and unsets
it after the query executes.
Using FORCE_ORDER may not ensure that you obtain a particular join order. When
you examine the SQL query generated by a DQL query, you may find there are more
tables in the FROM clause than are present in the DQL query. This is because Content
Server often uses views to generate the SQL for many DQL queries and may also add
ACL tables to the queries for security checks.
If you are considering using this hint, run the query without the hint and obtain the
generated SQL statement and the execution plan. If the join order in the generated query
appears incorrect and you believe that joining the tables in the order they appear in
EMC Documentum Content Server Version 6.5 DQL Reference Manual 395
Using DQL Hints
the DQL query will result in better performance, run the query with FORCE_ORDER.
Compare the results to the query execution results without the hint.
If you use this hint, it is recommended that you retest the query with and without the
hint occasionally to ensure that the hint is still useful. Database changes can make the
plan chosen by the hint incorrect.
RETURN_TOP N
The RETURN_TOP N hint limits the number of rows returned by a query.
Databasespecific implementations
The following sections describe how RETURN_TOP is handled for individual databases.
SQL Server
On SQL Server, using this hint results in fewer database rows being touched by a query.
The internal behavior of query on SQL Server is:
1. The query executes on the database (touching whatever tables are required) and
generates a list of keys or lookup IDs inside the tempdb.
2. Each time a row is fetched from the cursor, the lookup ID accesses the actual table to
return the full result set with all columns.
When you include the RETURN_TOP hint, the second step is executed only as many
times as the hint directs. For example, if the hint is RETURN_TOP 20, then only 20 rows
are returned and the table is accessed only 20 times.
Including RETURN_TOP adds the SQL Server TOP hint to the generated SQL statement.
For example, suppose you issue the following DQL statement:
SELECT user_name FROM dm_user ENABLE (RETURN_TOP 3)
396 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Using DQL Hints
If the query includes a subquery, the hint is not applied to the subquery.
DB2
On a DB2 database, including RETURN_TOP adds the FETCH FIRST N ROWS ONLY
hint to the generated SQL statement. For example, the following DQL query
SELECT user_name FROM dm_user ENABLE (RETURN_TOP 3)
If you include RETURN_TOP in a query running against Oracle or Sybase, the returned
results are not limited at the database level, but by Content Server itself. Consequently,
using RETURN_TOP on Oracle or Sybase results in no database performance gains,
but may reduce network traffic.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 397
Using DQL Hints
Recommended use
Use RETURN_TOP when:
• Only a particular number of rows is needed from the database.
• The application accepts ad hoc queries from users and you want to limit the potential
damage an unbounded query might cause.
Using RETURN_TOP if the query sorts the results or includes the DISTINCT keyword
reduces the efficiency of the hint.
OPTIMIZE_TOP N
The OPTIMIZE_TOP N hint directs the database server to return the first N rows
returned by a query quickly. The remaining rows are returned at the normal speed.
On SQL Server and DB2, you can include an integer value (as N) to define how many
rows you want returned quickly. On Oracle, the number is ignored. The OPTIMIZE_TOP
hint is not available on Sybase.
For example, suppose you issue the following DQL query:
SELECT r_object_id FROM dm_sysobject
ENABLE (OPTIMIZE_TOP 4)
398 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Using DQL Hints
FETCH_ALL_RESULTS N
The FETCH_ALL_RESULTS N hint fetches all the results from the database immediately
and closes the cursor. The hint does not affect the execution plan, but may free up
database resources more quickly.
To fetch all the results, set N to 0.
On SQL Server, it is recommended that you use SQL_DEF_RESULT_SETS instead of the
FETCH_ALL_RESULTS hint. SQL_DEF_RESULTS_SETS provides the same benefits and
is the recommended way to access SQL Server databases.
Use FETCH_ALL_RESULTS if you want to reduce the resources used by the database
server by quickly closing cursors. On SQL Server, try FETCH_ALL_RESULTS if using
SQL_DEF_RESULT_SETS did not improve query performance.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 399
Using DQL Hints
UNCOMMITTED_READ
Use the UNCOMMITTED_READ hint in read only queries, to ensure that the query
returns quickly even if another session is holding locks on the tables queried by the
read only query.
This hint is useful only on SQL Server, DB2, and Sybase databases.
IN and EXISTS
IN and EXISTS are mutually exclusive hints that you can use in a standard WHERE
clause, in a repeating property predicate that contains a subquery. These hints may not
be used in a WHERE clause in an FTDQL query.
The syntax is:
WHERE ANY [IN|EXISTS] property_name (subquery)
For example:
SELECT "r_object_id" FROM "dm_document"
WHERE ANY IN "authors" IN
(SELECT "user_name" FROM "dm_user")
If you do not include either IN or EXISTS explicitly, when Content Server translates the
query, it includes one or the other automatically. Which hint Content Server chooses to
include is determined by the indexes present in the repository, the properties referenced
in the query, and other factors.
The queries generated by each option are different and perform differently when
executed. For example, here is the generated SQL statement for the query in the previous
example:
select all dm_sysobject.r_object_id
from dm_sysobject_sp dm_sysobject
where (dm_sysobject.r_object_id in
(select r_object_id from dm_sysobject_r
where authors in
(select all dm_user.user_name
from dm_user_sp dm_user)))
and (dm_sysobject.i_has_folder=1 and
dm_sysobject.i_is_deleted=0)
If the DQL query used the EXISTS hint, the generated SQL statement would look like this:
select all dm_sysobject.r_object_id
from dm_sysobject_sp dm_sysobject
where (exists (select r_object_id
from dm_sysobject_r
where dm_sysobject.r_object_id = r_object_id
and authors in
400 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Using DQL Hints
If you feel that a query that references a repeating property predicate that uses a
subquery is performing badly, run the query and examine the generated SQL statement
to determine which hint Content Server is adding to the generated SQL and note the
performance time. Then, rewrite the DQL query to include the hint that the server isn’t
choosing. For example, if the server is choosing to add the EXISTS hint to the generated
SQL statement, rewrite the DQL query to include the IN hint. Then, rerun the query to
determine if the performance improves.
ROW_BASED
The ROW_BASED hint changes both the way query results are returned and the syntax
rules for the query itself.
This hint may not be used in FTDQL queries or queries that reference a lightweight
object type in the FROM clause.
That query returns the authors values as a list of authors in one query result object for
each returned object. Table 98, page 402, shows how the results are returned. Each
row in the table represents one query result object and each column is one property in
the query result objects.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 401
Using DQL Hints
There is one query result object (one row) for each object returned by the query. Now,
add the ROW_BASED hint to the query:
SELECT "r_object_id","title","authors" FROM "dm_document"
WHERE "subject"='new_book_proposal'
ENABLE(ROW_BASED)
Table 99, page 402, illustrates how Content Server returns the results for that query.
There is one query result object (one row) for each repeating property value returned.
The returned repeating property values for each object are not aggregated into one
result object.
402 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Using DQL Hints
TRY_FTDQL_FIRST
The TRY_FTDQL_FIRST hint is useful if a query is timing out or exceeds a resource
limit in the full‑text engine. When it is included in a query, the query is first executed
as an FTDQL query, and if a timeout or resource exceeded error occurs, the query is
then retried as a standard query.
FT_CONTAIN_FRAGMENT
The FT_CONTAIN_FRAGMENT hint expands the range of matches for full‑text searches
that include a search clause of the form LIKE ’%string%’ clause, such as:
subject LIKE '%work%'
When the query includes the DQL hint FT_CONTAIN_FRAGMENT, this clause returns
all objects whose subject contains “work” in any position, including where the string
appears as part of a larger string. For example, it returns any object whose subject
contains “networking” or “workers”. However, if the query does not include this
hint (the default behavior), a full‑text search that uses this clause returns only those
objects whose subject contains “work” (or a variant form of the word if grammatical
normalization is enabled) as a separate word. Limiting the results to separate word
matches improves the performance of the query. Beginning with release 6.0, the default
behavior was changed. In previous releases, the default was to return objects as though
FT_CONTAIN_FRAGMENT was specified.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 403
Using DQL Hints
GROUP_LIST_LIMIT N
The GROUP_LIST_LIMIT hint may improve query performance when a user is a
member of a large number of groups. For example, suppose a user who is a member of
500 groups executes the following query:
SELECT r_object_id FROM dm_document WHERE object_name LIKE '%dm%'
When this query is translated to SQL, a subquery is needed to perform the ACL checking
because the default group list limit for queries is 250. The performance is slower due
to the need for the subquery. You can use the DQL hint to override the default value
for group list limit. For example:
SELECT r_object_id FROM dm_document
WHERE object_name LIKE '%dm%'
ENABLE(GROUP_LIST_LIMIT 600)
Setting this hint overrides the default value and the DM_GROUP_LIST_LIMIT
environment variable, if that is set.
HIDE_SHARED_PARENT
HIDE_SHARED_PARENT directs Content Server to return only the rows in the query
results that are not shared parents. In order to accomplish this, the server will add two
additional attributes, r_object_id and r_object_type to the SQL statement select list, if
not already there (only applies to dm_sysobject or any of its subtypes). The server will
run the SQL query against the database and then for each qualified row it will get the
value of r_object_type, fetch the type object and check to see if it is a shareable type.
For non‑shareable types it will just return the row, but for shareable types it will do
the following:
• Look in the sysobject cache for the r_object_id object, or issue an SQL statement if the
object is not in the cache, and examine the i_sharing_type.
• Return the row if i_sharing_type is empty, or skip the row if it is not empty
(indicating that the row is from a shared parent).
The results of a query that uses the HIDE_SHARED_PARENT DQL hint will not contain
any shared parents.
404 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Using DQL Hints
Content Server returns 5 rows for the query because the RETURN_TOP hint is the most
constraining hint in the list.
On SQL Server, if the list includes SQL_DEF_RESULT_SET, the query is always executed
using default result sets regardless of where the hint falls in the list of hints. For example,
suppose you issue the following statement:
SELECT object_name FROM dm_document ENABLE
(SQL_DEF_RESULT_SET 10, RETURN_TOP 5)
The query executes using default result sets but returns only 5 rows.
Passthrough hints
Passthrough hints are hints that are passed to the RDBMS server. They are not handled
by Content Server.
SQL Server and Sybase have two kinds of hints: those that apply to individual tables
and those that apply globally, to the entire statement. To accommodate this, you can
include passthrough hints in either a SELECT statement’s source list or at the end of the
statement. The hints you include in the source list must be table‑specific hints. The hints
you include at the end of the statement must be global hints. For example, the following
statement includes passthrough hints for Sybase at the table level and the statement level:
SELECT "r_object_id" FROM "dm_document"
WITH (SYBASE('NOHOLDLOCK'))
WHERE "object_name"='test' ENABLE (FORCE_PLAN)
For DB2 and Oracle, include passthrough hints only at the end of the SELECT statement.
Syntax
To include a passthrough hint, you must identify the database for which the hint is valid.
To identify the target database, keywords precede the hints. The valid keywords are:
ORACLE, SQL_SERVER, SYBASE, and DB2. For example, the following statement
includes passthrough hints for SQL Server:
EMC Documentum Content Server Version 6.5 DQL Reference Manual 405
Using DQL Hints
For portability, you can include passthrough hints for multiple databases in one
statement. The entire list of hints must be enclosed in parentheses. The syntax is:
(database_hint_list {,database_hint_list})
db_keyword is one of the valid keywords identifying a database. hint is any hint valid
on the specified database.
For example:
SELECT object_name FROM dm_document doc dm_user u
WHERE doc.r_creator_name = u.user_name
ENABLE (ORACLE('RULE','PARALLEL'),
SYBASE('AT ISOLATION READ UNCOMMITTED'),
SQL_SERVER('LOOP JOIN','FAST 1')
406 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Appendix B
Implementing Java Evaluation of
Docbasic Expressions
This appendix describes how to implement Java evaluation of Docbasic expressions defined for check
constraints or value assistance in the data dictionarẏ. The appendix includes the following topics:
• Docbasic expression handling by Content Server, page 407
• How DFC Version 6 and later handles the expressions, page 408
• Migrating the expressions for pre‑6 clients, page 408
• Disabling or re‑enabling Java evaluation, page 413
• Docbasic expression components support, page 413
EMC Documentum Content Server Version 6.5 DQL Reference Manual 407
Implementing Java Evaluation of Docbasic Expressions
For each object type that has Docbasic expressions defined as check constraints or in
conditional value assistance for one or more properties, Content Server creates one
expr code object and a number of func expr objects. Each func expr objects records one
Docbasic expression. The expr code object contains the compiled code and pcode that
implements the expressions recorded in the func expr objects. The routine_id property in
the func expr objects points to the expr code object.
408 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Implementing Java Evaluation of Docbasic Expressions
Manually migrating a Docbasic expression for DFC Version 6 and later clients is not
useful. DFC Version 6 (and later) automatically generates Java code at runtime for
Docbasic expressions and will ignore the results of manual migration.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 409
Implementing Java Evaluation of Docbasic Expressions
If additional Docbasic expressions are added later for an object type, the migration
method updates the validation module and jar objects.
Migrating expressions to Java is currently a manual operation. EMC Documentum
provides two migration methods, described in Migrating Docbasic expressions to Java,
page 410. You can migrate expressions already defined in the data dictionary. You can
migrate new expressions after the expressions are defined using an ALTER TYPE or
CREATE TYPE statement.
410 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Implementing Java Evaluation of Docbasic Expressions
• dmc_MigrateDbExprsToJavaForType
Use this method if you want to migrate expressions added to a single object type (or
the type’s properties) using an ALTER TYPE or if you want to migrate expressions
defined while creating a new type using CREATE TYPE.
Arguments for both methods let you select which Docbasic expressions to migrate to
Java code. You can choose to compile only new Docbasic expressions, or those that failed
compilation previously, or all expressions within the scope of the method.
The methods are executed using either a DFC script or using a DO_METHOD
administration method. The DO_METHOD syntax is:
dmAPIGet("apply,session,NULL,DO_METHOD,METHOD,S,migration_method_
name,SAVE_RESULTS,B,T,ARGUMENTS,S,argument_list
Argument Description
‑docbase docbase_name Name of the repository that contains the expressions you
want to migrate. This must a 5.3 (or later) repository.
‑user user_name Name of a user who has at least Sysadmin privileges in the
specified repository.
‑ticket login_ticket String containing a login ticket.
Note: For information about login tickets and generating
those tickets, refer to the Content Server Administration
Guide.
‑select selection_choice Identifies which expressions you wish to migrate.
selection_choice is one of:
• new_only, includes only new expressions, that is, those
for which migration has not been previously attempted
• new_and_failed, includes all new expressions and
those for which migration previously failed
• new_and_disabled, includes all new expressions and
those that do not have a corresponding enabled Java
version
• all, includes all expressionsAny existing Java code
is replaced if currently migrated expressions are
recompiled.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 411
Implementing Java Evaluation of Docbasic Expressions
Argument Description
412 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Implementing Java Evaluation of Docbasic Expressions
Table 101, page 413, lists the arguments for dmc_SetJavaExprEnabled. All arguments for
this method are required. Use a space to separate arguments in argument_list.
Argument Description
‑docbase repository_ Name of the repository that contains the Java expression
name implementation you want to disable or re‑enable.
‑user user_name Name of the user performing the operation. Use the user’s
login name. The user must have at least Sysadmin privileges
in the repository.
‑ticket login_ticket A string containing a login ticket generated for the specified
user.
‑func_expr_id Object ID of the dm_func_expr object representing the
func_expr_obj_id Docbasic expression
‑enable value Set this to true to enable the Java evaluation of the Docbasic
expression identified in the ‑func_expr_id argument. Or, set
it to false, to disable Java evaluation of that expression.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 413
Implementing Java Evaluation of Docbasic Expressions
Operators
Table 102, page 414, lists the Docbasic operators for which Java evaluation is supported.
414 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Implementing Java Evaluation of Docbasic Expressions
Function Description
abs(expr) Returns the absolute value of expr
Asc(text$) Returns the integer containing the numeric code for the
first character of the text$ (0–255)
AscB or AscW Returns the byte or wide‑character equivalents of Asc
Atn(number) Returns the inverse tangent of number
CBool(expr) Converts the expr to a Boolean
CDate(expr) or Converts the expr to a Date
CVDate(expr)
Note: If expr is a string, it is expected that the date is in
canonical form unless a specific date format string was
passed to the validation method.
CDbl(expr) Converts expr to a Double
Choose(index, expr1, Returns the expression whose position in the list of expr
expr2,...exprN) arguments matches the value specified index. If none is
found, returns null.
Chr(code) or Chr$(code) Returns the character whose value is code
EMC Documentum Content Server Version 6.5 DQL Reference Manual 415
Implementing Java Evaluation of Docbasic Expressions
Function Description
Date Returns the current date as a Date Variant
Date$ Returns the current date as a String
416 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Implementing Java Evaluation of Docbasic Expressions
Function Description
IsNumeric(expr) Returns true if expr can be converted to a number;
otherwise, returns false
Item$(text$, first, last Returns all items between first and last within the
[,delimiters$]) specified formatted text list
ItemCount(text$ Returns an integer containing the number of items in the
[,delimiters$]) specified delimited list
LBound(arrayVar Returns an integer containing the lower bound of the
[,dimension]) specified dimension of the specified array variable
LCase[$](text) Returns the lowercase equivalent of text
Left[$](text, nChars) or Returns the leftmost nChars characters (Left and Left$)
LeftB[$](text, nChars) or bytes (LeftB and LeftB$) from text
Note: Use LeftB with caution. Multibyte characters can
be split in the middle, resulting in the construction of
illegal strings.
Len(expr or lenB(expr) Returns the number of characters in expr or the number
of bytes required to store expr
Line$(text$, first [,last]) Returns a string containing a single line or a group of
lines between first and last
LineCount(text$) Returns an integer representing the number of lines in
text$
Log(number) Returns a double representing the natural logarithm of
number
LTrim[$](text) Returns text with the leading spaces removed
Mid[$](text, start [,length]) Returns a substring of the specified text, beginning with
or MidB[$](text, start start for length number of characters or bytes
[,length])
Note: Use MidB with caution. Multibyte characters can
be split in the middle, resulting in the construction of
illegal strings.
Minute(time) Returns the minute of the day encoded in the time
argument
Month(date) Returns the month of the date
Now Returns a date variant representing the current date and
time
Oct(number) or Returns a string containing the octal equivalent of the
Oct$(number) specified number
EMC Documentum Content Server Version 6.5 DQL Reference Manual 417
Implementing Java Evaluation of Docbasic Expressions
Function Description
Random(min,max) Returns a long value greater than or equal to min and less
than or equal to max
Right[$](text,nChars) or Returns the rightmost nChars characters or bytes from
RightB[$](text,nChars) the text.
418 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Implementing Java Evaluation of Docbasic Expressions
Function Description
TimeValue(time_string$) Returns a date variant representing the time contained
in time_string$
EMC Documentum Content Server Version 6.5 DQL Reference Manual 419
Implementing Java Evaluation of Docbasic Expressions
420 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Implementing Java Evaluation of Docbasic Expressions
Supported constants
Table 105, page 421, lists the Docbasic constants that are supported for Java evaluation.
Constant Description
ebBoolean Integer representing Boolean datatype
ebCurrency Integer representing Currency type
ebDataObject Integer representing a data object
ebDate Integer representing a Date type
ebEmpty Integer representing an Empty variant
ebError Integer representing an Error variant
ebInteger Integer representing the Integer type
ebLong Integer representing the Long type
ebNull Integer representing Null variant type
ebObject Integer representing the OLE automation object type
ebSingle Integer representing the Single type
ebString Integer representing the String type
ebVariant Integer representing the Variant type
Empty Constant representing an initialized variant
False Boolean constant
Nothing Null Object reference
Null Explicit Docbasic value distinguishable from Empty or
Nothing. (Refer to the Docbasic documentation for complete
information.)
Pi Value of Pi
True Boolean constant
Unsupported constants
Table 106, page 422, lists the constants that are not supported for Java evaluation.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 421
Implementing Java Evaluation of Docbasic Expressions
Constant names
ebCancel ebNone ebSystem
ebCritical ebNormal ebSystemModal
ebHidden ebReadOnly ebVolume
Implicit objects
The implicit objects provided by Docbasic, such as the implicit object named Basic, are
not supported for use in expressions that are compiled for Java evaluation.
422 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Appendix C
DQL Quick Reference
This appendix contains only the formal syntax descriptions of the DQL statements and the DQL
reserved words. For a full description of each statement, refer to Chapter 2, DQL Statements.
Abort
ABORT [TRAN[SACTION]]
Alter Aspect
ALTER ASPECT aspect_name ADD
[(property_def {,property_def})]
[[NO]OPTIMIZEFETCH]
ALTER ASPECT aspect_name ADD_FTINDEX ALL
ALTER ASPECT aspect_name DROP_FTINDEX ALL
ALTER ASPECT aspect_name ADD_FTINDEX property_list
ALTER ASPECT aspect_name DROP_FTINDEX property_list
Alter Group
ALTER GROUP group_name ADD members
EMC Documentum Content Server Version 6.5 DQL Reference Manual 423
DQL Quick Reference
Alter Type
ALTER TYPE type_name
[FOR POLICY policy_id STATE state_name]
type_modifier_list [PUBLISH]
ALTER TYPE type_name
[FOR POLICY policy_id STATE state_name]
MODIFY (property_modifier_clause)[PUBLISH]
ALTER TYPE type_name
ADD property_def {,property_def}[PUBLISH]
ALTER TYPE type_name
DROP property_name {,property_name}[PUBLISH]
ALTER TYPE type_name ALLOW ASPECTS
ALTER TYPE type_name
ADD|SET|REMOVE DEFAULT ASPECTS aspect_list
ALTER TYPE type_name ENABLE PARTITION
ALTER TYPE type_name SHAREABLE [PUBLISH]
Begin Tran
BEGIN TRAN[SACTION]
Change...Object
CHANGE current_type OBJECT[S] TO new_type[update_list]
[IN ASSEMBLY document_id [VERSION version_label] [DESCEND]]
[SEARCH fulltext search condition]
[WHERE qualification]
Commit
COMMIT [TRAN[SACTION]]
424 EMC Documentum Content Server Version 6.5 DQL Reference Manual
DQL Quick Reference
Create Group
CREATE GROUP group_name [WITH] [ADDRESS mail_address]
[MEMBERS member_list]
Create...Object
CREATE type_name OBJECT update_list
[,SETFILE filepath WITH CONTENT_FORMAT=format_name]
{,SETFILE filepath WITH PAGE_NO=page_number}
Create Type
CREATE TYPE type_name [(property_def {,property_def})]
[WITH] SUPERTYPE parent_type
[type_modifier_list] [PUBLISH]
Delete
DELETE FROM table_name WHERE qualification
EMC Documentum Content Server Version 6.5 DQL Reference Manual 425
DQL Quick Reference
Delete...Object
DELETE [PUBLIC]type_name[(ALL)]
[correlation_variable]
[WITHIN PARTITION (partition_id {,partition_id})
OBJECT[S]
[IN ASSEMBLY document_id [VERSION version_label]
[NODE component_id][DESCEND]]
[SEARCH fulltext search condition]
[WHERE qualification]
Drop Group
DROP GROUP group_name
Drop Type
DROP TYPE type_name
Execute
EXECUTE admin_method_name [[FOR] object_id]
[WITH argument = value {,argument = value}]
Grant
GRANT privilege {,privilege} TO users
Insert
INSERT INTO table_name [(column_name {,column_name})]
VALUES (value {,value}) | dql_subselect
Register
REGISTER TABLE [owner_name.]table_name (column_def {,column_def})
426 EMC Documentum Content Server Version 6.5 DQL Reference Manual
DQL Quick Reference
Revoke
REVOKE privilege {,privilege} FROM users
Select
The syntax for a standard query is:
SELECT [FOR base_permit_level][ALL|DISTINCT] value [AS
name] {,value [AS name]}
FROM [PUBLIC] source_list
[WITHIN PARTITION (partition_id{,partition_id})
| IN DOCUMENT clause
| IN ASSEMBLY clause]
[SEARCH [FIRST|LAST]fulltext_search_condition
[IN FTINDEX index_name{,index_name}]
[WHERE qualification]
[GROUP BY value_list]
[HAVING qualification]
[UNION dql_subselect]
[ORDER BY value_list]
[ENABLE (hint_list)]
Table 107, page 428, lists the constraints imposed on the clauses in an FTDQL query.
EMC Documentum Content Server Version 6.5 DQL Reference Manual 427
DQL Quick Reference
Applicable to Rule
FTDQL queries in general An FTDQL query must contain one of the following:
• SEARCH clause
• One of: SCORE, SUMMARY, or TEXT as a selected
value
• ENABLE(FTDQL)
428 EMC Documentum Content Server Version 6.5 DQL Reference Manual
DQL Quick Reference
Applicable to Rule
WHERE clause A WHERE clause in an FTDQL query is subject to the
following rules:
• Any repeating properties referenced in the clause
must be of type string or ID.
• Only the DQL UPPER and LOWER functions are
allowed. The functions SUBSTR, MFILE_URL, and
all aggregate functions are not acceptable.
• The following predicates are not allowed:
— BETWEEN
— NOT LIKE
— NOT FOLDER
— [NOT] CABINET
— ONLY
— TYPE
• The IN and EXISTS keywords are not allowed.
• Any valid form of the FOLDER predicate (except
NOT FOLDER) may be used. The DESCEND
option is also allowed.
• The following rules apply to the LIKE predicate:
— The LIKE predicate may be used with pattern
matching characters.
— The LIKE predicate may not be used with an
escape clause.
• The keywords TODAY, YESTERDAY, TOMORROW
may not be used in the DATE function.
• The following rules apply to all expressions in the
WHERE clause:
— Expressions may not contain the ISREPLICA or
USER keywords.
— Expressions may use any comparison operator.
— Expressions may use an arithmetic operator,
but they may not be used to form a compound
expression.
— Expressions that compare one property to another
are not allowed. For example, subject=title is
invalid.
— Expressions in the following format are not
allowed:
EMC Documentum Content Server Version 6.5 DQL Reference Manual 429
DQL Quick Reference
Applicable to Rule
Unregister
UNREGISTER [TABLE] [owner_name.]table_name
430 EMC Documentum Content Server Version 6.5 DQL Reference Manual
DQL Quick Reference
Update
UPDATE table_name SET column_assignments
WHERE qualification
Update...Object
UPDATE [PUBLIC]type_name [(ALL)][correlation_var]
[WITHIN PARTITION partition_id {,partition_id}]
OBJECT[S] update_list
[,SETFILE filepath WITH CONTENT_FORMAT=format_name]
{,SETFILE filepath WITH PAGE_NO=page_number}
[IN ASSEMBLY document_id [VERSION version_label]
[NODE component_id][DESCEND]]
[SEARCH fulltext search condition]
[WHERE qualification]
B
BAG BOOL BUSINESS
BEGIN BOOLEAN BY
BETWEEN BROWSE
EMC Documentum Content Server Version 6.5 DQL Reference Manual 431
DQL Quick Reference
D
DATE DELETED DISTINCT
DATEADD DEPENDENCY DM_SESSION_DD_
LOCALE
DATEDIFF DEPTH DOCBASIC
DATEFLOOR DESC DOCUMENT
DATETOSTRING DESCEND DOUBLE
DAY DISABLE DROP
DEFAULT DISALLOW DROP_FTINDEX
DELETE DISPLAY
E
ELSE ENFORCE EXEC
ELSEIF ESCAPE EXECUTE
ENABLE ESTIMATE EXISTS
F
FALSE FOR FT_OPTIMIZER
FIRST FOREIGN FULLTEXT
FLOAT FROM FUNCTION
FOLDER FTINDEX
G
GRANT GROUP
432 EMC Documentum Content Server Version 6.5 DQL Reference Manual
DQL Quick Reference
I
ID INT IS
IF INTEGER ISCURRENT
IN INTERNAL ISPUBLIC
INSERT INTO ISREPLICA
K
KEY
L
LANGUAGE LIGHTWEIGHT LIST
LAST LIKE LITE
LATEST LINK LOWER
M
MAPPING MEMBERS MONTH
MATERIALIZE MFILE_URL MOVE
MATERIALIZA‑ MHITS MSCORE
TION
MAX MIN
MCONTENTID MODIFY
N
NODE NOTE NULLINT
NODESORT NOW NULLSTRING
NONE NULL
NOT NULLDATE
O
OF ON ORDER
OBJECT ONLY OWNER
OBJECTS OR
EMC Documentum Content Server Version 6.5 DQL Reference Manual 433
DQL Quick Reference
Q
QRY QUALIFIABLE
R
RDBMS RELATE REPORT
READ REMOVE REQUEST
REFERENCES REPEATING REVOKE
REGISTER REPLACEIF
S
SCORE SMALLINT SUPERTYPE
SEARCH SOME SUPERUSER
SELECT STATE SUPPORT
SEPARATOR STORAGE SYNONYM
SERVER STRING SYSADMIN
SET SUBSTR SYSOBJ_ID
SETFILE SUBSTRING SYSTEM
SHAREABLE SUM
SHARES SUMMARY
T
TABLE TODAY TRUE
TAG TOMORROW TRUNCATE
TEXT TOPIC TYPE
TIME TRAN
TO TRANSACTION
434 EMC Documentum Content Server Version 6.5 DQL Reference Manual
DQL Quick Reference
V
VALUE VERSION VIOLATION
VALUES VERITY
W
WHERE WITHOUT WEEK
WITH WORLD
WITHIN WRITE
Y
YEAR YESTERDAY
EMC Documentum Content Server Version 6.5 DQL Reference Manual 435
DQL Quick Reference
436 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Appendix D
Document Query Language Examples
This appendix contains examples of Document Query Language (DQL) SELECT statements. The
examples begin with basic SELECT statements that retrieve information about objects using the
standard SELECT clauses, such as the WHERE clause and GROUP BY clause. Then the examples
show SELECT statements that make use of the DQL extensions to the statement, such as the ability
to use folder and virtual document containment information or registered tables to retrieve object
information.
This appendix does not attempt to describe the syntax of the DQL SELECT statement in detail. For a
complete description of SELECT, refer to Select, page 130.
Basic examples
This section presents basic SELECT statements. These examples demonstrate the use
of standard clauses such as the WHERE, GROUP BY, and HAVING clauses, as well as
how to use aggregate functions in a query. Some of these examples also demonstrate
how to query repeating properties.
The target_list identifies the value or values that you want to retrieve and type_name
identifies the types or registered tables from which you want to retrieve the requested
information.
The following example returns the user names of all the users in the repository:
SELECT "user_name" FROM "dm_user"
EMC Documentum Content Server Version 6.5 DQL Reference Manual 437
Document Query Language Examples
This next example returns the names of the users and their user privileges within a
repository:
SELECT "user_name","user_privileges" FROM "dm_user"
The next example retrieves all the types that do not have SysObject as their direct
supertype and have more than 15 properties:
SELECT "name" FROM "dm_type"
WHERE "super_name" != 'dm_sysobject'
AND "attr_count" > 15
To search a repeating property for a specific value, you use the ANY predicate in the
WHERE clause qualification unless you have included the ROW_BASED hint in the
query. When you use this predicate, or if the query includes ROW_BASED, if any of the
values in the specified repeating property meets the search criteria, the server returns
the object.
The following example searches the authors property to return any document that has
Jim as one of its authors:
SELECT "object_name" FROM "dm_document"
WHERE ANY "authors" = 'jim'
This next example searches the authors property and returns any document that has
either Jim or Kendall as an author:
SELECT "object_name" FROM "dm_document"
WHERE ANY "authors" IN ('jim', 'kendall')
The following example searches the keywords property and returns any document
that has a key word that begins with hap:
SELECT "object_name" FROM "dm_document"
438 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Document Query Language Examples
The following example returns the dates of the oldest and newest documents in the
repository:
SELECT MIN(DISTINCT "r_creation_date"),MAX(DISTINCT "r_creation_date")
FROM "dm_document"
This final example returns the average number of properties in Documentum types:
SELECT AVG(DISTINCT "attr_count") FROM "dm_type"
The GROUP BY clause provides a way to sort the returned objects on some property and
return an aggregate value for each sorted subgroup. The basic format of the SELECT
statement when you want to use the GROUP BY clause is:
SELECT property_name,aggregate_function FROM type_name
GROUP BY property_name
The property named in the target list must be the same as the property named in the
GROUP BY clause.
The following example retrieves the names of all document owners and for each,
provides a count of the number of documents that person owns:
SELECT "owner_name",count(*) FROM "dm_document"
GROUP BY "owner_name"
EMC Documentum Content Server Version 6.5 DQL Reference Manual 439
Document Query Language Examples
The HAVING clause is used in conjunction with the GROUP BY clause. It restricts which
groups are returned.
The following example returns the owner names and a count of their documents for
those owners who have more than 10 documents:
SELECT "owner_name",count(*) FROM "dm_document"
GROUP BY "owner_name"
HAVING COUNT(*) > 10
or
ORDER BY property [ASC|DESC] {,property [ASC|DESC]}
The num identifies one of the selected values by its position in the selected values list.
The property identifies one of the selected values by its name. ASC (ascending) and
DESC (descending) define the order of the sort and must be specified for each element
specified in the ORDER BY clause.
The following example returns the owner’s name, the object’s title, and its subject for
all SysObjects. The results are sorted by the owner’s name and, within each owner’s
name group, by title:
SELECT "owner_name","title","subject" FROM "dm_sysobject"
ORDER BY "owner_name", "title"
This next example returns the owner names and a count of their documents for those
owners who have more than 10 documents. The results are ordered by the count, in
descending order.
SELECT "owner_name",count(*) FROM "dm_document"
GROUP BY "owner_name" HAVING COUNT(*) < 10
ORDER BY 2 DESC
440 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Document Query Language Examples
the ROW_BASED hint, the FROM clause may include either or both object types and
registered tables. The values returned by the asterisk depend on what is specified in
the FROM clause and whether the ROW_BASED hint is included. For examples and
complete details, refer to The asterisk (*) as a selected value, page 148.
To use the object ID, you must use the ID function and the object ID. The following
examples illustrate the use of both folder paths and object IDs with the CABINET and
FOLDER predicates.
This example returns all the folders contained in Research folder, which is identified
by its object ID:
SELECT "object_name" FROM "dm_folder"
WHERE FOLDER (ID('0c00048400001599'))
The next example returns all the objects in the Marketing cabinet sorted by their type
and, within each type, ordered alphabetically. The Marketing cabinet is identified by
its folder path.
SELECT "object_name","r_object_type" FROM "dm_sysobject"
WHERE CABINET ('/Marketing')
ORDER BY "r_object_type","object_name"
This final example returns all the objects in the Correspondence folder in the Marketing
cabinet. Again, the objects are sorted by their type and ordered alphabetically within
each type group. A folder path is used to identify the correct folder.
SELECT "object_name","r_object_type" FROM "dm_sysobject"
WHERE FOLDER ('/Marketing/Correspondence')
ORDER BY "r_object_type","object_name"
The CABINET and FOLDER predicates have an optional keyword, DESCEND, that
directs the server to return not only those objects directly contained within a cabinet or
EMC Documentum Content Server Version 6.5 DQL Reference Manual 441
Document Query Language Examples
folder but to also return the contents of any folders contained in that folder or cabinet,
and so forth. (There is a limit of 25,000 contained folders within the specified folder
when you include DESCEND in the predicate.)
The following example returns the name, object ID, and type of all objects in the
Clippings folder, including the contents of any folders that are contained by the
Clippings folder. The Clippings folder resides in the Marketing cabinet.
SELECT "object_name","r_object_id","r_object_type"
FROM "dm_sysobject"
WHERE FOLDER ('/Marketing/Clippings', DESCEND)
This second example joins the registered table called ownership to the user‑defined type
called product_info to return the names of all the objects in Collateral folder, along with
the names of the managers who own the products described by the objects:
SELECT p."object_name", o."manager"
FROM "product_info" p, "ownership" o
WHERE p."product" = o."product" AND
FOLDER ('/Marketing/Collateral', DESCEND)
442 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Document Query Language Examples
This query returns Book1, Chapter 1, and Chapter 2. Book1 is included because a virtual
document is always considered to be a component of itself.
To return all the components of a virtual document, including those that are contained in
its components, you use the keyword DESCEND. For example:
SELECT "r_object_id" FROM "dm_sysobject"
IN DOCUMENT ID('Book1_object_id') DESCEND
The above example returns Book1, Chapter 1, Doc 1, Doc2, Chapter 2, and Doc 3, in
that order.
Note: The components of a virtual document are returned in a pre‑determined order
that you cannot override with an ORDER BY clause.
You can limit the search to a particular object type by specifying the type in the FROM
clause. For example, the following statement returns only the documents that make up
Book1 (Doc 1, Doc 2, and Doc 3):
SELECT "r_object_id" FROM "dm_document"
IN DOCUMENT ID('Book1_object_id')
EMC Documentum Content Server Version 6.5 DQL Reference Manual 443
Document Query Language Examples
444 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Index
EMC Documentum Content Server Version 6.5 DQL Reference Manual 445
Index
446 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Index
EMC Documentum Content Server Version 6.5 DQL Reference Manual 447
Index
448 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Index
EMC Documentum Content Server Version 6.5 DQL Reference Manual 449
Index
450 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Index
EMC Documentum Content Server Version 6.5 DQL Reference Manual 451
Index
452 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Index
EMC Documentum Content Server Version 6.5 DQL Reference Manual 453
Index
454 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Index
EMC Documentum Content Server Version 6.5 DQL Reference Manual 455
Index
456 EMC Documentum Content Server Version 6.5 DQL Reference Manual
Index
EMC Documentum Content Server Version 6.5 DQL Reference Manual 457
Index
458 EMC Documentum Content Server Version 6.5 DQL Reference Manual