122 |
122 |
}
|
123 |
123 |
|
124 |
124 |
|
125 |
|
public static void upgrade_xml_index(Connection sqlca) throws SQLException{
|
126 |
|
Statement sqlStatement, sqlStatement1 = null;
|
127 |
|
PreparedStatement pstmt = null;
|
128 |
|
ResultSet rset, rset1 = null;
|
129 |
|
|
130 |
|
// Delete old nodedata column from xml_index if one exsists
|
131 |
|
try {
|
132 |
|
System.out.println(
|
133 |
|
"Deleting old nodedata column from xml_index...");
|
134 |
|
|
135 |
|
pstmt = sqlca.prepareStatement(
|
136 |
|
"ALTER TABLE xml_index DROP COLUMN nodedata");
|
137 |
|
pstmt.execute();
|
138 |
|
pstmt.close();
|
139 |
|
|
140 |
|
System.out.println("Done.");
|
141 |
|
} catch (Exception e) {
|
142 |
|
System.out.println(" column not found.");
|
143 |
|
}
|
144 |
|
|
145 |
|
// Create nodedata column in xml_index
|
146 |
|
System.out.println(
|
147 |
|
"Creating new nodedata column in xml_index...");
|
148 |
|
|
149 |
|
if (database.equals("oracle")) {
|
150 |
|
pstmt = sqlca.prepareStatement(
|
151 |
|
"ALTER TABLE xml_index ADD nodedata VARCHAR2(4000)");
|
152 |
|
} else {
|
153 |
|
pstmt = sqlca.prepareStatement(
|
154 |
|
"ALTER TABLE xml_index ADD nodedata VARCHAR(4000)");
|
155 |
|
}
|
156 |
|
pstmt.execute();
|
157 |
|
pstmt.close();
|
158 |
|
|
159 |
|
System.out.println("Done.");
|
160 |
|
|
161 |
|
// Copy numerical values from nodedata to
|
162 |
|
// nodedatanumerical column in xml_index
|
163 |
|
System.out.println(
|
164 |
|
"Copy nodedata from xml_nodes to nodedata in xml_index...");
|
165 |
|
|
166 |
|
sqlStatement = sqlca.createStatement();
|
167 |
|
rset = sqlStatement.executeQuery(
|
168 |
|
"select docid, nodeid, path from xml_index");
|
169 |
|
int j = 0;
|
170 |
|
|
171 |
|
while (rset.next()) {
|
172 |
|
String docid = rset.getString(1);
|
173 |
|
String nodeid = rset.getString(2);
|
174 |
|
String path = rset.getString(3);
|
175 |
|
|
176 |
|
sqlStatement1 = sqlca.createStatement();
|
177 |
|
rset1 = sqlStatement1.executeQuery(
|
178 |
|
"select nodedata from xml_nodes where parentnodeid = " + nodeid
|
179 |
|
+ " and docid = '" + docid
|
180 |
|
+ "' and (nodetype = 'TEXT' or nodetype ='ATTRIBUTE')");
|
181 |
|
|
182 |
|
while (rset1.next()) {
|
183 |
|
String nodedata = rset1.getString(1);
|
184 |
|
if (nodedata != null && !nodedata.trim().equals("")) {
|
185 |
|
j++;
|
186 |
|
if (j % 100 == 0) {
|
187 |
|
System.out.println("Number of records modified:" + j);
|
188 |
|
}
|
189 |
|
|
190 |
|
pstmt = sqlca.prepareStatement(
|
191 |
|
"update xml_index set nodedata = ? where nodeid = " +
|
192 |
|
nodeid + " and path = ? and docid = ? and nodedata is null");
|
193 |
|
pstmt.setString(1, nodedata);
|
194 |
|
pstmt.setString(2, path);
|
195 |
|
pstmt.setString(3, docid);
|
196 |
|
pstmt.execute();
|
197 |
|
pstmt.close();
|
198 |
|
|
199 |
|
continue;
|
200 |
|
}
|
201 |
|
}
|
202 |
|
rset1.close();
|
203 |
|
sqlStatement1.close();
|
204 |
|
|
205 |
|
}
|
206 |
|
rset.close();
|
207 |
|
sqlStatement.close();
|
208 |
|
|
209 |
|
// Create index on xml_index.docid
|
210 |
|
System.out.println("Creating index on docid column in xml_index...");
|
211 |
|
pstmt = sqlca.prepareStatement(
|
212 |
|
"CREATE INDEX xml_index_idx2 ON xml_index (docid)");
|
213 |
|
|
214 |
|
pstmt.execute();
|
215 |
|
pstmt.close();
|
216 |
|
}
|
217 |
|
|
218 |
|
|
219 |
125 |
public static void main(String [] ags){
|
220 |
126 |
|
221 |
127 |
try {
|
... | ... | |
228 |
134 |
// Upgrade the xml_nodes table
|
229 |
135 |
upgrade_xml_nodes(sqlca);
|
230 |
136 |
|
231 |
|
// Upgrade the xml_index table
|
232 |
|
upgrade_xml_index(sqlca);
|
233 |
|
|
234 |
137 |
// Close the connection...
|
235 |
138 |
sqlca.close();
|
236 |
139 |
} catch (SQLException ex) {
|
Modified code such that nodedata column in xml_index is not created and used. So now we are using the same logic for using xml_index which was used for metacat release 1.4