// ============================================================================ // // Copyright (C) 2006-2016 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package org.talend.dq.dbms; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import org.talend.core.model.metadata.builder.connection.DatabaseConnection; import org.talend.utils.ProductVersion; /** * DOC xqliu class global comment. Detailled comment */ public class IngresDbmsLanguage extends DbmsLanguage { /** * DOC xqliu IngresDbmsLanguage constructor comment. */ IngresDbmsLanguage() { super(DbmsLanguage.INGRES); } /** * DOC xqliu IngresDbmsLanguage constructor comment. * * @param dbmsType * @param dbVersion */ IngresDbmsLanguage(String dbmsType, ProductVersion dbVersion) { super(dbmsType, dbVersion); } @Override public String toQualifiedName(String catalog, String schema, String table) { return super.toQualifiedName(null, null, table); } /** * DOC yyi 2011-07-07 22246:view rows for average length for Oracle * * @return average length sql statement */ @Override public String getAverageLengthRows() { return "SELECT t.* FROM(" + "SELECT " + "CAST(SUM(LENGTH(<%=__COLUMN_NAMES__%>)) / (COUNT(<%=__COLUMN_NAMES__%>)*1.00)+0.99 as int) c, " + "CAST(SUM(LENGTH(<%=__COLUMN_NAMES__%>)) / (COUNT(<%=__COLUMN_NAMES__%>)*1.00) as int) f " + "FROM <%=__TABLE_NAME__%>) e, <%=__TABLE_NAME__%> t " + "where LENGTH(<%=__COLUMN_NAMES__%>) BETWEEN f AND c"; } /* * (non-Jsdoc) * * @see org.talend.dq.dbms.DbmsLanguage#getAverageLengthWithBlankRows() */ @Override public String getAverageLengthWithBlankRows() { String sql = "SELECT t.* FROM(SELECT CAST(SUM(LENGTH(" + trimIfBlank("<%=__COLUMN_NAMES__%>") + ")) / (COUNT(<%=__COLUMN_NAMES__%> )*1.00)+0.99 as int) c," + "CAST(SUM(LENGTH(" + trimIfBlank("<%=__COLUMN_NAMES__%>") + ")) / (COUNT(<%=__COLUMN_NAMES__%>)*1.00) as int) f " + "FROM <%=__TABLE_NAME__%> WHERE(<%=__COLUMN_NAMES__%> IS NOT NULL)) e, <%=__TABLE_NAME__%> t " + "WHERE LENGTH(" + trimIfBlank("<%=__COLUMN_NAMES__%>") + ") BETWEEN f AND c"; return sql; } /* * (non-Jsdoc) * * @see org.talend.dq.dbms.DbmsLanguage#getAverageLengthWithNullRows() */ @Override public String getAverageLengthWithNullRows() { String whereExp = "WHERE(<%=__COLUMN_NAMES__%> IS NULL OR " + isNotBlank("<%=__COLUMN_NAMES__%>") + ")"; String sql = "SELECT t.* FROM(SELECT " + "CAST(SUM(LENGTH(<%=__COLUMN_NAMES__%>)) / (COUNT(<%=__COLUMN_NAMES__%> )*1.00)+0.99 as int) c," + "CAST(SUM(LENGTH(<%=__COLUMN_NAMES__%>)) / (COUNT(<%=__COLUMN_NAMES__%>)*1.00) as int) f " + "FROM <%=__TABLE_NAME__%> " + whereExp + ") e, <%=__TABLE_NAME__%> t " + whereExp + "AND LENGTH(<%=__COLUMN_NAMES__%>) BETWEEN f AND c"; return sql; } /* * (non-Jsdoc) * * @see org.talend.dq.dbms.DbmsLanguage#getAverageLengthWithNullBlankRows() */ @Override public String getAverageLengthWithNullBlankRows() { String sql = "SELECT t.* FROM(SELECT CAST(SUM(LENGTH(" + trimIfBlank("<%=__COLUMN_NAMES__%>") + ")) / (COUNT(*)*1.00)+0.99 as int) c," + "CAST(SUM(LENGTH(" + trimIfBlank("<%=__COLUMN_NAMES__%>") + ")) / (COUNT(*)*1.00) as int) f " + "FROM <%=__TABLE_NAME__%> ) e, <%=__TABLE_NAME__%> t " + "WHERE LENGTH(" + trimIfBlank("<%=__COLUMN_NAMES__%>") + ") BETWEEN f AND c"; return sql; } /* * (non-Javadoc) * * @see org.talend.dq.dbms.DbmsLanguage#charLength(java.lang.String) */ @Override public String charLength(String columnName) { return " LENGTH(" + columnName + ") "; //$NON-NLS-1$ //$NON-NLS-2$ } /* * Added yyin 20121214 TDQ-6571 * * @see org.talend.cwm.management.api.DbmsLanguage#getTopNQuery(java.lang.String, int) */ @Override public String getTopNQuery(String query, int n) { return query.replaceFirst("SELECT", "SELECT FIRST " + n); //$NON-NLS-1$ //$NON-NLS-2$ } /* * (non-Javadoc) * * @see org.talend.dq.dbms.DbmsLanguage#getCatalogNameFromContext(org.talend.core.model.metadata.builder.connection. * DatabaseConnection) */ @Override public String getCatalogNameFromContext(DatabaseConnection dbConn) { return null; } /* * (non-Javadoc) * * @see org.talend.dq.dbms.DbmsLanguage#createStatement(java.sql.Connection, int) */ @Override public Statement createStatement(Connection connection, int fetchSize) throws SQLException { return createStatement(connection); } }