MCPcopy Create free account
hub / github.com/MariaDB/server / ColumnDesc

Method ColumnDesc

storage/connect/Mongo3Interface.java:289–381  ·  view source on GitHub ↗
(Object obj, int n, int[] val, int lvl)

Source from the content-addressed store, hash-verified

287 } // end of ColumnType
288
289 public Object ColumnDesc(Object obj, int n, int[] val, int lvl) {
290 Object ret = null;
291 BsonValue bval = (BsonValue) ((obj != null) ? obj : doc);
292 BsonDocument dob = (bval instanceof BsonDocument) ? (BsonDocument) bval : null;
293 BsonArray ary = (bval instanceof BsonArray) ? (BsonArray) bval : null;
294
295 try {
296 if (ary != null) {
297 bval = ary.get(n);
298 bvalName = Integer.toString(n);
299 } else if (dob != null) {
300 // String[] k = dob.keySet().toArray(new String[0]);
301 Object[] k = dob.keySet().toArray();
302 bval = dob.get(k[n]);
303 bvalName = (String) k[n];
304 } else
305 bvalName = "x" + Integer.toString(n);
306
307 val[0] = 0; // ColumnType
308 val[1] = 0; // Precision
309 val[2] = 0; // Scale
310 val[3] = 0; // Nullable
311 val[4] = 0; // ncol
312
313 if (bval.isString()) {
314 val[0] = 1;
315 val[1] = bval.asString().getValue().length();
316 } else if (bval.isInt32()) {
317 val[0] = 7;
318 val[1] = Integer.toString(bval.asInt32().getValue()).length();
319 } else if (bval.isInt64()) {
320 val[0] = 5;
321 val[1] = Long.toString(bval.asInt64().getValue()).length();
322 } else if (bval.isObjectId()) {
323 val[0] = 1;
324 val[1] = bval.asObjectId().getValue().toString().length();
325 } else if (bval.isDateTime()) {
326 Long TS = (bval.asDateTime().getValue() / 1000);
327 val[0] = 8;
328 val[1] = TS.toString().length();
329 } else if (bval.isDouble()) {
330 String d = Double.toString(bval.asDouble().getValue());
331 int i = d.indexOf('.') + 1;
332
333 val[0] = 2;
334 val[1] = d.length();
335 val[2] = (i > 0) ? val[1] - i : 0;
336 } else if (bval.isBoolean()) {
337 val[0] = 4;
338 val[1] = 1;
339 } else if (bval.isDocument()) {
340 if (lvl > 0) {
341 ret = bval;
342 val[0] = 1;
343 val[4] = bval.asDocument().keySet().size();
344 } else if (lvl == 0) {
345 val[0] = 1;
346 val[1] = bval.asDocument().toJson().length();

Callers

nothing calls this directly

Calls 4

SetErrmsgMethod · 0.95
getMethod · 0.45
lengthMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected