Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitf9d3ed6

Browse files
author
Dave Cramer
committed
metadata encoding patch from Kris Jurka
1 parent42610b1 commitf9d3ed6

File tree

1 file changed

+65
-56
lines changed

1 file changed

+65
-56
lines changed

‎src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java

Lines changed: 65 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
importjava.util.*;
66
importorg.postgresql.core.BaseStatement;
77
importorg.postgresql.core.Field;
8+
importorg.postgresql.core.Encoding;
89
importorg.postgresql.util.PSQLException;
910
importorg.postgresql.util.PSQLState;
1011
importorg.postgresql.Driver;
@@ -22,6 +23,7 @@ public abstract class AbstractJdbc1DatabaseMetaData
2223
"vacuum,verbose,version";
2324

2425
protectedAbstractJdbc1Connectionconnection;// The connection association
26+
protectedEncodingencoding;
2527

2628
// These define various OID's. Hopefully they will stay constant.
2729
protectedstaticfinalintiVarcharOid =1043;// OID for varchar
@@ -73,6 +75,13 @@ protected int getMaxNameLength() throws SQLException {
7375
publicAbstractJdbc1DatabaseMetaData(AbstractJdbc1Connectionconn)
7476
{
7577
this.connection =conn;
78+
try {
79+
this.encoding =conn.getEncoding();
80+
}
81+
catch (SQLExceptionsqle) {
82+
this.encoding =Encoding.defaultEncoding();
83+
}
84+
7685
}
7786

7887
/*
@@ -1858,15 +1867,15 @@ public java.sql.ResultSet getProcedureColumns(String catalog, String schemaPatte
18581867
tuple[0] =null;
18591868
tuple[1] =schema;
18601869
tuple[2] =procedureName;
1861-
tuple[3] ="returnValue".getBytes();
1862-
tuple[4] =Integer.toString(java.sql.DatabaseMetaData.procedureColumnReturn).getBytes();
1863-
tuple[5] =Integer.toString(connection.getSQLType(returnType)).getBytes();
1864-
tuple[6] =connection.getPGType(returnType).getBytes();
1870+
tuple[3] =encoding.encode("returnValue");
1871+
tuple[4] =encoding.encode(Integer.toString(java.sql.DatabaseMetaData.procedureColumnReturn));
1872+
tuple[5] =encoding.encode(Integer.toString(connection.getSQLType(returnType)));
1873+
tuple[6] =encoding.encode(connection.getPGType(returnType));
18651874
tuple[7] =null;
18661875
tuple[8] =null;
18671876
tuple[9] =null;
18681877
tuple[10] =null;
1869-
tuple[11] =Integer.toString(java.sql.DatabaseMetaData.procedureNullableUnknown).getBytes();
1878+
tuple[11] =encoding.encode(Integer.toString(java.sql.DatabaseMetaData.procedureNullableUnknown));
18701879
tuple[12] =null;
18711880
v.addElement(tuple);
18721881
}
@@ -1878,15 +1887,15 @@ public java.sql.ResultSet getProcedureColumns(String catalog, String schemaPatte
18781887
tuple[0] =null;
18791888
tuple[1] =schema;
18801889
tuple[2] =procedureName;
1881-
tuple[3] = ("$"+(i+1)).getBytes();
1882-
tuple[4] =Integer.toString(java.sql.DatabaseMetaData.procedureColumnIn).getBytes();
1883-
tuple[5] =Integer.toString(connection.getSQLType(argOid)).getBytes();
1884-
tuple[6] =connection.getPGType(argOid).getBytes();
1890+
tuple[3] =encoding.encode("$"+(i+1));
1891+
tuple[4] =encoding.encode(Integer.toString(java.sql.DatabaseMetaData.procedureColumnIn));
1892+
tuple[5] =encoding.encode(Integer.toString(connection.getSQLType(argOid)));
1893+
tuple[6] =encoding.encode(connection.getPGType(argOid));
18851894
tuple[7] =null;
18861895
tuple[8] =null;
18871896
tuple[9] =null;
18881897
tuple[10] =null;
1889-
tuple[11] =Integer.toString(java.sql.DatabaseMetaData.procedureNullableUnknown).getBytes();
1898+
tuple[11] =encoding.encode(Integer.toString(java.sql.DatabaseMetaData.procedureNullableUnknown));
18901899
tuple[12] =null;
18911900
v.addElement(tuple);
18921901
}
@@ -1901,15 +1910,15 @@ public java.sql.ResultSet getProcedureColumns(String catalog, String schemaPatte
19011910
tuple[0] =null;
19021911
tuple[1] =schema;
19031912
tuple[2] =procedureName;
1904-
tuple[3] =columnrs.getString("attname").getBytes();
1905-
tuple[4] =Integer.toString(java.sql.DatabaseMetaData.procedureColumnResult).getBytes();
1906-
tuple[5] =Integer.toString(connection.getSQLType(columnTypeOid)).getBytes();
1907-
tuple[6] =connection.getPGType(columnTypeOid).getBytes();
1913+
tuple[3] =columnrs.getBytes("attname");
1914+
tuple[4] =encoding.encode(Integer.toString(java.sql.DatabaseMetaData.procedureColumnResult));
1915+
tuple[5] =encoding.encode(Integer.toString(connection.getSQLType(columnTypeOid)));
1916+
tuple[6] =encoding.encode(connection.getPGType(columnTypeOid));
19081917
tuple[7] =null;
19091918
tuple[8] =null;
19101919
tuple[9] =null;
19111920
tuple[10] =null;
1912-
tuple[11] =Integer.toString(java.sql.DatabaseMetaData.procedureNullableUnknown).getBytes();
1921+
tuple[11] =encoding.encode(Integer.toString(java.sql.DatabaseMetaData.procedureNullableUnknown));
19131922
tuple[12] =null;
19141923
v.addElement(tuple);
19151924
}
@@ -2205,7 +2214,7 @@ public java.sql.ResultSet getTableTypes() throws SQLException
22052214
for (i=0;i <types.length;i++)
22062215
{
22072216
byte[][]tuple =newbyte[1][];
2208-
tuple[0] =types[i].getBytes();
2217+
tuple[0] =encoding.encode(types[i]);
22092218
v.addElement(tuple);
22102219
}
22112220

@@ -2338,46 +2347,46 @@ public java.sql.ResultSet getColumns(String catalog, String schemaPattern, Strin
23382347
tuple[1] =rs.getBytes("nspname");// Schema
23392348
tuple[2] =rs.getBytes("relname");// Table name
23402349
tuple[3] =rs.getBytes("attname");// Column name
2341-
tuple[4] =Integer.toString(connection.getSQLType(typeOid)).getBytes();
2350+
tuple[4] =encoding.encode(Integer.toString(connection.getSQLType(typeOid)));
23422351
StringpgType =connection.getPGType(typeOid);
2343-
tuple[5] =pgType.getBytes();// Type name
2352+
tuple[5] =encoding.encode(pgType);// Type name
23442353

23452354
// by default no decimal_digits
23462355
// if the type is numeric or decimal we will
23472356
// overwrite later.
2348-
tuple[8] ="0".getBytes();
2357+
tuple[8] =encoding.encode("0");
23492358

23502359
if (pgType.equals("bpchar") ||pgType.equals("varchar"))
23512360
{
23522361
intatttypmod =rs.getInt("atttypmod");
2353-
tuple[6] =Integer.toString(atttypmod != -1 ?atttypmod -VARHDRSZ :0).getBytes();
2362+
tuple[6] =encoding.encode(Integer.toString(atttypmod != -1 ?atttypmod -VARHDRSZ :0));
23542363
}
23552364
elseif (pgType.equals("numeric") ||pgType.equals("decimal"))
23562365
{
23572366
intattypmod =rs.getInt("atttypmod") -VARHDRSZ;
2358-
tuple[6] =Integer.toString( (attypmod >>16 ) &0xffff ).getBytes();
2359-
tuple[8] =Integer.toString(attypmod &0xffff).getBytes();
2360-
tuple[9] ="10".getBytes();
2367+
tuple[6] =encoding.encode(Integer.toString( (attypmod >>16 ) &0xffff ));
2368+
tuple[8] =encoding.encode(Integer.toString(attypmod &0xffff));
2369+
tuple[9] =encoding.encode("10");
23612370
}
23622371
elseif (pgType.equals("bit") ||pgType.equals("varbit")) {
23632372
tuple[6] =rs.getBytes("atttypmod");
2364-
tuple[9] ="2".getBytes();
2373+
tuple[9] =encoding.encode("2");
23652374
}
23662375
else {
23672376
tuple[6] =rs.getBytes("attlen");
2368-
tuple[9] ="10".getBytes();
2377+
tuple[9] =encoding.encode("10");
23692378
}
23702379

23712380
tuple[7] =null;// Buffer length
23722381

2373-
tuple[10] =Integer.toString(rs.getBoolean("attnotnull") ?java.sql.DatabaseMetaData.columnNoNulls :java.sql.DatabaseMetaData.columnNullable).getBytes();// Nullable
2382+
tuple[10] =encoding.encode(Integer.toString(rs.getBoolean("attnotnull") ?java.sql.DatabaseMetaData.columnNoNulls :java.sql.DatabaseMetaData.columnNullable));// Nullable
23742383
tuple[11] =rs.getBytes("description");// Description (if any)
23752384
tuple[12] =rs.getBytes("adsrc");// Column default
23762385
tuple[13] =null;// sql data type (unused)
23772386
tuple[14] =null;// sql datetime sub (unused)
23782387
tuple[15] =tuple[6];// char octet length
23792388
tuple[16] =rs.getBytes("attnum");// ordinal position
2380-
tuple[17] = (rs.getBoolean("attnotnull") ?"NO" :"YES").getBytes();// Is nullable
2389+
tuple[17] =encoding.encode(rs.getBoolean("attnotnull") ?"NO" :"YES");// Is nullable
23812390

23822391
v.addElement(tuple);
23832392
}
@@ -2476,7 +2485,7 @@ public java.sql.ResultSet getColumnPrivileges(String catalog, String schema, Str
24762485
}
24772486
sortStringArray(permNames);
24782487
for (i=0;i<permNames.length;i++) {
2479-
byte[]privilege =permNames[i].getBytes();
2488+
byte[]privilege =encoding.encode(permNames[i]);
24802489
Vectorgrantees = (Vector)permissions.get(permNames[i]);
24812490
for (intj=0;j<grantees.size();j++) {
24822491
Stringgrantee = (String)grantees.elementAt(j);
@@ -2486,10 +2495,10 @@ public java.sql.ResultSet getColumnPrivileges(String catalog, String schema, Str
24862495
tuple[1] =schemaName;
24872496
tuple[2] =tableName;
24882497
tuple[3] =column;
2489-
tuple[4] =owner.getBytes();
2490-
tuple[5] =grantee.getBytes();
2498+
tuple[4] =encoding.encode(owner);
2499+
tuple[5] =encoding.encode(grantee);
24912500
tuple[6] =privilege;
2492-
tuple[7] =grantable.getBytes();
2501+
tuple[7] =encoding.encode(grantable);
24932502
v.addElement(tuple);
24942503
}
24952504
}
@@ -2579,7 +2588,7 @@ public java.sql.ResultSet getTablePrivileges(String catalog, String schemaPatter
25792588
}
25802589
sortStringArray(permNames);
25812590
for (i=0;i<permNames.length;i++) {
2582-
byte[]privilege =permNames[i].getBytes();
2591+
byte[]privilege =encoding.encode(permNames[i]);
25832592
Vectorgrantees = (Vector)permissions.get(permNames[i]);
25842593
for (intj=0;j<grantees.size();j++) {
25852594
Stringgrantee = (String)grantees.elementAt(j);
@@ -2588,10 +2597,10 @@ public java.sql.ResultSet getTablePrivileges(String catalog, String schemaPatter
25882597
tuple[0] =null;
25892598
tuple[1] =schema;
25902599
tuple[2] =table;
2591-
tuple[3] =owner.getBytes();
2592-
tuple[4] =grantee.getBytes();
2600+
tuple[3] =encoding.encode(owner);
2601+
tuple[4] =encoding.encode(grantee);
25932602
tuple[5] =privilege;
2594-
tuple[6] =grantable.getBytes();
2603+
tuple[6] =encoding.encode(grantable);
25952604
v.addElement(tuple);
25962605
}
25972606
}
@@ -2785,14 +2794,14 @@ public java.sql.ResultSet getBestRowIdentifier(String catalog, String schema, St
27852794
while (rs.next()) {
27862795
bytetuple[][] =newbyte[8][];
27872796
intcolumnTypeOid =rs.getInt("atttypid");
2788-
tuple[0] =Integer.toString(scope).getBytes();
2797+
tuple[0] =encoding.encode(Integer.toString(scope));
27892798
tuple[1] =rs.getBytes("attname");
2790-
tuple[2] =Integer.toString(connection.getSQLType(columnTypeOid)).getBytes();
2791-
tuple[3] =connection.getPGType(columnTypeOid).getBytes();
2799+
tuple[2] =encoding.encode(Integer.toString(connection.getSQLType(columnTypeOid)));
2800+
tuple[3] =encoding.encode(connection.getPGType(columnTypeOid));
27922801
tuple[4] =null;
27932802
tuple[5] =null;
27942803
tuple[6] =null;
2795-
tuple[7] =Integer.toString(java.sql.DatabaseMetaData.bestRowNotPseudo).getBytes();
2804+
tuple[7] =encoding.encode(Integer.toString(java.sql.DatabaseMetaData.bestRowNotPseudo));
27962805
v.addElement(tuple);
27972806
}
27982807

@@ -2854,13 +2863,13 @@ public java.sql.ResultSet getVersionColumns(String catalog, String schema, Strin
28542863
*/
28552864

28562865
tuple[0] =null;
2857-
tuple[1] ="ctid".getBytes();
2858-
tuple[2] =Integer.toString(connection.getSQLType("tid")).getBytes();
2859-
tuple[3] ="tid".getBytes();
2866+
tuple[1] =encoding.encode("ctid");
2867+
tuple[2] =encoding.encode(Integer.toString(connection.getSQLType("tid")));
2868+
tuple[3] =encoding.encode("tid");
28602869
tuple[4] =null;
28612870
tuple[5] =null;
28622871
tuple[6] =null;
2863-
tuple[7] =Integer.toString(java.sql.DatabaseMetaData.versionColumnPseudo).getBytes();
2872+
tuple[7] =encoding.encode(Integer.toString(java.sql.DatabaseMetaData.versionColumnPseudo));
28642873
v.addElement(tuple);
28652874

28662875
/* Perhaps we should check that the given
@@ -3157,7 +3166,7 @@ else if ("setdefault".equals(rule))
31573166
elseif ("restrict".equals(rule))
31583167
action =java.sql.DatabaseMetaData.importedKeyRestrict;
31593168

3160-
tuple[9] =Integer.toString(action).getBytes();
3169+
tuple[9] =encoding.encode(Integer.toString(action));
31613170

31623171
}
31633172

@@ -3177,7 +3186,7 @@ else if ("setdefault".equals(rule))
31773186
action =java.sql.DatabaseMetaData.importedKeySetDefault;
31783187
elseif ("restrict".equals(rule))
31793188
action =java.sql.DatabaseMetaData.importedKeyRestrict;
3180-
tuple[10] =Integer.toString(action).getBytes();
3189+
tuple[10] =encoding.encode(Integer.toString(action));
31813190
}
31823191

31833192

@@ -3217,11 +3226,11 @@ else if ("restrict".equals(rule))
32173226
pkeyColumn = (String)tokens.elementAt(element);
32183227
}
32193228

3220-
tuple[3] =pkeyColumn.getBytes();//PKCOLUMN_NAME
3221-
tuple[7] =fkeyColumn.getBytes();//FKCOLUMN_NAME
3229+
tuple[3] =encoding.encode(pkeyColumn);//PKCOLUMN_NAME
3230+
tuple[7] =encoding.encode(fkeyColumn);//FKCOLUMN_NAME
32223231

32233232
tuple[8] =rs.getBytes(6);//KEY_SEQ
3224-
tuple[11] =fkName.getBytes();//FK_NAME this will give us a unique name for the foreign key
3233+
tuple[11] =encoding.encode(fkName);//FK_NAME this will give us a unique name for the foreign key
32253234
tuple[12] =rs.getBytes(7);//PK_NAME
32263235

32273236
// DEFERRABILITY
@@ -3235,7 +3244,7 @@ else if ("restrict".equals(rule))
32353244
else
32363245
deferrability =java.sql.DatabaseMetaData.importedKeyInitiallyImmediate;
32373246
}
3238-
tuple[13] =Integer.toString(deferrability).getBytes();
3247+
tuple[13] =encoding.encode(Integer.toString(deferrability));
32393248

32403249
tuples.addElement(tuple);
32413250
}
@@ -3498,18 +3507,18 @@ public java.sql.ResultSet getTypeInfo() throws SQLException
34983507
ResultSetrs =connection.createStatement().executeQuery(sql);
34993508
// cache some results, this will keep memory useage down, and speed
35003509
// things up a little.
3501-
byteb9[] ="9".getBytes();
3502-
byteb10[] ="10".getBytes();
3503-
bytebf[] ="f".getBytes();
3504-
bytebnn[] =Integer.toString(java.sql.DatabaseMetaData.typeNoNulls).getBytes();
3505-
bytebts[] =Integer.toString(java.sql.DatabaseMetaData.typeSearchable).getBytes();
3510+
byteb9[] =encoding.encode("9");
3511+
byteb10[] =encoding.encode("10");
3512+
bytebf[] =encoding.encode("f");
3513+
bytebnn[] =encoding.encode(Integer.toString(java.sql.DatabaseMetaData.typeNoNulls));
3514+
bytebts[] =encoding.encode(Integer.toString(java.sql.DatabaseMetaData.typeSearchable));
35063515

35073516
while (rs.next())
35083517
{
35093518
byte[][]tuple =newbyte[18][];
35103519
Stringtypname =rs.getString(1);
3511-
tuple[0] =typname.getBytes();
3512-
tuple[1] =Integer.toString(connection.getSQLType(typname)).getBytes();
3520+
tuple[0] =encoding.encode(typname);
3521+
tuple[1] =encoding.encode(Integer.toString(connection.getSQLType(typname)));
35133522
tuple[2] =b9;// for now
35143523
tuple[6] =bnn;// for now
35153524
tuple[7] =bf;// false for now - not case sensitive

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp