This section provides detailed information on the following:
Numeric Input
Numeric values can be entered in either decimal or hexadecimal format. The default numeric base for data input to and output depends on the radix settings for input and output:
- When the radix for input is decimal, numeric input is interpreted as decimal numbers. For example, input of 45 is interpreted as the value 45.
- When the radix for input in hexadecimal, numeric input is interpreted as hexadecimal numbers. For example, input of 45 is interpreted as the value 69.
The initial radix setting is hexadecimal for input and output. For more information on setting the radix, see the documentation for the RADIX command.
The following special numeric formatting conventions can be used to force entered numeric values to be interpreted as decimal or hexadecimal, regardless of the radix setting:
- Decimal values can be signified by adding a 0i or i prefix, or by adding a decimal point suffix:
0i45 45. 0I45
- Hexadecimal values can be signified by adding a 0x or x prefix, or by adding an h suffix. Leading zeros are optional:
0x2D X2D 2Dh 002DH
The valid range of for numeric values is unsigned 16-bit values, 0 through 65535 (0x0 through 0xFFFF), except when patching and using /L or /W for 32-bit integers, in which case the valid range is 0 through 4,294,967,295 (0x0 through 0xFFFFFFFF).
You must separate two numbers on the same line from each other by a space or a comma.
Multitoken Parameters
Multitoken parameters, such as subtable identifiers, which are typed as three values, are typed on a single line with one or more spaces separating the individual tokens. You can also enter multitoken parameters separated by hyphens.
For example, either of the following as subtable identifiers is acceptable:
0 200 0 0-200-0
You can separate parameters from each other and from the command by spaces or a comma. To specify a command option (cmdoption ), type it on the same line as the command (cmd).
Cylinders and Data Blocks
- Each cylinder has a 64-bit identifier, represented as a cylid in Filer commands. Cylids must be entered as 16-character hexadecimal numbers regardless of the Filer input radix setting.
- Data blocks are specified by a cylid, and by their starting sector number and length, represented as sectornum and sectorcount in Filer commands. Type each of these parameters as a single numeric value. The format for entering sectornum and sectorcount values is subject to the input radix setting.
For more information on the formatting of numeric input and output, see Numeric Input and RADIX.
Rows and Row Ranges
Every physical row is uniquely identified by a row ID. A row ID specification, also referred to as a ridspec or a rowspec, is a value that includes a partition number, rowhash or hash bucket number, and uniqueness value. It can occupy up to 16 bytes in a physical row:
- The partition number is stored as 2 bytes if the number of partitions defined for the table is up to 65535, or 8 bytes if the number is greater. If the table is not partitioned, no space is reserved in the row ID for a partition specification. A value of zero means the table is not partitioned.
- The specification of the remainder of the row ID depends on whether the table includes a primary index:
- PI tables have a 4-byte rowhash value and a 4-byte uniqueness value, which is used to impose uniqueness in cases of rowhash synonyms for different physical rows.
- Tables without a primary index (NoPI tables) and tables with a primary AMP index (PA tables) have a 16- or 20-bit hash bucket value and a 44-bit uniqueness value. For systems using 16-bit hash bucket values, the four bits between the hash bucket value and the uniqueness value are unused. The remainder of the RowID is treated as two 4-byte values, and present them as hash and uniq fields:
hash0 hash1 uniq0 uniq1 ----- ----- ----- ----- FFA9 CB78 0000 0002
For NoPI and PA tables displayed or manipulated, hash0 and hash1 actually represent a 20-bit hash bucket value and the 12 high-order bits of the uniqueness value, while uniq0 and uniq1 display the 32 low-order bits of the uniqueness value. For more information on NoPI and PA tables, see SQL Data Definition Language - Syntax and Examples .
A range of rows, also called a ridrange , is specified by the ridspec of the starting and ending rows:
For purposes of input, the required and optional components of a ridspec depend on whether the table containing the physical row is partitioned.
Table Type | Ridspec Syntax |
---|---|
partitioned |
|
nonpartitioned |
|
Syntax Element | Description |
---|---|
row_partition |
The partition number of the physical row. The partition number is a single numeric value. It is the internal partition number used by the file system, which is the value shown in Filer command output screens under the column heading part . The value must be between 0 and 9223372036854775807 (0 and 7FFFFFFFFFFFFFFF in hexadecimal notation). For tables with multiple levels of partitioning, each physical partition results from the combination of all partitioning expressions in the PARTITION BY clause for a specific set of values in the partitioning columns. This gives a single, unique combined partition number, which is mapped to an internal partition number. Although the combined partition number of a partition can change if partition ranges are dropped or added for the partition level, the internal partition number does not change. For rows in nonpartitioned tables, the partition number must be zero, if specified, or can be omitted from the ridspec. |
row_hash |
The row hash value of the physical row. The row hash determines the AMP to which the physical row is distributed. The row hash consists of 2 numeric values, usually shown in output screens under column headings hash0 and hash1. For start_rid_spec :
For end_rid_spec :
|
row_uniq |
The system-generated uniqueness value which is used with the row hash value to uniquely identify a physical row. The uniqueness value consists of two numeric values, usually shown in output screens under column headings u0 and u1. For start_rid_spec :
For end_rid_spec :
|
= |
The program will use the most recently saved values for row_partition , row_hash, or row_uniq. The most recently specified values for row_partition , row_hash , and row_uniq are stored. Separate values are stored for start_rid_spec and end_rid_spec . row_partition , row_hash , or row_uniq . An error is reported if a saved start_rid_spec or end_rid_spec value is used for a partitioned table, but the table referenced in the current command is not partitioned, and vice versa. |
Example: Row range notation in SHOWDEFAULTS command output
Filer ==> showdefaults The current object selected is Nothing The current defaults are: The present value for the = is: Dec (Hex) Cylinder Id = : 0000FFFFFFFFFFFF Sector Number 972 (03CC) Sector Count 16 (0010) Memory Address is undefined. Length is undefined. Patch Offset is undefined. TID 0 26 1024 (0000 001A 0400) Start Rowid 0 512 657 0 1059 (0000 0200 0291 0000 0423 ) End Rowid 65535 512 657 0 1059 (FFFF 0200 0291 0000 0423 ) Start WLSN is undefined End WLSN is undefined Where Clause is undefined Filer is running as a startable utility Filer is running with Locking -- Enabled
Filer is running with Script Mode -- Disabled File System has Internal Tracing -- Enabled
Example: Row IDs in DBROW command output
DB ==> dbrow /m ROW length rowid flags presences part hash0 hash1 uniq0 uniq1 ------ ---- ----- ----- ----- ----- ----- --------- 09CD 0000 7C6B 71AB 0000 0001 00 9C 0097 0000 7D47 ADC8 0000 0001 00 91 0800 0000 7D57 B91E 0000 0001 00 9C 00D5 0000 823F CDAE 0000 0001 00 99 00D5 0000 871F 7438 0000 0001 00 99 0097 0000 8913 51BD 0000 0001 00 91
Specifying a Subtable Identifier (tid)
Commands operate on subtables, rather than on tables. A table is a collection of subtables, and a subtable is a collection of physical rows. Each subtable has physical rows that store one particular type of data. For example, primary and fallback data subtables have data rows, primary and fallback index subtables have index rows, and the physical rows of table header subtables contain table metadata.
Each subtable is identified by a subtable identifier ( tid ). The tid has two parts. The first part identifies the table to which the subtable belongs. All subtables that are part of the same table have the same table identifier as part of their tid. The second part identifies one of the subtables that comprise the table, and indicate the subtable type.
A tid is defined as follows:
table_unique and type_and_index together uniquely identify a subtable.
Syntax Element |
Description |
---|---|
table_unique |
Unique identifier of the table to be acted upon. The table can be uniquely identified in either of two ways:
|
= |
Specifies to use the most recently saved value for table_unique . |
type_and_index |
Uniquely identifies the subtable within the group of subtables that comprise a table. The type_and_index identifies both the type of subtable, and the individual subtable itself. |
The syntax for type_and _index is as follows:
Syntax Element | Description | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
type | The type of subtable. type can be one of the following:
|
||||||||||||
index | The index subtable to examine. If an index subtable value is not provided, it defaults to the data subtable. Index 1 is the first secondary index. index 2 is the second secondary index, and so forth. index can be one of the following:
|
||||||||||||
variant | The possible subtables. variant can be one of the following:
|
||||||||||||
number | A single number that represents internally the type of subtable (header, primary data, or fallback data), the index to use when ordering the physical rows (primary data index or one of the secondary indexes), and the variant. The table header has a type_and_index number of zero. Examples of these numbers are listed below. |
The following table gives examples that describe the type_and _index fields.
Subtable Description |
Number |
Type |
Type/Index |
Type/Index/Variant |
---|---|---|---|---|
Table header |
0 |
H |
||
Primary data subtable |
1024 (0x0400) |
P |
P/D |
|
First secondary index |
1028 (0x0404) |
P/X1 |
||
First fallback table |
2048 (0x0800) |
F1 |
F1/D |
|
Second secondary index of the third fallback table |
4104 (0x1008) |
F3/X2 |
||
All primary subtables |
P/* |
|||
All primary secondary indexes |
P/X* |
|||
All fallback subtables |
F* |
|||
All subtables of this table |
* |
|||
Sort table of the first secondary index |
1029 (0x0405) |
P/X1/1 |
||
Both tables during a sort of the first secondary index |
P/X1/ * |
For example, assume that table T4 is a table in database MYDB and has a table_number of 0 1198. Also assume that input is accepted in hexadecimal format.
Some valid specifications of a tid for primary subtables of table T4 are as follows:
- "MYDB.T4" 400
- "MYDB.T4" 1024.
- "MYDB"."T4" P
- u 'MYDB'.'T4' 400 h
- 0 1198 400
- 0 1198 P
Stored Input Values
Filer stores the most recent values entered for the following parameters:
- cylid
- endcylid
- length
- memaddr
- offset
- row_hash
- row_partition
- row_uniq
- sectorcount
- sectornum
- startcylid
- tablenumber
- tid
You can enter an equal sign (=) for any of these parameters to use the currently stored value.
These context values are position-dependent. (For example, values stored for a start_rid_spec can be used only as part of a start_rid_spec argument in a later command and not as part of an end_rid_spec).
The stored values are updated by the commands as well. For example, if you select a data block, the stored value for the tid is updated to the subtable identifier of the data block, and the RowIDs are updated to the first and last physical row in the data block.