private String buildInsertSql()

in adb3client/src/main/java/com/alibaba/cloud/analyticdb/adb3client/impl/UpsertStatementBuilder.java [94:138]


	private String buildInsertSql(Tuple3<TableSchema, TableName, WriteMode> tuple, Tuple<BitSet, BitSet> input) {
		TableSchema schema = tuple.l;
		TableName tableName = tuple.m;
		WriteMode mode = tuple.r;
		BitSet set = input.l;
		BitSet onlyInsertSet = input.r;
		StringBuilder sb = new StringBuilder();
		if (WriteMode.INSERT_OR_IGNORE == mode) {
			sb.append("insert ignore into ").append(tableName.getFullName());
		} else if (WriteMode.INSERT_OR_REPLACE == mode) {
			sb.append("replace into ").append(tableName.getFullName());
		} else {
			sb.append("insert into ").append(tableName.getFullName());
		}

		sb.append("(");
		first = true;
		set.stream().forEach((index) -> {
			if (!first) {
				sb.append(",");
			}
			first = false;
			sb.append(IdentifierUtil.quoteIdentifier(schema.getColumn(index).getName()));
		});
		sb.append(")");

		sb.append(" values ");
		sb.append("(");
		first = true;
		set.stream().forEach((index) -> {
			if (!first) {
				sb.append(",");
			}
			first = false;
			sb.append("?");
			Column column = schema.getColumn(index);
			if (Types.BIT == column.getType() && "bit".equals(column.getTypeName())) {
				sb.append("::bit(").append(column.getPrecision()).append(")");
			} else if (Types.OTHER == column.getType() && "varbit".equals(column.getTypeName())) {
				sb.append("::bit varying(").append(column.getPrecision()).append(")");
			}
		});
		sb.append(")");
		return sb.toString();
	}