001: /*
002:
003: Derby - Class org.apache.derby.client.net.FdocaConstants
004:
005: Licensed to the Apache Software Foundation (ASF) under one or more
006: contributor license agreements. See the NOTICE file distributed with
007: this work for additional information regarding copyright ownership.
008: The ASF licenses this file to You under the Apache License, Version 2.0
009: (the "License"); you may not use this file except in compliance with
010: the License. You may obtain a copy of the License at
011:
012: http://www.apache.org/licenses/LICENSE-2.0
013:
014: Unless required by applicable law or agreed to in writing, software
015: distributed under the License is distributed on an "AS IS" BASIS,
016: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017: See the License for the specific language governing permissions and
018: limitations under the License.
019:
020: */
021: package org.apache.derby.client.net;
022:
023: class FdocaConstants {
024:
025: // PROTOCOL FD:OCA constants.
026: static final int FDOCA_TYPE_FIXEDBYTES = 0x01;
027: static final int FDOCA_TYPE_NFIXEDBYTES = 0x81;
028: static final int FDOCA_TYPE_VARBYTES = 0x02;
029: static final int FDOCA_TYPE_NVARBYTES = 0x82;
030: static final int FDOCA_TYPE_NTBYTES = 0x03;
031: static final int FDOCA_TYPE_NNTBYTES = 0x83;
032: static final int FDOCA_TYPE_PSCLBYTE = 0x07;
033: static final int FDOCA_TYPE_NPSCLBYTE = 0x87;
034: static final int FDOCA_TYPE_FIXEDCHAR = 0x10;
035: static final int FDOCA_TYPE_NFIXEDCHAR = 0x90;
036: static final int FDOCA_TYPE_VARCHAR = 0x11;
037: static final int FDOCA_TYPE_NVARCHAR = 0x91;
038: static final int FDOCA_TYPE_NTCHAR = 0x14;
039: static final int FDOCA_TYPE_NNTCHAR = 0x94;
040: static final int FDOCA_TYPE_PSCLCHAR = 0x19;
041: static final int FDOCA_TYPE_NPSCLCHAR = 0x99;
042: static final int FDOCA_TYPE_INTEGER_BE = 0x23;
043: static final int FDOCA_TYPE_NINTEGER_BE = 0xA3;
044: static final int FDOCA_TYPE_INTEGER_LE = 0x24;
045: static final int FDOCA_TYPE_NINTEGER_LE = 0xA4;
046: static final int FDOCA_TYPE_DECIMAL = 0x30;
047: static final int FDOCA_TYPE_NDECIMAL = 0xB0;
048: static final int FDOCA_TYPE_NUMERIC_CHAR = 0x32;
049: static final int FDOCA_TYPE_NNUMERIC_CHAR = 0xB2;
050: static final int FDOCA_TYPE_FLOAT_X86 = 0x47;
051: static final int FDOCA_TYPE_NFLOAT_X86 = 0xC7;
052: static final int FDOCA_TYPE_FLOAT_IEEE = 0x48;
053: static final int FDOCA_TYPE_NFLOAT_IEEE = 0xC8;
054: static final int FDOCA_TYPE_LOBBYTES = 0x50;
055: static final int FDOCA_TYPE_NLOBBYTES = 0xD0;
056: static final int FDOCA_TYPE_LOBCHAR = 0x51;
057: static final int FDOCA_TYPE_NLOBCHAR = 0xD1;
058:
059: // --- Override LIDs 0x50 - 0xAF
060: static final int FIRST_OVERRIDE_LID = 0x50;
061: static final int LAST_OVERRIDE_LID = 0xAF;
062:
063: static final int CPT_TRIPLET_TYPE = 0x7F; // CPT triplet type
064: static final int MDD_TRIPLET_TYPE = 0x78; // MDD triplet type
065: static final int NGDA_TRIPLET_TYPE = 0x76; // N-GDA triplet type
066: static final int RLO_TRIPLET_TYPE = 0x71; // RLO triplet type
067: static final int SDA_TRIPLET_TYPE = 0x70; // SDA triplet type
068:
069: static final int SQLDTARD_LID = 0xF0;
070: static final int SQLCADTA_LID = 0xE0;
071: static final int SQLDTAGRP_LID = 0xD0; // SQLDTAGRP LID
072: static final int NULL_LID = 0x00;
073:
074: static final int INDICATOR_NULLABLE = 0x00;
075: static final int NULL_DATA = 0xFF;
076:
077: static final int MAX_VARS_IN_NGDA = 84; // Number of SQLVARs in full SQLDTAGRP
078: // N-GDA or CPT
079: static final int MDD_TRIPLET_SIZE = 7; // Size of MDD triplet
080: static final int SQLDTARD_RLO_SIZE = 6; // size of SQLDTARD minus MDD
081: static final int SQLCADTA_RLO_SIZE = 9; // size of SQLCDTA minus MDD
082: static final int SDA_TRIPLET_SIZE = 12; // Size of SDA triplet
083: static final int SQLDTAGRP_SIZE = 3; // Size of SQLDTAGRP descriptor
084: static final int CPT_SIZE = 3; // Size of CPT descriptor
085: static final int SQLDTAGRP_COL_DSC_SIZE = 3; // Env. LID & len. bytes
086: static final int MDD_REST_SIZE = 5; // Size of the MDD group minus length and type
087:
088: static final int MDD_SDA_TRIPLET_SIZE = 19;
089: static final int MDD_SDA_PROTOCOLTYPE_OFFSET = 6;
090: static final int MDD_SDA_FDOCALID_OFFSET = 9;
091: static final int MDD_SDA_FDOCATYPE_OFFSET = 10;
092: static final int MDD_SDA_CCSID_OFFSET = 11;
093: static final int MDD_SDA_LENGTH_OFFSET = 17;
094:
095: static final byte[] defaultMddSdaBytes = { (byte) 0x07,
096: (byte) 0x78, (byte) 0x00, (byte) 0x05, (byte) 0x01,
097: (byte) 0x01, (byte) 0x00, // protocol type
098: (byte) 0x0C, (byte) 0x70, (byte) 0x00, // fdoca triplet lid
099: (byte) 0x00, // fdoca field type
100: (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, // ccsid
101: (byte) 0x01, (byte) 0x01, (byte) 0x7F, (byte) 0xFF // length
102: };
103:
104: static final byte[] MDD_SQLDTAGRP_TOSEND = { (byte) 0x07,
105: (byte) 0x78, (byte) 0x00, (byte) 0x05, (byte) 0x02,
106: (byte) 0x01, (byte) 0xD0 };
107:
108: static final byte[] MDD_SQLDTA_TOSEND = { (byte) 0x07, (byte) 0x78,
109: (byte) 0x00, (byte) 0x05, (byte) 0x03, (byte) 0x01,
110: (byte) 0xE4 };
111:
112: // Hard-coded SQLDTA RLO
113: static final byte[] SQLDTA_RLO_TOSEND = { (byte) 0x06, (byte) 0x71,
114: (byte) 0xE4, (byte) 0xD0, (byte) 0x00, (byte) 0x01 };
115:
116: // Hard-coded SQLCADTA RLO
117: static final byte[] SQLCADTA_RLO_TOSEND = { (byte) 0x09,
118: (byte) 0x71, (byte) 0xE0, (byte) 0x54, (byte) 0x00,
119: (byte) 0x01, (byte) 0xD0, (byte) 0x00, (byte) 0x01 };
120:
121: // Hard-coded SQLDTARD RLO
122: static final byte[] SQLDTARD_RLO_TOSEND = { (byte) 0X06,
123: (byte) 0X71, (byte) 0xF0, (byte) 0xE0, (byte) 0x00,
124: (byte) 0x00 };
125:
126: // following code added for parseSQLDTARD prototype
127: static final int SQLDTARD_TRIPLET_TYPE_START = 0;
128: static final int SQLDTARD_TRIPLET_TYPE_END = 1;
129: static final int SQLDTARD_TRIPLET_TYPE_MDD = 2;
130: static final int SQLDTARD_TRIPLET_TYPE_SDA = 3;
131: static final int SQLDTARD_TRIPLET_TYPE_RLO = 4;
132: static final int SQLDTARD_TRIPLET_TYPE_GDA = 5;
133: static final int SQLDTARD_TRIPLET_TYPE_CPT = 6;
134:
135: static final boolean[][] SQLDTARD_TRIPLET_TYPES = {
136: // /*START*/, /*END*/, /*MDD*/, /*SDA*/, /*RLO*/, /*GDA*/, /*CPT*/ // next ->
137: /*START*/{ false, false, true, false, false, true, false },
138: /* END */{ false, false, false, false, false, false, false },
139: /* MDD */{ false, false, false, true, true, true, false }, // |
140: /* SDA */
141: { false, false, true, false, false, false, false }, // previous |
142: /* RLO */{ false, true, true, false, true, false, false }, // \ /
143: /* GDA */{ false, false, true, false, true, false, true },
144: /* CPT */{ false, false, true, false, true, false, true } };
145:
146: static final int SQLDTARD_TRIPLET_ID_START = 0;
147: static final int SQLDTARD_TRIPLET_ID_END = 1;
148: static final int SQLDTARD_TRIPLET_ID_SDA = 2;
149: static final int SQLDTARD_TRIPLET_ID_0 = 3;
150: static final int SQLDTARD_TRIPLET_ID_D0 = 4;
151: static final int SQLDTARD_TRIPLET_ID_E0 = 5;
152: static final int SQLDTARD_TRIPLET_ID_F0 = 6;
153:
154: static final boolean[][] SQLDTARD_TRIPLET_IDS = {
155: // /*START*/, /*END*/, /*SDA*/, /*0*/, /*D0*/, /*E0*/, /*F4*/ // next ->
156: /*START*/{ false, false, false, true, true, false, false },
157: /* END */{ false, false, false, false, false, false, false },
158: /* SDA */{ false, false, false, true, false, false, false },
159: /* 0 */{ false, false, true, true, true, true, true },
160: /* D0 */{ false, false, false, true, false, true, false },
161: /* E0 */{ false, false, false, true, false, false, true },
162: /* F4 */{ false, true, false, false, false, false, false } };
163:
164: static final int RLO_GROUP_LID = 0;
165: static final int RLO_ELEMENT_TAKEN = 1;
166: static final int RLO_REP_FACTOR = 2;
167:
168: static final int[][] RLO_SQLCADTA = {// GROUP LID , ELEM TAKEN, REP_FACTOR
169: { 0x54, 0, 1 }, { 0xD0, 0, 1 } };
170:
171: static final int[][] RLO_SQLDTARD = {// GROUP LID , ELEM TAKEN, REP_FACTOR
172: { 0xE0, 0, 0 } };
173:
174: }
|