ttomcat-1778514358873.zip-extract/_dependencies/maven/com.h2database_h2-2.2.220/org/h2/expression/ArrayElementReference.java

Path
ttomcat-1778514358873.zip-extract/_dependencies/maven/com.h2database_h2-2.2.220/org/h2/expression/ArrayElementReference.java
Status
scanned
Type
file
Name
ArrayElementReference.java
Extension
.java
Programming language
Java
Mime type
text/x-java
File type
Java source, ASCII text
Tag

      
    
Rootfs path

      
    
Size
3036 (3.0 KB)
MD5
0e797f0d65bae22b359a1b9000e03235
SHA1
2c3fe9583e8fac1e324a10b2bca865e978ddba8b
SHA256
ed4c44e91c36b787281e135cf0ab63476d88f1a5c7f29e8d7a26696242802f9b
SHA512

      
    
SHA1_git
c501bc4e7faf3956267b280d5542982752fb5c0a
Is binary

      
    
Is text
True
Is archive

      
    
Is media

      
    
Is legal

      
    
Is manifest

      
    
Is readme

      
    
Is top level

      
    
Is key file

      
    
ArrayElementReference.java | 3.0 KB |

/* * Copyright 2004-2023 H2 Group. Multiple-Licensed under the MPL 2.0, * and the EPL 1.0 (https://h2database.com/html/license.html). * Initial Developer: H2 Group */ package org.h2.expression; import org.h2.api.ErrorCode; import org.h2.engine.SessionLocal; import org.h2.message.DbException; import org.h2.mvstore.db.Store; import org.h2.util.json.JSONArray; import org.h2.util.json.JSONValue; import org.h2.value.TypeInfo; import org.h2.value.Value; import org.h2.value.ValueArray; import org.h2.value.ValueJson; import org.h2.value.ValueNull; /** * Array element reference. */ public final class ArrayElementReference extends Operation2 { public ArrayElementReference(Expression left, Expression right) { super(left, right); } @Override public StringBuilder getUnenclosedSQL(StringBuilder builder, int sqlFlags) { left.getSQL(builder, sqlFlags, AUTO_PARENTHESES).append('['); return right.getUnenclosedSQL(builder, sqlFlags).append(']'); } @Override public Value getValue(SessionLocal session) { Value l = left.getValue(session); Value r = right.getValue(session); if (l != ValueNull.INSTANCE && r != ValueNull.INSTANCE) { int element = r.getInt(); if (left.getType().getValueType() == Value.ARRAY) { Value[] list = ((ValueArray) l).getList(); int cardinality = list.length; if (element >= 1 && element <= cardinality) { return list[element - 1]; } throw DbException.get(ErrorCode.ARRAY_ELEMENT_ERROR_2, Integer.toString(element), "1.." + cardinality); } else { JSONValue value = l.convertToAnyJson().getDecomposition(); if (value instanceof JSONArray) { JSONValue jsonValue = ((JSONArray) value).getElement(element - 1); if (jsonValue != null) { return ValueJson.fromJson(jsonValue); } } } } return ValueNull.INSTANCE; } @Override public Expression optimize(SessionLocal session) { left = left.optimize(session); right = right.optimize(session); TypeInfo leftType = left.getType(); switch (leftType.getValueType()) { case Value.NULL: return ValueExpression.NULL; case Value.JSON: type = TypeInfo.TYPE_JSON; if (left.isConstant() && right.isConstant()) { return TypedValueExpression.getTypedIfNull(getValue(session), type); } break; case Value.ARRAY: type = (TypeInfo) leftType.getExtTypeInfo(); if (left.isConstant() && right.isConstant()) { return TypedValueExpression.get(getValue(session), type); } break; default: throw Store.getInvalidExpressionTypeException("Array", left); } return this; } }
Detected license expression

      
    
Detected license expression (SPDX)

      
    
Percentage of license text
3.99
Copyrights
- end_line: 2
  copyright: Copyright 2004-2023 H2 Group. Multiple-Licensed
  start_line: 2
Holders
- holder: H2 Group. Multiple-Licensed
  end_line: 2
  start_line: 2
Authors

      
    
License expression License clue details
(mpl-2.0 OR epl-1.0) AND proprietary-license {'score': 20.37, 'matcher': '3-seq', 'end_line': 3, 'rule_url': 'https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/mpl-2.0_or_epl-1.0_and_proprietary-license_2.RULE', 'from_file': None, 'start_line': 2, 'matched_text': ' * Copyright 2004-2023 H2 Group. Multiple-Licensed under the MPL 2.0,\n * and the EPL 1.0 (https://h2database.com/html/license.html).', 'match_coverage': 20.37, 'matched_length': 11, 'rule_relevance': 100, 'rule_identifier': 'mpl-2.0_or_epl-1.0_and_proprietary-license_2.RULE', 'license_expression': '(mpl-2.0 OR epl-1.0) AND proprietary-license', 'license_expression_spdx': '(MPL-2.0 OR EPL-1.0) AND LicenseRef-scancode-proprietary-license'}
URL Start line End line
https://h2database.com/html/license.html 3 3
Package URL License Primary language
pkg:osgi/com.h2database.source@2.2.220