/** Serialization constructor. */ QueryField(QueryEntity e, Map.Entry<String, String> nameAndTypeName) { name = nameAndTypeName.getKey(); typeName = nameAndTypeName.getValue(); Set<String> keys = e.getKeyFields(); Set<String> notNulls = e.getNotNullFields(); Map<String, Object> dflts = e.getDefaultFieldValues(); Map<String, Integer> fldsPrecision = e.getFieldsPrecision(); Map<String, Integer> fldsScale = e.getFieldsScale(); isKey = keys != null && keys.contains(name); isNotNull = notNulls != null && notNulls.contains(name); dfltVal = dflts == null ? null : dflts.get(name); precision = fldsPrecision == null ? -1 : fldsPrecision.getOrDefault(name, -1); scale = fldsScale == null? -1 : fldsScale.getOrDefault(name, -1); }
/** * Normalize cache query entities. * * @param entities Query entities. * @param cfg Cache config. * @return Normalized query entities. */ public static Collection<QueryEntity> normalizeQueryEntities(Collection<QueryEntity> entities, CacheConfiguration<?, ?> cfg) { Collection<QueryEntity> normalEntities = new ArrayList<>(entities.size()); for (QueryEntity entity : entities) { if (!F.isEmpty(entity.getNotNullFields())) checkNotNullAllowed(cfg); normalEntities.add(normalizeQueryEntity(entity, cfg.isSqlEscapeAll())); } return normalEntities; }
/** * Processes declarative metadata for binary object. * * @param qryEntity Declared metadata. * @param d Type descriptor. * @throws IgniteCheckedException If failed. */ public static void processClassMeta(QueryEntity qryEntity, QueryTypeDescriptorImpl d, CacheObjectContext coCtx) throws IgniteCheckedException { Set<String> notNulls = qryEntity.getNotNullFields(); for (Map.Entry<String, String> entry : qryEntity.getFields().entrySet()) { GridQueryProperty prop = buildProperty( d.keyClass(), d.valueClass(), d.keyFieldName(), d.valueFieldName(), entry.getKey(), U.classForName(entry.getValue(), Object.class), d.aliases(), notNulls != null && notNulls.contains(entry.getKey()), coCtx); d.addProperty(prop, false); } processIndexes(qryEntity, d); }
/** */ @Test public void testQueryEntityGetSetNotNullFields() throws Exception { QueryEntity qe = new QueryEntity(); assertNull(qe.getNotNullFields()); Set<String> val = Collections.singleton("test"); qe.setNotNullFields(val); assertEquals(val, Collections.singleton("test")); qe.setNotNullFields(null); assertNull(qe.getNotNullFields()); }
LinkedHashMap<String, String> fields = qryEntity.getFields(); Set<String> keyFields = qryEntity.getKeyFields(); Set<String> notNulls = qryEntity.getNotNullFields(); Map<String, Object> dlftVals = qryEntity.getDefaultFieldValues(); Map<String, Integer> precision = qryEntity.getFieldsPrecision();
Set<String> notNullFields = qryEntity.getNotNullFields(); Map<String, Object> defVals = qryEntity.getDefaultFieldValues(); Map<String, Integer> fieldsPrecision = qryEntity.getFieldsPrecision();
conflicts, "nullable of " + targetFieldName, contains(getNotNullFields(), targetFieldName), contains(target.getNotNullFields(), targetFieldName) ); targetFieldName, targetFieldType, !contains(target.getNotNullFields(),targetFieldName), getFromMap(target.getDefaultFieldValues(), targetFieldName), precision == null ? -1 : precision,
/** */ private void checkNodeState(IgniteEx node, String schemaName, String tableName, String fieldName) { String cacheName = F.eq(schemaName, QueryUtils.DFLT_SCHEMA) ? QueryUtils.createTableCacheName(schemaName, tableName) : schemaName; DynamicCacheDescriptor desc = node.context().cache().cacheDescriptor(cacheName); assertNotNull("Cache descriptor not found", desc); QuerySchema schema = desc.schema(); assertNotNull(schema); QueryEntity entity = null; for (QueryEntity e : schema.entities()) { if (F.eq(tableName, e.getTableName())) { entity = e; break; } } assertNotNull(entity); assertNotNull(entity.getNotNullFields()); assertTrue(entity.getNotNullFields().contains(fieldName)); }
templateName); if (!F.isEmpty(entity.getNotNullFields())) QueryUtils.checkNotNullAllowed(ccfg);
/** */ @Test public void testDynamicTableCreateNotNullFieldsAllowed() throws Exception { executeSql("CREATE TABLE test(id INT PRIMARY KEY, field INT NOT NULL)"); String cacheName = QueryUtils.createTableCacheName("PUBLIC", "TEST"); IgniteEx client = grid(NODE_CLIENT); CacheConfiguration ccfg = client.context().cache().cache(cacheName).configuration(); QueryEntity qe = (QueryEntity)F.first(ccfg.getQueryEntities()); assertEquals(Collections.singleton("FIELD"), qe.getNotNullFields()); checkState("PUBLIC", "TEST", "FIELD"); }
normalEntity.setKeyFieldName(entity.getKeyFieldName()); normalEntity.setValueFieldName(entity.getValueFieldName()); normalEntity.setNotNullFields(entity.getNotNullFields()); normalEntity.setDefaultFieldValues(entity.getDefaultFieldValues()); normalEntity.setFieldsPrecision(entity.getFieldsPrecision());
/** Serialization constructor. */ QueryField(QueryEntity e, Map.Entry<String, String> nameAndTypeName) { name = nameAndTypeName.getKey(); typeName = nameAndTypeName.getValue(); Set<String> keys = e.getKeyFields(); Set<String> notNulls = e.getNotNullFields(); Map<String, Object> dflts = e.getDefaultFieldValues(); Map<String, Integer> fldsPrecision = e.getFieldsPrecision(); Map<String, Integer> fldsScale = e.getFieldsScale(); isKey = keys != null && keys.contains(name); isNotNull = notNulls != null && notNulls.contains(name); dfltVal = dflts == null ? null : dflts.get(name); precision = fldsPrecision == null ? -1 : fldsPrecision.getOrDefault(name, -1); scale = fldsScale == null? -1 : fldsScale.getOrDefault(name, -1); }
/** * Normalize cache query entities. * * @param entities Query entities. * @param cfg Cache config. * @return Normalized query entities. */ public static Collection<QueryEntity> normalizeQueryEntities(Collection<QueryEntity> entities, CacheConfiguration<?, ?> cfg) { Collection<QueryEntity> normalEntities = new ArrayList<>(entities.size()); for (QueryEntity entity : entities) { if (!F.isEmpty(entity.getNotNullFields())) checkNotNullAllowed(cfg); normalEntities.add(normalizeQueryEntity(entity, cfg.isSqlEscapeAll())); } return normalEntities; }
/** * Processes declarative metadata for binary object. * * @param qryEntity Declared metadata. * @param d Type descriptor. * @throws IgniteCheckedException If failed. */ public static void processClassMeta(QueryEntity qryEntity, QueryTypeDescriptorImpl d, CacheObjectContext coCtx) throws IgniteCheckedException { Set<String> notNulls = qryEntity.getNotNullFields(); for (Map.Entry<String, String> entry : qryEntity.getFields().entrySet()) { GridQueryProperty prop = buildProperty( d.keyClass(), d.valueClass(), d.keyFieldName(), d.valueFieldName(), entry.getKey(), U.classForName(entry.getValue(), Object.class), d.aliases(), notNulls != null && notNulls.contains(entry.getKey()), coCtx); d.addProperty(prop, false); } processIndexes(qryEntity, d); }
LinkedHashMap<String, String> fields = qryEntity.getFields(); Set<String> keyFields = qryEntity.getKeyFields(); Set<String> notNulls = qryEntity.getNotNullFields(); Map<String, Object> dlftVals = qryEntity.getDefaultFieldValues(); Map<String, Integer> precision = qryEntity.getFieldsPrecision();
Set<String> notNullFields = qryEntity.getNotNullFields(); Map<String, Object> defVals = qryEntity.getDefaultFieldValues(); Map<String, Integer> fieldsPrecision = qryEntity.getFieldsPrecision();
conflicts, "nullable of " + targetFieldName, contains(getNotNullFields(), targetFieldName), contains(target.getNotNullFields(), targetFieldName) ); targetFieldName, targetFieldType, !contains(target.getNotNullFields(),targetFieldName), getFromMap(target.getDefaultFieldValues(), targetFieldName), precision == null ? -1 : precision,
templateName); if (!F.isEmpty(entity.getNotNullFields())) QueryUtils.checkNotNullAllowed(ccfg);
normalEntity.setKeyFieldName(entity.getKeyFieldName()); normalEntity.setValueFieldName(entity.getValueFieldName()); normalEntity.setNotNullFields(entity.getNotNullFields()); normalEntity.setDefaultFieldValues(entity.getDefaultFieldValues()); normalEntity.setFieldsPrecision(entity.getFieldsPrecision());