public void appendXmlComparison(SQLBuffer buf,
String op,
FilterValue lhs,
FilterValue rhs,
boolean lhsxml,
boolean rhsxml) {
super.appendXmlComparison(buf, op, lhs, rhs, lhsxml, rhsxml);
if (lhsxml && rhsxml)
appendXmlComparison2(buf, op, lhs, rhs);
else if (lhsxml)
appendXmlComparison1(buf, op, lhs, rhs);
else
appendXmlComparison1(buf, op, rhs, lhs);
}
If this dictionary supports XML type,
use this method to append xml predicate. |
public void connectedConfiguration(Connection conn) throws SQLException {
super.connectedConfiguration(conn);
DatabaseMetaData meta = conn.getMetaData();
String driverName = meta.getDriverName();
String url = meta.getURL();
if (driverVendor == null) {
if ("NetDirect JSQLConnect".equals(driverName))
driverVendor = VENDOR_NETDIRECT;
else if (driverName != null && driverName.startsWith("jTDS"))
driverVendor = VENDOR_JTDS;
else if ("SQLServer".equals(driverName)) {
if (url != null && url.startsWith("jdbc:microsoft:sqlserver:"))
driverVendor = VENDOR_MICROSOFT;
else if (url != null
&& url.startsWith("jdbc:datadirect:sqlserver:"))
driverVendor = VENDOR_DATADIRECT;
else
driverVendor = VENDOR_OTHER;
} else
driverVendor = VENDOR_OTHER;
if (driverName.indexOf(platform) != -1) {
String versionString = driverName.
substring(platform.length() + 1);
if (versionString.indexOf(" ") != -1)
versionString = versionString.substring(0,
versionString.indexOf(" "));
int version = Integer.parseInt(versionString);
if (version >= 2005)
supportsXMLColumn = true;
}
}
// warn about using cursors
if ((VENDOR_MICROSOFT.equalsIgnoreCase(driverVendor)
|| VENDOR_DATADIRECT.equalsIgnoreCase(driverVendor))
&& url.toLowerCase().indexOf("selectmethod=cursor") == -1)
log.warn(_loc.get("sqlserver-cursor", url));
// warn about prepared statement caching if using ms driver
String props = conf.getConnectionFactoryProperties();
if (props == null)
props = "";
if (VENDOR_MICROSOFT.equalsIgnoreCase(driverVendor)
&& props.toLowerCase().indexOf("maxcachedstatements=0") == -1)
log.warn(_loc.get("sqlserver-cachedstmnts"));
}
|
public Column[] getColumns(DatabaseMetaData meta,
String catalog,
String schemaName,
String tableName,
String columnName,
Connection conn) throws SQLException {
Column[] cols = super.getColumns(meta, catalog, schemaName, tableName,
columnName, conn);
// for opta driver, which reports nvarchar as unknown type
for (int i = 0; cols != null && i < cols.length; i++) {
String typeName = cols[i].getTypeName();
if (typeName == null)
continue;
typeName = typeName.toUpperCase();
if ("NVARCHAR".equals(typeName))
cols[i].setType(Types.VARCHAR);
else if ("UNIQUEIDENTIFIER".equals(typeName)) {
if (uniqueIdentifierAsVarbinary)
cols[i].setType(Types.VARBINARY);
else
cols[i].setType(Types.VARCHAR);
} else if ("NCHAR".equals(typeName))
cols[i].setType(Types.CHAR);
else if ("NTEXT".equals(typeName))
cols[i].setType(Types.CLOB);
}
return cols;
}
|