1 | /* |
2 | |
3 | Derby - Class org.apache.derby.client.net.FdocaConstants |
4 | |
5 | Copyright (c) 2001, 2005 The Apache Software Foundation or its licensors, where applicable. |
6 | |
7 | Licensed under the Apache License, Version 2.0 (the "License"); |
8 | you may not use this file except in compliance with the License. |
9 | You may obtain a copy of the License at |
10 | |
11 | http://www.apache.org/licenses/LICENSE-2.0 |
12 | |
13 | Unless required by applicable law or agreed to in writing, software |
14 | distributed under the License is distributed on an "AS IS" BASIS, |
15 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
16 | See the License for the specific language governing permissions and |
17 | limitations under the License. |
18 | |
19 | */ |
20 | package org.apache.derby.client.net; |
21 | |
22 | class FdocaConstants { |
23 | |
24 | // PROTOCOL FD:OCA constants. |
25 | static final int FDOCA_TYPE_FIXEDBYTES = 0x01; |
26 | static final int FDOCA_TYPE_NFIXEDBYTES = 0x81; |
27 | static final int FDOCA_TYPE_VARBYTES = 0x02; |
28 | static final int FDOCA_TYPE_NVARBYTES = 0x82; |
29 | static final int FDOCA_TYPE_NTBYTES = 0x03; |
30 | static final int FDOCA_TYPE_NNTBYTES = 0x83; |
31 | static final int FDOCA_TYPE_PSCLBYTE = 0x07; |
32 | static final int FDOCA_TYPE_NPSCLBYTE = 0x87; |
33 | static final int FDOCA_TYPE_FIXEDCHAR = 0x10; |
34 | static final int FDOCA_TYPE_NFIXEDCHAR = 0x90; |
35 | static final int FDOCA_TYPE_VARCHAR = 0x11; |
36 | static final int FDOCA_TYPE_NVARCHAR = 0x91; |
37 | static final int FDOCA_TYPE_NTCHAR = 0x14; |
38 | static final int FDOCA_TYPE_NNTCHAR = 0x94; |
39 | static final int FDOCA_TYPE_PSCLCHAR = 0x19; |
40 | static final int FDOCA_TYPE_NPSCLCHAR = 0x99; |
41 | static final int FDOCA_TYPE_INTEGER_BE = 0x23; |
42 | static final int FDOCA_TYPE_NINTEGER_BE = 0xA3; |
43 | static final int FDOCA_TYPE_INTEGER_LE = 0x24; |
44 | static final int FDOCA_TYPE_NINTEGER_LE = 0xA4; |
45 | static final int FDOCA_TYPE_DECIMAL = 0x30; |
46 | static final int FDOCA_TYPE_NDECIMAL = 0xB0; |
47 | static final int FDOCA_TYPE_NUMERIC_CHAR = 0x32; |
48 | static final int FDOCA_TYPE_NNUMERIC_CHAR = 0xB2; |
49 | static final int FDOCA_TYPE_FLOAT_X86 = 0x47; |
50 | static final int FDOCA_TYPE_NFLOAT_X86 = 0xC7; |
51 | static final int FDOCA_TYPE_FLOAT_IEEE = 0x48; |
52 | static final int FDOCA_TYPE_NFLOAT_IEEE = 0xC8; |
53 | static final int FDOCA_TYPE_LOBBYTES = 0x50; |
54 | static final int FDOCA_TYPE_NLOBBYTES = 0xD0; |
55 | static final int FDOCA_TYPE_LOBCHAR = 0x51; |
56 | static final int FDOCA_TYPE_NLOBCHAR = 0xD1; |
57 | |
58 | // --- Override LIDs 0x50 - 0xAF |
59 | static final int FIRST_OVERRIDE_LID = 0x50; |
60 | static final int LAST_OVERRIDE_LID = 0xAF; |
61 | |
62 | static final int CPT_TRIPLET_TYPE = 0x7F; // CPT triplet type |
63 | static final int MDD_TRIPLET_TYPE = 0x78; // MDD triplet type |
64 | static final int NGDA_TRIPLET_TYPE = 0x76; // N-GDA triplet type |
65 | static final int RLO_TRIPLET_TYPE = 0x71; // RLO triplet type |
66 | static final int SDA_TRIPLET_TYPE = 0x70; // SDA triplet type |
67 | |
68 | static final int SQLDTARD_LID = 0xF0; |
69 | static final int SQLCADTA_LID = 0xE0; |
70 | static final int SQLDTAGRP_LID = 0xD0; // SQLDTAGRP LID |
71 | static final int NULL_LID = 0x00; |
72 | |
73 | static final int INDICATOR_NULLABLE = 0x00; |
74 | static final int NULL_DATA = 0xFF; |
75 | |
76 | static final int MAX_VARS_IN_NGDA = 84; // Number of SQLVARs in full SQLDTAGRP |
77 | // N-GDA or CPT |
78 | static final int MDD_TRIPLET_SIZE = 7; // Size of MDD triplet |
79 | static final int SQLDTARD_RLO_SIZE = 6; // size of SQLDTARD minus MDD |
80 | static final int SQLCADTA_RLO_SIZE = 9; // size of SQLCDTA minus MDD |
81 | static final int SDA_TRIPLET_SIZE = 12; // Size of SDA triplet |
82 | static final int SQLDTAGRP_SIZE = 3; // Size of SQLDTAGRP descriptor |
83 | static final int CPT_SIZE = 3; // Size of CPT descriptor |
84 | static final int SQLDTAGRP_COL_DSC_SIZE = 3; // Env. LID & len. bytes |
85 | static final int MDD_REST_SIZE = 5; // Size of the MDD group minus length and type |
86 | |
87 | static final int MDD_SDA_TRIPLET_SIZE = 19; |
88 | static final int MDD_SDA_PROTOCOLTYPE_OFFSET = 6; |
89 | static final int MDD_SDA_FDOCALID_OFFSET = 9; |
90 | static final int MDD_SDA_FDOCATYPE_OFFSET = 10; |
91 | static final int MDD_SDA_CCSID_OFFSET = 11; |
92 | static final int MDD_SDA_LENGTH_OFFSET = 17; |
93 | |
94 | static final byte[] defaultMddSdaBytes = { |
95 | (byte) 0x07, (byte) 0x78, (byte) 0x00, (byte) 0x05, |
96 | (byte) 0x01, (byte) 0x01, (byte) 0x00, // protocol type |
97 | (byte) 0x0C, (byte) 0x70, (byte) 0x00, // fdoca triplet lid |
98 | (byte) 0x00, // fdoca field type |
99 | (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, // ccsid |
100 | (byte) 0x01, (byte) 0x01, |
101 | (byte) 0x7F, (byte) 0xFF // length |
102 | }; |
103 | |
104 | static final byte[] MDD_SQLDTAGRP_TOSEND = { |
105 | (byte) 0x07, (byte) 0x78, (byte) 0x00, (byte) 0x05, |
106 | (byte) 0x02, (byte) 0x01, (byte) 0xD0 |
107 | }; |
108 | |
109 | static final byte[] MDD_SQLDTA_TOSEND = { |
110 | (byte) 0x07, (byte) 0x78, (byte) 0x00, (byte) 0x05, |
111 | (byte) 0x03, (byte) 0x01, (byte) 0xE4 |
112 | }; |
113 | |
114 | // Hard-coded SQLDTA RLO |
115 | static final byte[] SQLDTA_RLO_TOSEND = { |
116 | (byte) 0x06, (byte) 0x71, (byte) 0xE4, |
117 | (byte) 0xD0, (byte) 0x00, (byte) 0x01 |
118 | }; |
119 | |
120 | // Hard-coded SQLCADTA RLO |
121 | static final byte[] SQLCADTA_RLO_TOSEND = { |
122 | (byte) 0x09, (byte) 0x71, (byte) 0xE0, |
123 | (byte) 0x54, (byte) 0x00, (byte) 0x01, |
124 | (byte) 0xD0, (byte) 0x00, (byte) 0x01 |
125 | }; |
126 | |
127 | // Hard-coded SQLDTARD RLO |
128 | static final byte[] SQLDTARD_RLO_TOSEND = { |
129 | (byte) 0X06, (byte) 0X71, (byte) 0xF0, |
130 | (byte) 0xE0, (byte) 0x00, (byte) 0x00 |
131 | }; |
132 | |
133 | // following code added for parseSQLDTARD prototype |
134 | static final int SQLDTARD_TRIPLET_TYPE_START = 0; |
135 | static final int SQLDTARD_TRIPLET_TYPE_END = 1; |
136 | static final int SQLDTARD_TRIPLET_TYPE_MDD = 2; |
137 | static final int SQLDTARD_TRIPLET_TYPE_SDA = 3; |
138 | static final int SQLDTARD_TRIPLET_TYPE_RLO = 4; |
139 | static final int SQLDTARD_TRIPLET_TYPE_GDA = 5; |
140 | static final int SQLDTARD_TRIPLET_TYPE_CPT = 6; |
141 | |
142 | static final boolean[][] SQLDTARD_TRIPLET_TYPES = { |
143 | // /*START*/, /*END*/, /*MDD*/, /*SDA*/, /*RLO*/, /*GDA*/, /*CPT*/ // next -> |
144 | /*START*/ {false, false, true, false, false, true, false}, |
145 | /* END */ {false, false, false, false, false, false, false}, |
146 | /* MDD */ {false, false, false, true, true, true, false}, // | |
147 | /* SDA */ {false, false, true, false, false, false, false}, // previous | |
148 | /* RLO */ {false, true, true, false, true, false, false}, // \ / |
149 | /* GDA */ {false, false, true, false, true, false, true}, |
150 | /* CPT */ {false, false, true, false, true, false, true}}; |
151 | |
152 | static final int SQLDTARD_TRIPLET_ID_START = 0; |
153 | static final int SQLDTARD_TRIPLET_ID_END = 1; |
154 | static final int SQLDTARD_TRIPLET_ID_SDA = 2; |
155 | static final int SQLDTARD_TRIPLET_ID_0 = 3; |
156 | static final int SQLDTARD_TRIPLET_ID_D0 = 4; |
157 | static final int SQLDTARD_TRIPLET_ID_E0 = 5; |
158 | static final int SQLDTARD_TRIPLET_ID_F0 = 6; |
159 | |
160 | static final boolean[][] SQLDTARD_TRIPLET_IDS = { |
161 | // /*START*/, /*END*/, /*SDA*/, /*0*/, /*D0*/, /*E0*/, /*F4*/ // next -> |
162 | /*START*/ {false, false, false, true, true, false, false}, |
163 | /* END */ {false, false, false, false, false, false, false}, |
164 | /* SDA */ {false, false, false, true, false, false, false}, |
165 | /* 0 */ {false, false, true, true, true, true, true}, |
166 | /* D0 */ {false, false, false, true, false, true, false}, |
167 | /* E0 */ {false, false, false, true, false, false, true}, |
168 | /* F4 */ {false, true, false, false, false, false, false}}; |
169 | |
170 | static final int RLO_GROUP_LID = 0; |
171 | static final int RLO_ELEMENT_TAKEN = 1; |
172 | static final int RLO_REP_FACTOR = 2; |
173 | |
174 | static final int[][] RLO_SQLCADTA = {// GROUP LID , ELEM TAKEN, REP_FACTOR |
175 | {0x54, 0, 1}, |
176 | {0xD0, 0, 1}}; |
177 | |
178 | static final int[][] RLO_SQLDTARD = {// GROUP LID , ELEM TAKEN, REP_FACTOR |
179 | {0xE0, 0, 0}}; |
180 | |
181 | } |