/** * Create a qualified sequence, given its sequence name. * <p> * This constructs a sequence reference given the sequence's qualified name. * jOOQ will render the sequence name according to your * {@link Settings#getRenderNameStyle()} settings. Choose * {@link RenderNameStyle#QUOTED} to prevent syntax errors and/or SQL * injection. * <p> * Example: <code><pre> * // This sequence... * sequence(name("MY_SCHEMA", "MY_SEQUENCE")); * * // ... will render this SQL on SQL Server with RenderNameStyle.QUOTED set * [MY_SCHEMA].[MY_SEQUENCE] * </pre></code> */ @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, POSTGRES }) public static <T extends Number> Sequence<T> sequence(Name name, DataType<T> type) { if (name == null) throw new NullPointerException(); if (name.getName().length < 1 || name.getName().length > 2) throw new IllegalArgumentException("Must provide a qualified name of length 1 or 2 : " + name); String n = name.getName()[name.getName().length - 1]; Schema s = name.getName().length == 2 ? schema(name(name.getName()[0])) : null; return new SequenceImpl<T>(n, s, type); }
@Override public final String getName() { return name.last(); } }
protected Map<String, Field<Object>> createPropertyToField() { Map<String, Field<Object>> propertyToField = new HashMap<>(propertyTypeMap.size() + propertiesMap.size()); for (Entry<String, Integer> e : propertyTypeMap.entrySet()) { String property = e.getKey(); propertyToField.put(property, DSL.field(this.tableAlias.append(property))); } for (Entry<String, IntStringPair> e : propertiesMap.entrySet()) { String name = e.getValue().getValue(); propertyToField.put(e.getKey(), DSL.field(DSL.name(name.split("\\.")))); } return propertyToField; }
protected static final <D extends Definition> D getDefinition(List<D> definitions, Name name, boolean ignoreCase) { for (D definition : definitions) { if ((ignoreCase && definition.getQualifiedNamePart().equalsIgnoreCase(name)) || (!ignoreCase && definition.getQualifiedNamePart().equals(name))) { return definition; } } return null; }
private static final Field<?> parseFieldNameOrSequenceExpression(ParserContext ctx) { Name name = parseName(ctx); if (name.qualified()) { String last = name.last(); if ("NEXTVAL".equalsIgnoreCase(last)) return sequence(name.qualifier()).nextval(); else if ("CURRVAL".equalsIgnoreCase(last)) return sequence(name.qualifier()).currval(); } if (ctx.dsl.settings().getParseUnknownFunctions() == ParseUnknownFunctions.IGNORE && parseIf(ctx, '(')) { List<Field<?>> arguments = new ArrayList<Field<?>>(); if (!parseIf(ctx, ')')) { do { arguments.add(parseField(ctx)); } while (parseIf(ctx, ',')); parse(ctx, ')'); } return function(name, Object.class, arguments.toArray(EMPTY_FIELD)); } else { return field(name); } }
private final Name generatedName() { Name t = table.getQualifiedName(); StringBuilder sb = new StringBuilder(table.getName()); for (SortField<?> f : sortFields) sb.append('_').append(f.getName()); sb.append("_idx"); if (t.qualified()) return t.qualifier().append(sb.toString()); else return name(sb.toString()); }
private static final Name[] nonEmpty(Name[] names) { Name[] result; int nulls = 0; for (int i = 0; i < names.length; i++) if (names[i] == null || names[i].equals(NO_NAME)) nulls++; if (nulls > 0) { result = new Name[names.length - nulls]; for (int i = names.length - 1; i >= 0; i--) if (names[i] == null || names[i].equals(NO_NAME)) nulls--; else result[i - nulls] = names[i]; } else { result = names; } return result; }
public boolean equals(Name otherName) { return (otherName.equalsIgnoreCase(this)); }
@Override public final Name append(Name name) { Name[] p1 = parts(); Name[] p2 = name.parts(); Name[] array = new Name[p1.length + p2.length]; System.arraycopy(p1, 0, array, 0, p1.length); System.arraycopy(p2, 0, array, p1.length, p2.length); return new QualifiedName(array); }
private static final List<WindowDefinition> parseWindowDefinitions(ParserContext ctx) { List<WindowDefinition> result = new ArrayList<WindowDefinition>(); do { Name name = parseIdentifier(ctx); parseKeyword(ctx, "AS"); parse(ctx, '('); result.add(name.as(parseWindowSpecificationIf(ctx, true))); parse(ctx, ')'); } while (parseIf(ctx, ',')); return result; }
@Override public boolean equals(Object that) { if (this == that) return true; if (that == null) return false; // [#2144] Non-equality can be decided early, without executing the // rather expensive implementation of AbstractQueryPart.equals() if (that instanceof AbstractNamed) if (!name.equals(((AbstractNamed) that).name)) return false; return super.equals(that); }
CommonTableExpression<Record4<Integer, String, BigDecimal, String>> project_info = name("project_info") .fields("project_pid", "project_name", "monthly_cost", "company_name") .as(select(PROJECT.PID, PROJECT.NAME, EMPLOYEE.SALARY, COMPANY.NAME) .from(PROJECT) .fields("project_pid", "total_cost") .as(select(project_info.field("project_pid", Integer.class), sum(monthly_cost)) .from(project_info)
public boolean equals(Name otherName){ return (otherName.equalsIgnoreCase(this)); }
static final <T> Field<T> qualify(Table<?> table, Field<T> field) { Field<T> result = table.field(field); if (result != null) return result; Name[] part = table.getQualifiedName().parts(); Name[] name = new Name[part.length + 1]; System.arraycopy(part, 0, name, 0, part.length); name[part.length] = field.getUnqualifiedName(); return DSL.field(DSL.name(name), field.getDataType()); }