提交 6541cb14 authored 作者: Thomas Mueller's avatar Thomas Mueller

--no commit message

--no commit message
上级 42715ee9
...@@ -74,6 +74,9 @@ public class LocalResult implements ResultInterface { ...@@ -74,6 +74,9 @@ public class LocalResult implements ResultInterface {
} }
public LocalResult createShallowCopy(Session session) { public LocalResult createShallowCopy(Session session) {
if(disk == null && rows == null || rows.size() < rowCount) {
return null;
}
LocalResult copy = new LocalResult(0); LocalResult copy = new LocalResult(0);
copy.maxMemoryRows = this.maxMemoryRows; copy.maxMemoryRows = this.maxMemoryRows;
copy.session = session; copy.session = session;
......
...@@ -23,6 +23,7 @@ public class ResultRemote implements ResultInterface { ...@@ -23,6 +23,7 @@ public class ResultRemote implements ResultInterface {
private Value[] currentRow; private Value[] currentRow;
private int rowId, rowCount; private int rowId, rowCount;
private ObjectArray result; private ObjectArray result;
private ObjectArray lobValues;
private boolean isUpdateCount; private boolean isUpdateCount;
private int updateCount; private int updateCount;
...@@ -178,6 +179,17 @@ public class ResultRemote implements ResultInterface { ...@@ -178,6 +179,17 @@ public class ResultRemote implements ResultInterface {
public void close() { public void close() {
result = null; result = null;
sendClose(); sendClose();
if(lobValues != null) {
for(int i=0; i<lobValues.size(); i++) {
Value v = (Value) lobValues.get(i);
try {
v.close();
} catch(SQLException e) {
session.getTrace().error("delete lob " + v.getSQL(), e);
}
}
lobValues = null;
}
} }
// public void finalize() { // public void finalize() {
...@@ -209,7 +221,14 @@ public class ResultRemote implements ResultInterface { ...@@ -209,7 +221,14 @@ public class ResultRemote implements ResultInterface {
int len = columns.length; int len = columns.length;
Value[] values = new Value[len]; Value[] values = new Value[len];
for (int i = 0; i < len; i++) { for (int i = 0; i < len; i++) {
values[i] = transfer.readValue(); Value v = transfer.readValue();
values[i] = v;
if(v.isFileBased()) {
if(lobValues == null) {
lobValues = new ObjectArray();
}
lobValues.add(v);
}
} }
return values; return values;
} else { } else {
......
...@@ -37,9 +37,11 @@ public class WebServer implements Service { ...@@ -37,9 +37,11 @@ public class WebServer implements Service {
{ "es", "Espa\u00f1ol" }, { "es", "Espa\u00f1ol" },
{ "zh_CN", "\u4E2D\u6587"}, { "zh_CN", "\u4E2D\u6587"},
{ "ja", "\u65e5\u672c\u8a9e"}, { "ja", "\u65e5\u672c\u8a9e"},
{ "hu", "Magyar"},
{ "in", "Indonesia"}
}; };
// String lang = // String lang = new java.util.Locale("hu").getDisplayLanguage(new java.util.Locale("hu"));
// java.util.Locale.CHINESE.getDisplayLanguage( // java.util.Locale.CHINESE.getDisplayLanguage(
// java.util.Locale.CHINESE); // java.util.Locale.CHINESE);
// for(int i=0; i<lang.length(); i++) // for(int i=0; i<lang.length(); i++)
...@@ -181,7 +183,7 @@ public class WebServer implements Service { ...@@ -181,7 +183,7 @@ public class WebServer implements Service {
} }
void trace(String s) { void trace(String s) {
// System.out.println(s); // System.out.println(s);
} }
public boolean supportsLanguage(String language) { public boolean supportsLanguage(String language) {
......
...@@ -63,8 +63,8 @@ login.testConnection=Verbindung testen ...@@ -63,8 +63,8 @@ login.testConnection=Verbindung testen
login.testSuccessful=Test erfolgreich login.testSuccessful=Test erfolgreich
login.welcome=H2 Console login.welcome=H2 Console
result.1row=1 Datensatz result.1row=1 Datensatz
result.autocommitOff=Auto-Commit ist jetzt ausgeschaltet result.autoCommitOff=Auto-Commit ist jetzt ausgeschaltet
result.autocommitOn=Auto-Commit ist jetzt eingeschaltet result.autoCommitOn=Auto-Commit ist jetzt eingeschaltet
result.maxrowsSet=Maximale Anzahl Zeilen ist jetzt gesetzt result.maxrowsSet=Maximale Anzahl Zeilen ist jetzt gesetzt
result.noRows=keine Datens&auml;tze result.noRows=keine Datens&auml;tze
result.noRunningStatement=Im Moment wird kein Befehl ausgef&uuml;hrt result.noRunningStatement=Im Moment wird kein Befehl ausgef&uuml;hrt
...@@ -78,11 +78,11 @@ resultEdit.edit=Bearbeiten ...@@ -78,11 +78,11 @@ resultEdit.edit=Bearbeiten
resultEdit.editResult=Bearbeiten resultEdit.editResult=Bearbeiten
resultEdit.save=Speichern resultEdit.save=Speichern
toolbar.all=Alle toolbar.all=Alle
toolbar.autocommit=Auto-Commit toolbar.autoCommit=Auto-Commit
toolbar.autocomplete=Auto-Complete toolbar.autoComplete=Auto-Complete
toolbar.autocomplete.off=Aus toolbar.autoComplete.off=Aus
toolbar.autocomplete.normal=Normal toolbar.autoComplete.normal=Normal
toolbar.autocomplete.full=Alles toolbar.autoComplete.full=Alles
toolbar.cancelStatement=Laufenden Befehl abbrechen toolbar.cancelStatement=Laufenden Befehl abbrechen
toolbar.clear=Leeren toolbar.clear=Leeren
toolbar.commit=Commit (Abschliessen/Speichern) toolbar.commit=Commit (Abschliessen/Speichern)
......
...@@ -63,14 +63,14 @@ login.testConnection=Test Connection ...@@ -63,14 +63,14 @@ login.testConnection=Test Connection
login.testSuccessful=Test successful login.testSuccessful=Test successful
login.welcome=H2 Console login.welcome=H2 Console
result.1row=1 row result.1row=1 row
result.autocommitOff=Autocommit is now OFF result.autoCommitOff=Auto commit is now OFF
result.autocommitOn=Autocommit is now ON result.autoCommitOn=Auto commit is now ON
result.maxrowsSet=Max rowcount is set result.maxrowsSet=Max rowcount is set
result.noRows=no rows result.noRows=no rows
result.noRunningStatement=There is currently no running statement result.noRunningStatement=There is currently no running statement
result.rows=rows result.rows=rows
result.statementWasCancelled=The statement was cancelled result.statementWasCancelled=The statement was cancelled
result.updateCount=Update Count result.updateCount=Update count
resultEdit.add=Add resultEdit.add=Add
resultEdit.cancel=Cancel resultEdit.cancel=Cancel
resultEdit.delete=Delete resultEdit.delete=Delete
...@@ -78,17 +78,17 @@ resultEdit.edit=Edit ...@@ -78,17 +78,17 @@ resultEdit.edit=Edit
resultEdit.editResult=Edit resultEdit.editResult=Edit
resultEdit.save=Save resultEdit.save=Save
toolbar.all=All toolbar.all=All
toolbar.autocommit=Autocommit toolbar.autoCommit=Auto commit
toolbar.autocomplete=Auto-Complete toolbar.autoComplete=Auto complete
toolbar.autocomplete.off=Off toolbar.autoComplete.off=Off
toolbar.autocomplete.normal=Normal toolbar.autoComplete.normal=Normal
toolbar.autocomplete.full=Full toolbar.autoComplete.full=Full
toolbar.cancelStatement=Cancel the current statement toolbar.cancelStatement=Cancel the current statement
toolbar.clear=Clear toolbar.clear=Clear
toolbar.commit=Commit toolbar.commit=Commit
toolbar.disconnect=Disconnect toolbar.disconnect=Disconnect
toolbar.history=Command History toolbar.history=Command history
toolbar.maxRows=Max Rows toolbar.maxRows=Max rows
toolbar.refresh=Refresh toolbar.refresh=Refresh
toolbar.rollback=Rollback toolbar.rollback=Rollback
toolbar.run=Run (Ctrl+Enter) toolbar.run=Run (Ctrl+Enter)
...@@ -98,7 +98,7 @@ tree.current=Current value ...@@ -98,7 +98,7 @@ tree.current=Current value
tree.hashed=Hashed tree.hashed=Hashed
tree.increment=Increment tree.increment=Increment
tree.indexes=Indexes tree.indexes=Indexes
tree.nonUnique=Non-Unique tree.nonUnique=Non unique
tree.sequences=Sequences tree.sequences=Sequences
tree.unique=Unique tree.unique=Unique
tree.users=Users tree.users=Users
# Use the PropertiesToUTF8 tool to translate the files to UTF-8 and back # Use the PropertiesToUTF8 tool to translate the files to UTF-8 and back
# translator: Miguel Angel # Translator: Miguel Angel
a.help=Ayuda a.help=Ayuda
a.language=Espa&ntilde;ol a.language=Espa&ntilde;ol
a.lynxNotSupported=Lo sentimos, Lynx no est&aacute; soportado todav&iacute;a a.lynxNotSupported=Lo sentimos, Lynx no est&aacute; soportado todav&iacute;a
...@@ -64,8 +64,8 @@ login.testConnection=Probar la conexi&oacute;n ...@@ -64,8 +64,8 @@ login.testConnection=Probar la conexi&oacute;n
login.testSuccessful=Prueba correcta login.testSuccessful=Prueba correcta
login.welcome=H2 Consola login.welcome=H2 Consola
result.1row=1 fila result.1row=1 fila
result.autocommitOff=El autocommit no est&aacute; activo result.autoCommitOff=El auto commit no est&aacute; activo
result.autocommitOn=El autocommit est&aacute; activo result.autoCommitOn=El auto commit est&aacute; activo
result.maxrowsSet=N&uacute;mero m&aacute;ximo de filas modificado result.maxrowsSet=N&uacute;mero m&aacute;ximo de filas modificado
result.noRows=No se han recuperado filas result.noRows=No se han recuperado filas
result.noRunningStatement=No hay una instrucci&oacute;n ejecut&aacute;ndose result.noRunningStatement=No hay una instrucci&oacute;n ejecut&aacute;ndose
...@@ -79,11 +79,11 @@ resultEdit.edit=Editar ...@@ -79,11 +79,11 @@ resultEdit.edit=Editar
resultEdit.editResult=Editar resultEdit.editResult=Editar
resultEdit.save=Guardar resultEdit.save=Guardar
toolbar.all=Todos toolbar.all=Todos
toolbar.autocommit=Autocommit toolbar.autoCommit=Auto commit
toolbar.autocomplete=Auto-Completado toolbar.autoComplete=Auto completado
toolbar.autocomplete.off=Desactivado toolbar.autoComplete.off=Desactivado
toolbar.autocomplete.normal=Normal toolbar.autoComplete.normal=Normal
toolbar.autocomplete.full=Completo toolbar.autoComplete.full=Completo
toolbar.cancelStatement=Cancelar la instrucci&oacute;n actual toolbar.cancelStatement=Cancelar la instrucci&oacute;n actual
toolbar.clear=Eliminar toolbar.clear=Eliminar
toolbar.commit=Commit toolbar.commit=Commit
......
...@@ -63,8 +63,8 @@ login.testConnection=Test de connexion ...@@ -63,8 +63,8 @@ login.testConnection=Test de connexion
login.testSuccessful=Succ&egrave;s login.testSuccessful=Succ&egrave;s
login.welcome=Console H2 login.welcome=Console H2
result.1row=1 enregistrement result.1row=1 enregistrement
result.autocommitOff=Validation automatique non activ&eacute;e result.autoCommitOff=Validation automatique non activ&eacute;e
result.autocommitOn=Validation automatique activ&eacute;e result.autoCommitOn=Validation automatique activ&eacute;e
result.maxrowsSet=Nombre max d'enregistrements d&eacute;fini result.maxrowsSet=Nombre max d'enregistrements d&eacute;fini
result.noRows=Aucun enregistrement result.noRows=Aucun enregistrement
result.noRunningStatement=Pas d'instruction en cours result.noRunningStatement=Pas d'instruction en cours
...@@ -78,11 +78,11 @@ resultEdit.edit=Editer ...@@ -78,11 +78,11 @@ resultEdit.edit=Editer
resultEdit.editResult=Editer resultEdit.editResult=Editer
resultEdit.save=Enregistrer resultEdit.save=Enregistrer
toolbar.all=Tous toolbar.all=Tous
toolbar.autocommit=Validation automatique (autocommit) toolbar.autoCommit=Validation automatique (auto commit)
toolbar.autocomplete=#Auto-Complete toolbar.autoComplete=#Auto-Complete
toolbar.autocomplete.off=#Off toolbar.autoComplete.off=#Off
toolbar.autocomplete.normal=#Normal toolbar.autoComplete.normal=#Normal
toolbar.autocomplete.full=#Full toolbar.autoComplete.full=#Full
toolbar.cancelStatement=Annuler l'instruction en cours toolbar.cancelStatement=Annuler l'instruction en cours
toolbar.clear=Effacer toolbar.clear=Effacer
toolbar.commit=Valider toolbar.commit=Valider
......
# Use the PropertiesToUTF8 tool to translate the files to UTF-8 and back
# Hungarian spec chars: &eacute;&#369;&aacute;&#337;&uacute;&ouml;&uuml;&oacute;&iacute;&Eacute;&Aacute;&#368;&#336;&Uacute;&Ouml;&Uuml;&Oacute;&Iacute;
# Translator: Andras Hideg
a.help=S&uacute;g&oacute;
a.language=Magyar
a.lynxNotSupported=A Lynx b&ouml;ng&eacute;sz&#337; egyel&#337;re nem t&aacute;mogatott
a.password=Jelsz&oacute;
a.remoteConnectionsDisabled=Ezen a kiszolg&aacute;l&oacute;n t&aacute;voli kapcsolatok ('webAllowOthers') nem enged&eacute;lyezettek.
a.title=H2 konzol
a.user=Felhaszn&aacute;l&oacute;n&eacute;v
admin.executing=Utas&iacute;t&aacute;s v&eacute;grehajt&aacute;sa
admin.ip=IP
admin.lastAccess=Legut&oacute;bbi hozz&aacute;f&eacute;r&eacute;s
admin.lastQuery=Legut&oacute;bbi lek&eacute;rdez&eacute;s
admin.url=URL
adminAllow=Enged&eacute;lyezett &uuml;gyfelek
adminConnection=Kapcsolatbiztons&aacute;g
adminHttp=Titkos&iacute;tatlan HTTP kapcsolatok haszn&aacute;lata
adminHttps=Titkos&iacute;tott SSL (HTTPS) kapcsolatok haszn&aacute;lata
adminLocal=Csak helyi kapcsolatok enged&eacute;lyez&eacute;se
adminLogin=Adminisztr&aacute;ci&oacute;s bejelentkez&eacute;s
adminLoginCancel=M&eacute;gse
adminLoginOk=OK
adminLogout=Kil&eacute;p&eacute;s
adminOthers=M&aacute;s sz&aacute;m&iacute;t&oacute;g&eacute;pekr&#337;l kezdem&eacute;nyezett kapcsolatok enged&eacute;lyez&eacute;se
adminPort=Webkiszolg&aacute;l&oacute; portsz&aacute;ma
adminRestart=A v&aacute;ltoztat&aacute;sok a kiszolg&aacute;l&oacute; &uacute;jraind&iacute;t&aacute;sa ut&aacute;n l&eacute;pnek &eacute;rv&eacute;nybe
adminSave=Ment&eacute;s
adminSessions=Akt&iacute;v munkamenetek
adminShutdown=Le&aacute;ll&iacute;t&aacute;s
adminTitle=H2 Konzol tulajdons&aacute;gai
helpAction=Parancs
helpAddAnotherRow=Rekord hozz&aacute;ad&aacute;sa
helpAddDrivers=Adatb&aacute;zis-illeszt&#337;programok hozz&aacute;ad&aacute;sa
helpAddDriversOnlyJava=Illeszt&#337;programok hozz&aacute;ad&aacute;s&aacute;t csak a Java verzi&oacute; t&aacute;mogatja, a nat&iacute;v verzi&oacute; nem.
helpAddDriversText=Tov&aacute;bbi adatb&aacute;zis-illeszt&#337;programok regisztr&aacute;l&aacute;sakor a H2DRIVERS vagy CLASSPATH k&ouml;rnyezeti v&aacute;ltoz&oacute;khoz kell adni a .jar illeszt&#337;program-f&aacute;jlok el&eacute;r&eacute;si &uacute;tvonalait. P&eacute;ld&aacute;ul (Windows eset&eacute;n) a C:\\Programs\\hsqldb\\lib\\hsqldb.jar illeszt&#337;program regisztr&aacute;l&aacute;s&aacute;hoz a H2DRIVERS k&ouml;rnyezeti v&aacute;ltoz&oacute;nak az al&aacute;bbi &eacute;rt&eacute;k&eacute;t kell megadni: C:\\Programs\\hsqldb\\lib\\hsqldb.jar
helpAddRow=Rekord hozz&aacute;ad&aacute;sa
helpCommandHistory=Kor&aacute;bbi utas&iacute;t&aacute;sok megjelen&iacute;t&eacute;se
helpCreateTable=&Uacute;j t&aacute;bla l&eacute;trehoz&aacute;sa
helpDeleteRow=rekord t&ouml;rl&eacute;se
helpDisconnect=Kapcsolat megszak&iacute;t&aacute;sa az adatb&aacute;zissal
helpDisplayThis=S&uacute;g&oacute; megjelen&iacute;t&eacute;se
helpDropTable=T&aacute;bla t&ouml;rl&eacute;se, ha az l&eacute;tezik
helpExecuteCurrent=Aktu&aacute;lis SQL utas&iacute;t&aacute;s v&eacute;grehajt&aacute;sa
helpIcon=Ikon
helpImportantCommands=Fontos utas&iacute;t&aacute;sok
helpOperations=M&#369;veletek
helpQuery=T&aacute;bla lek&eacute;rdez&eacute;se
helpSampleSQL=Minta SQL szkript
helpStatements=SQL utas&iacute;t&aacute;sok
helpUpdate=Adatok m&oacute;dos&iacute;t&aacute;sa egy rekordon bel&uuml;l
helpWithColumnsIdName=ID &eacute;s NAME oszlopokkal
login.connect=Csatlakoz&aacute;s
login.driverClass=Illeszt&#337;program oszt&aacute;ly
login.driverNotFound=Adatb&aacute;zis-illeszt&#337;program nem tal&aacute;lhat&oacute;&lt;br&gt;Illeszt&#337;programok hozz&aacute;ad&aacute;s&aacute;r&oacute;l a S&uacute;g&oacute; ad felvil&aacute;gos&iacute;t&aacute;st.
login.goAdmin=Tulajdons&aacute;gok
login.jdbcUrl=JDBC URL
login.language=Nyelv
login.login=Bel&eacute;p&eacute;s
login.remove=Elt&aacute;vol&iacute;t&aacute;s
login.save=Ment&eacute;s
login.savedSetting=Mentett be&aacute;ll&iacute;t&aacute;sok
login.settingName=Be&aacute;ll&iacute;t&aacute;s neve
login.testConnection=Kapcsolat tesztel&eacute;se
login.testSuccessful=Kapcsolat tesztel&eacute;se sikeres volt
login.welcome=H2 konzol
result.1row=1 rekord
result.autoCommitOff=Automatikus j&oacute;v&aacute;hagy&aacute;s kikapcsolva
result.autoCommitOn=Automatikus j&oacute;v&aacute;hagy&aacute;s bekapcsolva
result.maxrowsSet=Rekordok maxim&aacute;lis sz&aacute;ma be&aacute;ll&iacute;tva
result.noRows=nincs rekord
result.noRunningStatement=Utas&iacute;t&aacute;s jelenleg nincs folyamatban
result.rows=rekordok
result.statementWasCancelled=Az utas&iacute;t&aacute;s v&eacute;grehajt&aacute;sa megszakadt
result.updateCount=Friss&iacute;t&eacute;s
resultEdit.add=Hozz&aacute;ad&aacute;s
resultEdit.cancel=M&eacute;gse
resultEdit.delete=T&ouml;rl&eacute;s
resultEdit.edit=Szerkeszt&eacute;s
resultEdit.editResult=Szerkeszt&eacute;s
resultEdit.save=Ment&eacute;s
toolbar.all=Mind
toolbar.autoCommit=Automatikus j&oacute;v&aacute;hagy&aacute;s
toolbar.autoComplete=Automatikus kieg&eacute;sz&iacute;t&eacute;s
toolbar.autoComplete.off=Kikapcsolva
toolbar.autoComplete.normal=Norm&aacute;l
toolbar.autoComplete.full=Teljes
toolbar.cancelStatement=Aktu&aacute;lis utas&iacute;t&aacute;s v&eacute;grehajt&aacute;s&aacute;nak megszak&iacute;t&aacute;sa
toolbar.clear=T&ouml;rl&eacute;s
toolbar.commit=J&oacute;v&aacute;hagy&aacute;s
toolbar.disconnect=Kapcsolat bont&aacute;sa
toolbar.history=Kor&aacute;bbi utas&iacute;t&aacute;sok
toolbar.maxRows=Rekordok maxim&aacute;lis sz&aacute;ma
toolbar.refresh=Friss&iacute;t&eacute;s
toolbar.rollback=Visszag&ouml;rget&eacute;s
toolbar.run=V&eacute;grehajt&aacute;s (Ctrl+Enter)
toolbar.sqlStatement=SQL utas&iacute;t&aacute;s
tree.admin=Adminisztr&aacute;tor
tree.current=Aktu&aacute;lis &eacute;rt&eacute;k
tree.hashed=Hash-&eacute;rt&eacute;kkel ell&aacute;tott
tree.increment=Inkrement&aacute;lt
tree.indexes=Indexek
tree.nonUnique=Nem egyedi
tree.sequences=Szekvencia
tree.unique=Egyedi
tree.users=Felhaszn&aacute;l&oacute;k
# Use the PropertiesToUTF8 tool to translate the files to UTF-8 and back
# Translator: Joko Yuliantoro
a.help=Bantuan
a.language=Indonesia
a.lynxNotSupported=Maaf, Lynx belum didukung. Gunakan browser yang mendukung Javascript (dan Frame).
a.password=Kata kunci
a.remoteConnectionsDisabled=Maaf, fungsi koneksi jarak jauh ('webAllowOthers') dimatikan pada server ini.
a.title=Konsol H2
a.user=Nama pengguna
admin.executing=Sedang eksekusi
admin.ip=IP
admin.lastAccess=Akses Terakhir
admin.lastQuery=Kueri Terakhir
admin.url=URL
adminAllow=Klien terijin
adminConnection=Keamanan koneksi
adminHttp=Gunakan koneksi HTTP tidak terenkripsi
adminHttps=Gunakan koneksi SSL terenkripsi (HTTPS)
adminLocal=Hanya ijinkan koneksi lokal
adminLogin=Login Pengelola
adminLoginCancel=Batal
adminLoginOk=OK
adminLogout=Keluar
adminOthers=Ijinkan koneksi dari komputer lain
adminPort=Nomor port web server
adminRestart=Perubahan akan efektif setelah server di-restart.
adminSave=Simpan
adminSessions=Sesi aktif
adminShutdown=Matikan
adminTitle=Pilihan di Konsol H2
helpAction=Aksi
helpAddAnotherRow=Menambah sebuah baris
helpAddDrivers=Menambah pengendali basis data
helpAddDriversOnlyJava=Hanya versi Java saja yang mendukung pengendali tambahan (fitur ini tidak didukung oleh versi Native).
helpAddDriversText=Pengendali basis data tambahan dapat didaftarkan dengan cara menambah lokasi file Jar dari si pengendali ke variabel lingkungan H2DRIVERS atau CLASSPATH. Contoh (Windows): Untuk menambah librari pengendali basis data C:\\Programs\\hsqldb\\lib\\hsqldb.jar, atur variabel lingkungan H2DRIVERS menjadi C:\\Programs\\hsqldb\\lib\\hsqldb.jar.
helpAddRow=Tambah sebuah baris baru
helpCommandHistory=Tampilkan sejarah perintah
helpCreateTable=Ciptakan sebuah tabel
helpDeleteRow=Buang sebuah baris
helpDisconnect=Putuskan koneksi dari basis data
helpDisplayThis=Tampilkan laman bantuan ini
helpDropTable=Hapus tabel jika sudah ada
helpExecuteCurrent=Jalankan pernyataan SQL terkini
helpIcon=Ikon
helpImportantCommands=Perintah penting
helpOperations=Operasi
helpQuery=Kueri ke tabel
helpSampleSQL=Contoh skrip SQL
helpStatements=Pernyataan SQL
helpUpdate=Rubah data dalam sebuah baris
helpWithColumnsIdName=dengan kolom ID dan NAME
login.connect=Hubungkan
login.driverClass=Kelas Pengendali
login.driverNotFound=Pengendali basis data tidak ditemukan<br>Pelajari bagian Bantuan untuk mengetahui bagaimana cara menambah pengendali basis data
login.goAdmin=Pilihan
login.jdbcUrl=JDBC URL
login.language=Bahasa
login.login=Login
login.remove=Buang
login.save=Simpan
login.savedSetting=Pengaturan tersimpan
login.settingName=Nama pengaturan
login.testConnection=Tes koneksi
login.testSuccessful=Tes berhasil
login.welcome=Konsol H2
result.1row=1 baris
result.autoCommitOff=Autocommit sekarang OFF
result.autoCommitOn=Autocommit sekarang ON
result.maxrowsSet=Hitungan baris maksimum terpasang
result.noRows=Tidak ada hasil
result.noRunningStatement=Saat ini tidak ada pernyataan yang beroperasi
result.rows=baris
result.statementWasCancelled=Pernyataan tersebut dibatalkan
result.updateCount=Perbarui Hitungan
resultEdit.add=Tambah
resultEdit.cancel=Batal
resultEdit.delete=Hapus
resultEdit.edit=Ubah
resultEdit.editResult=Ubah
resultEdit.save=Simpan
toolbar.all=Semua
toolbar.autoCommit=Autocommit
toolbar.autoComplete=Auto-Complete
toolbar.autoComplete.off=Off
toolbar.autoComplete.normal=Normal
toolbar.autoComplete.full=Full
toolbar.cancelStatement=Batalkan pernyataan terkini
toolbar.clear=Bersihkan
toolbar.commit=Laksanakan
toolbar.disconnect=Putuskan koneksi
toolbar.history=Sejarah perintah
toolbar.maxRows=Baris maksimum
toolbar.refresh=Segarkan
toolbar.rollback=Gulung mundur
toolbar.run=Jalankan (Ctrl+Enter)
toolbar.sqlStatement=Pernyataan SQL
tree.admin=Admin
tree.current=Nilai terkini
tree.hashed=Hashed
tree.increment=Penambahan
tree.indexes=Indeks
tree.nonUnique=Tidak-Unik
tree.sequences=Urut-urutan
tree.unique=Unik
tree.users=Para pengguna
...@@ -64,8 +64,8 @@ login.testConnection=\u63a5\u7d9a\u30c6\u30b9\u30c8 ...@@ -64,8 +64,8 @@ login.testConnection=\u63a5\u7d9a\u30c6\u30b9\u30c8
login.testSuccessful=\u30c6\u30b9\u30c8\u306f\u6210\u529f\u3057\u307e\u3057\u305f login.testSuccessful=\u30c6\u30b9\u30c8\u306f\u6210\u529f\u3057\u307e\u3057\u305f
login.welcome=H2\u30b3\u30f3\u30bd\u30fc\u30eb login.welcome=H2\u30b3\u30f3\u30bd\u30fc\u30eb
result.1row=1 \u884c result.1row=1 \u884c
result.autocommitOff=\u30aa\u30fc\u30c8\u30b3\u30df\u30c3\u30c8\u304c\u7121\u52b9\u306b\u306a\u308a\u307e\u3057\u305f result.autoCommitOff=\u30aa\u30fc\u30c8\u30b3\u30df\u30c3\u30c8\u304c\u7121\u52b9\u306b\u306a\u308a\u307e\u3057\u305f
result.autocommitOn=\u30aa\u30fc\u30c8\u30b3\u30df\u30c3\u30c8\u304c\u6709\u52b9\u306b\u306a\u308a\u307e\u3057\u305f result.autoCommitOn=\u30aa\u30fc\u30c8\u30b3\u30df\u30c3\u30c8\u304c\u6709\u52b9\u306b\u306a\u308a\u307e\u3057\u305f
result.maxrowsSet=\u6700\u5927\u884c\u6570\u304c\u8a2d\u5b9a\u3055\u308c\u307e\u3057\u305f result.maxrowsSet=\u6700\u5927\u884c\u6570\u304c\u8a2d\u5b9a\u3055\u308c\u307e\u3057\u305f
result.noRows=\u8a72\u5f53\u884c\u7121\u3057 result.noRows=\u8a72\u5f53\u884c\u7121\u3057
result.noRunningStatement=\u73fe\u5728\u5b9f\u884c\u4e2d\u306e\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306f\u3042\u308a\u307e\u305b\u3093 result.noRunningStatement=\u73fe\u5728\u5b9f\u884c\u4e2d\u306e\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306f\u3042\u308a\u307e\u305b\u3093
...@@ -79,11 +79,11 @@ resultEdit.edit=\u7de8\u96c6 ...@@ -79,11 +79,11 @@ resultEdit.edit=\u7de8\u96c6
resultEdit.editResult=\u7de8\u96c6 resultEdit.editResult=\u7de8\u96c6
resultEdit.save=\u4fdd\u5b58 resultEdit.save=\u4fdd\u5b58
toolbar.all=\u5168\u3066 toolbar.all=\u5168\u3066
toolbar.autocommit=\u30aa\u30fc\u30c8\u30b3\u30df\u30c3\u30c8 toolbar.autoCommit=\u30aa\u30fc\u30c8\u30b3\u30df\u30c3\u30c8
toolbar.autocomplete=\u30aa\u30fc\u30c8\u30b3\u30f3\u30d7\u30ea\u30fc\u30c8 toolbar.autoComplete=\u30aa\u30fc\u30c8\u30b3\u30f3\u30d7\u30ea\u30fc\u30c8
toolbar.autocomplete.off=\u30aa\u30d5 toolbar.autoComplete.off=\u30aa\u30d5
toolbar.autocomplete.normal=\u30ce\u30fc\u30de\u30eb toolbar.autoComplete.normal=\u30ce\u30fc\u30de\u30eb
toolbar.autocomplete.full=\u30d5\u30eb toolbar.autoComplete.full=\u30d5\u30eb
toolbar.cancelStatement=\u73fe\u5728\u306e\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3092\u30ad\u30e3\u30f3\u30bb\u30eb toolbar.cancelStatement=\u73fe\u5728\u306e\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3092\u30ad\u30e3\u30f3\u30bb\u30eb
toolbar.clear=\u30af\u30ea\u30a2 toolbar.clear=\u30af\u30ea\u30a2
toolbar.commit=\u30b3\u30df\u30c3\u30c8 toolbar.commit=\u30b3\u30df\u30c3\u30c8
......
# Use the PropertiesToUTF8 tool to translate the files to UTF-8 and back # Use the PropertiesToUTF8 tool to translate the files to UTF-8 and back
#Created by JInto - www.guh-software.de # Created by JInto - www.guh-software.de
#Mon Apr 10 14:14:45 CST 2006 # Mon Apr 10 14:14:45 CST 2006
#Author: junheng.song # Author: junheng.song (sjh21 (at) hot mail (dot) com)
#Email sjh21 (at) hot mail (dot) com
a.help=\u5E2E\u52A9 a.help=\u5E2E\u52A9
a.language=\u4E2D\u6587 a.language=\u4E2D\u6587
a.lynxNotSupported=\u62B1\u6B49, \u76EE\u524D\u8FD8\u4E0D\u652F\u6301Lynx a.lynxNotSupported=\u62B1\u6B49, \u76EE\u524D\u8FD8\u4E0D\u652F\u6301Lynx
...@@ -67,8 +66,8 @@ login.testConnection=\u6D4B\u8BD5\u8FDE\u63A5 ...@@ -67,8 +66,8 @@ login.testConnection=\u6D4B\u8BD5\u8FDE\u63A5
login.testSuccessful=\u6D4B\u8BD5\u6210\u529F login.testSuccessful=\u6D4B\u8BD5\u6210\u529F
login.welcome=H2 \u63A7\u5236\u53F0 login.welcome=H2 \u63A7\u5236\u53F0
result.1row=1 \u884C result.1row=1 \u884C
result.autocommitOff=\u81EA\u52A8\u63D0\u4EA4\u73B0\u5728\u4E3A\u5173\u95ED result.autoCommitOff=\u81EA\u52A8\u63D0\u4EA4\u73B0\u5728\u4E3A\u5173\u95ED
result.autocommitOn=\u81EA\u52A8\u63D0\u4EA4\u73B0\u5728\u4E3A\u6253\u5F00 result.autoCommitOn=\u81EA\u52A8\u63D0\u4EA4\u73B0\u5728\u4E3A\u6253\u5F00
result.maxrowsSet=\u6700\u5927\u8FD4\u56DE\u884C\u6570\u88AB\u8BBE\u7F6E result.maxrowsSet=\u6700\u5927\u8FD4\u56DE\u884C\u6570\u88AB\u8BBE\u7F6E
result.noRows=\u65E0\u8FD4\u56DE\u884C result.noRows=\u65E0\u8FD4\u56DE\u884C
result.noRunningStatement=\u5F53\u524D\u6CA1\u6709\u6B63\u5728\u6267\u884C\u7684SQL\u8BED\u53E5 result.noRunningStatement=\u5F53\u524D\u6CA1\u6709\u6B63\u5728\u6267\u884C\u7684SQL\u8BED\u53E5
...@@ -82,11 +81,11 @@ resultEdit.edit=\u7F16\u8F91 ...@@ -82,11 +81,11 @@ resultEdit.edit=\u7F16\u8F91
resultEdit.editResult=\u7F16\u8F91\u7ED3\u679C\u96C6 resultEdit.editResult=\u7F16\u8F91\u7ED3\u679C\u96C6
resultEdit.save=\u4FDD\u5B58 resultEdit.save=\u4FDD\u5B58
toolbar.all=\u5168\u90E8 toolbar.all=\u5168\u90E8
toolbar.autocommit=\u81EA\u52A8\u63D0\u4EA4 toolbar.autoCommit=\u81EA\u52A8\u63D0\u4EA4
toolbar.autocomplete=#Auto-Complete toolbar.autoComplete=#Auto-Complete
toolbar.autocomplete.off=#Off toolbar.autoComplete.off=#Off
toolbar.autocomplete.normal=#Normal toolbar.autoComplete.normal=#Normal
toolbar.autocomplete.full=#Full toolbar.autoComplete.full=#Full
toolbar.cancelStatement=\u53D6\u6D88\u5F53\u524D\u7684\u6267\u884C\u8BED\u53E5 toolbar.cancelStatement=\u53D6\u6D88\u5F53\u524D\u7684\u6267\u884C\u8BED\u53E5
toolbar.clear=\u6E05\u9664 toolbar.clear=\u6E05\u9664
toolbar.commit=\u63D0\u4EA4 toolbar.commit=\u63D0\u4EA4
......
...@@ -24,13 +24,13 @@ Initial Developer: H2 Group ...@@ -24,13 +24,13 @@ Initial Developer: H2 Group
onmouseout = "this.className ='icon'" onmouseout = "this.className ='icon'"
class="icon" alt="${text.toolbar.refresh}" title="${text.toolbar.refresh}" border="1"></a class="icon" alt="${text.toolbar.refresh}" title="${text.toolbar.refresh}" border="1"></a
><img src="icon_line.gif" class="iconLine" alt="" ><img src="icon_line.gif" class="iconLine" alt=""
></td><td class="toolbar"><input type="checkbox" name="autocommit" value="autocommit" ></td><td class="toolbar"><input type="checkbox" name="autoCommit" value="autoCommit"
onclick="javascript:if(document.header.autocommit.checked) onclick="javascript:if(document.header.autoCommit.checked)
top.frames['h2result'].document.location='query.do?jsessionid=${sessionId}&amp;sql=@AUTOCOMMIT+TRUE'; top.frames['h2result'].document.location='query.do?jsessionid=${sessionId}&amp;sql=@AUTOCOMMIT+TRUE';
else else
top.frames['h2result'].document.location='query.do?jsessionid=${sessionId}&amp;sql=@AUTOCOMMIT+FALSE'; top.frames['h2result'].document.location='query.do?jsessionid=${sessionId}&amp;sql=@AUTOCOMMIT+FALSE';
" "
></td><td class="toolbar">${text.toolbar.autocommit}&nbsp;</td><td class="toolbar" ></td><td class="toolbar">${text.toolbar.autoCommit}&nbsp;</td><td class="toolbar"
><a href="query.do?jsessionid=${sessionId}&amp;sql=ROLLBACK" target="h2result" ><a href="query.do?jsessionid=${sessionId}&amp;sql=ROLLBACK" target="h2result"
><img src="icon_rollback.gif" ><img src="icon_rollback.gif"
onmouseover = "this.className ='icon_hover'" onmouseover = "this.className ='icon_hover'"
...@@ -68,11 +68,11 @@ Initial Developer: H2 Group ...@@ -68,11 +68,11 @@ Initial Developer: H2 Group
onmouseout = "this.className ='icon'" onmouseout = "this.className ='icon'"
class="icon" alt="${text.toolbar.history}" title="${text.toolbar.history}" border="1"></a class="icon" alt="${text.toolbar.history}" title="${text.toolbar.history}" border="1"></a
><img src="icon_line.gif" class="iconLine" alt="" ><img src="icon_line.gif" class="iconLine" alt=""
></td><td class="toolbar">${text.toolbar.autocomplete}&nbsp;<select name="autocomplete" size="1" ></td><td class="toolbar">${text.toolbar.autoComplete}&nbsp;<select name="autoComplete" size="1"
onchange="javascript:top.frames['h2query'].setAutocomplete(this.value)" onchange="javascript:top.frames['h2query'].setAutoComplete(this.value)"
><option value="0">${text.toolbar.autocomplete.off}</option> ><option value="0">${text.toolbar.autoComplete.off}</option>
<option selected="selected" value="1">${text.toolbar.autocomplete.normal}</option> <option selected="selected" value="1">${text.toolbar.autoComplete.normal}</option>
<option value="2">${text.toolbar.autocomplete.full}</option> <option value="2">${text.toolbar.autoComplete.full}</option>
</select </select
></td ></td
><td class="toolbar" ><td class="toolbar"
...@@ -85,7 +85,7 @@ Initial Developer: H2 Group ...@@ -85,7 +85,7 @@ Initial Developer: H2 Group
</form> </form>
<script type="text/javascript"> <script type="text/javascript">
<!-- <!--
document.header.autocommit.checked = '${autocommit}' != ''; document.header.autoCommit.checked = '${autoCommit}' != '';
//--> //-->
</script> </script>
</body> </body>
......
...@@ -80,6 +80,6 @@ ${text.helpAddDriversOnlyJava} ...@@ -80,6 +80,6 @@ ${text.helpAddDriversOnlyJava}
</div> </div>
<table id="h2auto" class="autocomp"><tbody></tbody></table> <table id="h2auto" class="autoComp"><tbody></tbody></table>
</body></html> </body></html>
\ No newline at end of file
...@@ -13,13 +13,13 @@ Initial Developer: H2 Group ...@@ -13,13 +13,13 @@ Initial Developer: H2 Group
var agent=navigator.userAgent.toLowerCase(); var agent=navigator.userAgent.toLowerCase();
var is_opera = agent.indexOf("opera") >= 0; var is_opera = agent.indexOf("opera") >= 0;
var autocomplete = 1; var autoComplete = 1;
var selectedRow = -1; var selectedRow = -1;
var lastList = ''; var lastList = '';
var lastQuery = null; var lastQuery = null;
var columnsByTable = new Object(); var columnsByTable = new Object();
var tableAliases = new Object(); var tableAliases = new Object();
var showAutocompleteWait = 0; var showAutoCompleteWait = 0;
var req; var req;
function refreshTables() { function refreshTables() {
...@@ -151,8 +151,8 @@ function insertText(s, isTable) { ...@@ -151,8 +151,8 @@ function insertText(s, isTable) {
if (document.selection) { if (document.selection) {
// IE // IE
field.focus(); field.focus();
sel = document.selection.createRange(); selection = document.selection.createRange();
sel.text = s; selection.text = s;
} else if (field.selectionStart || field.selectionStart == '0') { } else if (field.selectionStart || field.selectionStart == '0') {
// Firefox // Firefox
var startPos = field.selectionStart; var startPos = field.selectionStart;
...@@ -169,22 +169,22 @@ function insertText(s, isTable) { ...@@ -169,22 +169,22 @@ function insertText(s, isTable) {
} }
function keyUp() { function keyUp() {
if(autocomplete != 0) { if(autoComplete != 0) {
showAutocomplete(); showAutoComplete();
} }
return true; return true;
} }
function showAutocomplete() { function showAutoComplete() {
if(showAutocompleteWait==0) { if(showAutoCompleteWait==0) {
showAutocompleteWait=5; showAutoCompleteWait=5;
setTimeout('showAutocompleteNow()', 100); setTimeout('showAutoCompleteNow()', 100);
} else { } else {
showAutocompleteWait-=1; showAutoCompleteWait-=1;
} }
} }
function showAutocompleteNow() { function showAutoCompleteNow() {
var input = document.h2query.sql; var input = document.h2query.sql;
setSelection(input); setSelection(input);
var pos = input.selectionStart; var pos = input.selectionStart;
...@@ -193,7 +193,7 @@ function showAutocompleteNow() { ...@@ -193,7 +193,7 @@ function showAutocompleteNow() {
lastQuery = s; lastQuery = s;
retrieveList(s); retrieveList(s);
} }
showAutocompleteWait = 0; showAutoCompleteWait = 0;
} }
function keyDown(event) { function keyDown(event) {
...@@ -205,13 +205,13 @@ function keyDown(event) { ...@@ -205,13 +205,13 @@ function keyDown(event) {
document.h2query.submit(); document.h2query.submit();
return false; return false;
} else if(key == 32 && event.ctrlKey) { } else if(key == 32 && event.ctrlKey) {
showAutocomplete(); showAutoComplete();
return false; return false;
} else if(key == 190 && autocomplete==0) { } else if(key == 190 && autoComplete==0) {
help(); help();
return true; return true;
} }
var table = getAutocompleteTable(); var table = getAutoCompleteTable();
if(table.rows.length > 0) { if(table.rows.length > 0) {
if(key == 27) { if(key == 27) {
while(table.rows.length > 0) { while(table.rows.length > 0) {
...@@ -225,8 +225,8 @@ function keyDown(event) { ...@@ -225,8 +225,8 @@ function keyDown(event) {
if(row.cells.length>1) { if(row.cells.length>1) {
insertText(row.cells[1].innerHTML); insertText(row.cells[1].innerHTML);
} }
if(autocomplete == 0) { if(autoComplete == 0) {
setAutocomplete(0); setAutoComplete(0);
} }
return false; return false;
} }
...@@ -248,18 +248,18 @@ function keyDown(event) { ...@@ -248,18 +248,18 @@ function keyDown(event) {
// alert('key:' + key); // alert('key:' + key);
// bs:8 ret:13 lt:37 up:38 rt:39 dn:40 tab:9 // bs:8 ret:13 lt:37 up:38 rt:39 dn:40 tab:9
// pgup:33 pgdn:34 home:36 end:35 del:46 shift:16 // pgup:33 pgdn:34 home:36 end:35 del:46 shift:16
// ctrl,altgr:17 alt:18 caps:20 5(num):12 ins:45 // ctrl,alt gr:17 alt:18 caps:20 5(num):12 ins:45
// pause:19 f1..13:112..123 win-start:91 win-ctx:93 esc:27 // pause:19 f1..13:112..123 win-start:91 win-ctx:93 esc:27
} }
function setAutocomplete(value) { function setAutoComplete(value) {
autocomplete = value; autoComplete = value;
if(value != 1) { if(value != 1) {
var s = lastList; var s = lastList;
lastList = ''; lastList = '';
showList(s); showList(s);
} else { } else {
var table = getAutocompleteTable(); var table = getAutoCompleteTable();
while(table.rows.length > 0) { while(table.rows.length > 0) {
table.deleteRow(0); table.deleteRow(0);
} }
...@@ -271,12 +271,12 @@ function highlightRow(row) { ...@@ -271,12 +271,12 @@ function highlightRow(row) {
if(row != null) { if(row != null) {
selectedRow = row; selectedRow = row;
} }
var table = getAutocompleteTable(); var table = getAutoCompleteTable();
highlightThisRow(table.rows[selectedRow]); highlightThisRow(table.rows[selectedRow]);
} }
function highlightThisRow(row) { function highlightThisRow(row) {
var table = getAutocompleteTable(); var table = getAutoCompleteTable();
for(var i=0; i<table.rows.length; i++) { for(var i=0; i<table.rows.length; i++) {
var r = table.rows[i]; var r = table.rows[i];
var col = (r == row) ? '#95beff' : ''; var col = (r == row) ? '#95beff' : '';
...@@ -288,7 +288,7 @@ function highlightThisRow(row) { ...@@ -288,7 +288,7 @@ function highlightThisRow(row) {
showOutput('none'); showOutput('none');
} }
function getAutocompleteTable() { function getAutoCompleteTable() {
return top.h2result.document.getElementById('h2auto'); return top.h2result.document.getElementById('h2auto');
// return top.frames['h2result'].document.getElementById('h2auto'); // return top.frames['h2result'].document.getElementById('h2auto');
// return top.h2menu.h2result.document.getElementById('h2auto'); // return top.h2menu.h2result.document.getElementById('h2auto');
...@@ -304,14 +304,14 @@ function showList(s) { ...@@ -304,14 +304,14 @@ function showList(s) {
} }
lastList = s; lastList = s;
var list = s.length == 0 ? null : s.split('|'); var list = s.length == 0 ? null : s.split('|');
var table = getAutocompleteTable(); var table = getAutoCompleteTable();
if(table == null) { if(table == null) {
return; return;
} }
while(table.rows.length > 0) { while(table.rows.length > 0) {
table.deleteRow(0); table.deleteRow(0);
} }
if(autocomplete==0) { if(autoComplete==0) {
return; return;
} }
selectedRow = 0; selectedRow = 0;
...@@ -321,7 +321,7 @@ function showList(s) { ...@@ -321,7 +321,7 @@ function showList(s) {
for(var i=0; list != null && i<list.length; i++) { for(var i=0; list != null && i<list.length; i++) {
var kv = list[i].split('#'); var kv = list[i].split('#');
var type = kv[0]; var type = kv[0];
if(type > 0 && autocomplete != 2) { if(type > 0 && autoComplete != 2) {
continue; continue;
} }
var row = doc.createElement("tr"); var row = doc.createElement("tr");
...@@ -333,7 +333,7 @@ function showList(s) { ...@@ -333,7 +333,7 @@ function showList(s) {
break; break;
} }
count++; count++;
cell.className = 'autocomp' + type; cell.className = 'autoComp' + type;
key = decodeURIComponent(key); key = decodeURIComponent(key);
row.onmouseover = function(){highlightThisRow(this)}; row.onmouseover = function(){highlightThisRow(this)};
if(!document.all || is_opera) { if(!document.all || is_opera) {
...@@ -404,8 +404,8 @@ function sendAsyncRequest(url) { ...@@ -404,8 +404,8 @@ function sendAsyncRequest(url) {
req.open("GET", url, true); req.open("GET", url, true);
req.send(""); req.send("");
} else { } else {
var getlist = document.getElementById('h2iframeTransport'); var getList = document.getElementById('h2iframeTransport');
getlist.src = url; getList.src = url;
} }
} }
......
...@@ -16,6 +16,6 @@ Initial Developer: H2 Group ...@@ -16,6 +16,6 @@ Initial Developer: H2 Group
${result} ${result}
</div> </div>
<table id="h2auto" class="autocomp"><tbody></tbody></table> <table id="h2auto" class="autoComp"><tbody></tbody></table>
</body></html> </body></html>
...@@ -271,7 +271,7 @@ td.contentResult { ...@@ -271,7 +271,7 @@ td.contentResult {
margin:10px; margin:10px;
} }
table.autocomp { table.autoComp {
background-color: #e0ecff; background-color: #e0ecff;
border: 1px solid #7f9db9; border: 1px solid #7f9db9;
cursor: pointer; cursor: pointer;
...@@ -284,28 +284,28 @@ table.autocomp { ...@@ -284,28 +284,28 @@ table.autocomp {
border-spacing:2px; border-spacing:2px;
} }
td.autocomp0 { td.autoComp0 {
border-spacing: 0px; border-spacing: 0px;
padding: 1px 8px; padding: 1px 8px;
background-color: #cce0ff; background-color: #cce0ff;
border: 0px; border: 0px;
} }
td.autocomp1 { td.autoComp1 {
border-spacing: 0px; border-spacing: 0px;
padding: 1px 8px; padding: 1px 8px;
background-color: #e7f0ff; background-color: #e7f0ff;
border: 0px; border: 0px;
} }
td.autocomp2 { td.autoComp2 {
border-spacing: 0px; border-spacing: 0px;
padding: 1px 8px; padding: 1px 8px;
background-color: #ffffff; background-color: #ffffff;
border: 0px; border: 0px;
} }
td.autocompHide { td.autoCompHide {
padding: 2px; padding: 2px;
display: none; display: none;
} }
......
...@@ -32,7 +32,7 @@ function initSort() { ...@@ -32,7 +32,7 @@ function initSort() {
for(var j=0;j<header.cells.length;j++) { for(var j=0;j<header.cells.length;j++) {
var cell = header.cells[j]; var cell = header.cells[j];
var text = cell.innerHTML; var text = cell.innerHTML;
cell.innerHTML = '<a href="#" style="text-decoration: none;" class="sortheader" onclick="resortTable(this);">'+text+'<span class="sortarrow">&nbsp;&nbsp;</span></a>'; cell.innerHTML = '<a href="#" style="text-decoration: none;" class="sortHeader" onclick="resortTable(this);">'+text+'<span class="sortArrow">&nbsp;&nbsp;</span></a>';
} }
} }
} }
...@@ -83,16 +83,16 @@ function getInnerText(el) { ...@@ -83,16 +83,16 @@ function getInnerText(el) {
return str; return str;
} }
function resortTable(lnk) { function resortTable(link) {
// get the span // get the span
var span; var span;
for (var ci=0;ci<lnk.childNodes.length;ci++) { for (var ci=0;ci<link.childNodes.length;ci++) {
if (lnk.childNodes[ci].tagName && lnk.childNodes[ci].tagName.toLowerCase() == 'span') { if (link.childNodes[ci].tagName && link.childNodes[ci].tagName.toLowerCase() == 'span') {
span = lnk.childNodes[ci]; span = link.childNodes[ci];
} }
} }
var spantext = getInnerText(span); var spantext = getInnerText(span);
var td = lnk.parentNode; var td = link.parentNode;
var column = td.cellIndex; var column = td.cellIndex;
var table = getParent(td,'TABLE'); var table = getParent(td,'TABLE');
...@@ -125,13 +125,13 @@ function resortTable(lnk) { ...@@ -125,13 +125,13 @@ function resortTable(lnk) {
newRows.sort(sortCallback); newRows.sort(sortCallback);
var arrow; var arrow;
if (span.getAttribute("sortdir") == 'down') { if (span.getAttribute("sortDir") == 'down') {
arrow = '&nbsp;<img src="sort_up.gif" with=7 height=10 border=0>'; arrow = '&nbsp;<img src="sort_up.gif" with=7 height=10 border=0>';
newRows.reverse(); newRows.reverse();
span.setAttribute('sortdir','up'); span.setAttribute('sortDir','up');
} else { } else {
arrow = '&nbsp;<img src="sort_down.gif" with=7 height=10 border=0>'; arrow = '&nbsp;<img src="sort_down.gif" with=7 height=10 border=0>';
span.setAttribute('sortdir','down'); span.setAttribute('sortDir','down');
} }
//alert("start move"); //alert("start move");
...@@ -144,12 +144,12 @@ function resortTable(lnk) { ...@@ -144,12 +144,12 @@ function resortTable(lnk) {
//alert("end"); //alert("end");
// delete any other arrows there may be showing // delete any other arrows there may be showing
var allspans = document.getElementsByTagName("span"); var allSpans = document.getElementsByTagName("span");
for (var i=0;i<allspans.length;i++) { for (var i=0;i<allSpans.length;i++) {
if (allspans[i].className == 'sortarrow') { if (allSpans[i].className == 'sortArrow') {
// in the same table as us? // in the same table as us?
if (getParent(allspans[i],"table") == getParent(lnk,"table")) { if (getParent(allSpans[i],"table") == getParent(link,"table")) {
allspans[i].innerHTML = '&nbsp;&nbsp;'; allSpans[i].innerHTML = '&nbsp;&nbsp;';
} }
} }
} }
......
...@@ -25,5 +25,6 @@ public interface DataHandler { ...@@ -25,5 +25,6 @@ public interface DataHandler {
// only temporarily, until LOB_FILES_IN_DIRECTORIES is enabled // only temporarily, until LOB_FILES_IN_DIRECTORIES is enabled
int allocateObjectId(boolean needFresh, boolean dataFile); int allocateObjectId(boolean needFresh, boolean dataFile);
String createTempFile() throws SQLException; String createTempFile() throws SQLException;
Object getLobSyncObject();
} }
...@@ -178,7 +178,7 @@ public class DiskFile implements CacheWriter { ...@@ -178,7 +178,7 @@ public class DiskFile implements CacheWriter {
byte[] b2 = buff.toByteArray(); byte[] b2 = buff.toByteArray();
return b2; return b2;
} catch(IOException e) { } catch(IOException e) {
// will probably never happen, because only in-memory strutures are used // will probably never happen, because only in-memory structures are used
return null; return null;
} }
} }
......
...@@ -30,7 +30,7 @@ import org.h2.util.ObjectArray; ...@@ -30,7 +30,7 @@ import org.h2.util.ObjectArray;
* [delete/insert only:] * [delete/insert only:]
* int storage * int storage
* int record.pos * int record.pos
* int record.blockcount * int record.blockCount
* [prepare commit only:] * [prepare commit only:]
* string transaction * string transaction
*/ */
......
...@@ -962,8 +962,8 @@ public class MetaTable extends Table { ...@@ -962,8 +962,8 @@ public class MetaTable extends Table {
if(!checkIndex(session, tableName, indexFrom, indexTo)) { if(!checkIndex(session, tableName, indexFrom, indexTo)) {
continue; continue;
} }
int upd = getRefAction(ref.getUpdateAction()); int update = getRefAction(ref.getUpdateAction());
int del = getRefAction(ref.getDeleteAction()); int delete = getRefAction(ref.getDeleteAction());
for(int j=0; j<cols.length; j++) { for(int j=0; j<cols.length; j++) {
add(rows, new String[] { add(rows, new String[] {
catalog, // PKTABLE_CATALOG catalog, // PKTABLE_CATALOG
...@@ -975,8 +975,8 @@ public class MetaTable extends Table { ...@@ -975,8 +975,8 @@ public class MetaTable extends Table {
identifier(tab.getName()), // FKTABLE_NAME identifier(tab.getName()), // FKTABLE_NAME
identifier(cols[j].getName()), // FKCOLUMN_NAME identifier(cols[j].getName()), // FKCOLUMN_NAME
String.valueOf(j + 1), // ORDINAL_POSITION String.valueOf(j + 1), // ORDINAL_POSITION
String.valueOf(upd), // UPDATE_RULE SMALLINT String.valueOf(update), // UPDATE_RULE SMALLINT
String.valueOf(del), // DELETE_RULE SMALLINT String.valueOf(delete), // DELETE_RULE SMALLINT
identifier(ref.getName()), // FK_NAME identifier(ref.getName()), // FK_NAME
null, // PK_NAME null, // PK_NAME
"" + DatabaseMetaData.importedKeyNotDeferrable, // DEFERRABILITY "" + DatabaseMetaData.importedKeyNotDeferrable, // DEFERRABILITY
...@@ -1139,20 +1139,20 @@ public class MetaTable extends Table { ...@@ -1139,20 +1139,20 @@ public class MetaTable extends Table {
private void addPrivileges(ObjectArray rows, DbObject grantee, String catalog, Table table, String column, int rightMask) throws SQLException { private void addPrivileges(ObjectArray rows, DbObject grantee, String catalog, Table table, String column, int rightMask) throws SQLException {
if((rightMask & Right.SELECT) != 0) { if((rightMask & Right.SELECT) != 0) {
addPrivileg(rows, grantee, catalog, table, column, "SELECT"); addPrivilege(rows, grantee, catalog, table, column, "SELECT");
} }
if((rightMask & Right.INSERT) != 0) { if((rightMask & Right.INSERT) != 0) {
addPrivileg(rows, grantee, catalog, table, column, "INSERT"); addPrivilege(rows, grantee, catalog, table, column, "INSERT");
} }
if((rightMask & Right.UPDATE) != 0) { if((rightMask & Right.UPDATE) != 0) {
addPrivileg(rows, grantee, catalog, table, column, "UPDATE"); addPrivilege(rows, grantee, catalog, table, column, "UPDATE");
} }
if((rightMask & Right.DELETE) != 0) { if((rightMask & Right.DELETE) != 0) {
addPrivileg(rows, grantee, catalog, table, column, "DELETE"); addPrivilege(rows, grantee, catalog, table, column, "DELETE");
} }
} }
private void addPrivileg(ObjectArray rows, DbObject grantee, String catalog, Table table, String column, String right) throws SQLException { private void addPrivilege(ObjectArray rows, DbObject grantee, String catalog, Table table, String column, String right) throws SQLException {
String isGrantable = "NO"; String isGrantable = "NO";
if(grantee.getType() == DbObject.USER) { if(grantee.getType() == DbObject.USER) {
User user = (User)grantee; User user = (User)grantee;
......
...@@ -14,7 +14,6 @@ public class PlanItem { ...@@ -14,7 +14,6 @@ public class PlanItem {
private Index index; private Index index;
private int todoObjectArray;
private PlanItem joinPlan; private PlanItem joinPlan;
public void setIndex(Index index) { public void setIndex(Index index) {
......
...@@ -45,7 +45,6 @@ public class TableFilter implements ColumnResolver { ...@@ -45,7 +45,6 @@ public class TableFilter implements ColumnResolver {
private Row current; private Row current;
private int state; private int state;
private int todo;
private ObjectArray joins; private ObjectArray joins;
// private TableFilter join; // private TableFilter join;
...@@ -264,14 +263,14 @@ public class TableFilter implements ColumnResolver { ...@@ -264,14 +263,14 @@ public class TableFilter implements ColumnResolver {
TableFilter join = getTableFilter(i); TableFilter join = getTableFilter(i);
join.reset(); join.reset();
} }
boolean cont = false; boolean doContinue = false;
for(int i=0; joins != null && i<joins.size(); i++) { for(int i=0; joins != null && i<joins.size(); i++) {
TableFilter join = getTableFilter(i); TableFilter join = getTableFilter(i);
if(!join.next()) { if(!join.next()) {
cont = true; doContinue = true;
} }
} }
if(cont) { if(doContinue) {
continue; continue;
} }
// check if it's ok // check if it's ok
......
...@@ -77,15 +77,15 @@ public class TableLink extends Table { ...@@ -77,15 +77,15 @@ public class TableLink extends Table {
try { try {
stat = conn.createStatement(); stat = conn.createStatement();
rs = stat.executeQuery("SELECT * FROM " + originalTable + " T WHERE 1=0"); rs = stat.executeQuery("SELECT * FROM " + originalTable + " T WHERE 1=0");
ResultSetMetaData rsm = rs.getMetaData(); ResultSetMetaData rsMeta = rs.getMetaData();
for(i=0; i<rsm.getColumnCount();) { for(i=0; i<rsMeta.getColumnCount();) {
String n = rsm.getColumnName(i+1); String n = rsMeta.getColumnName(i+1);
if(storesLowerCase && n.equals(StringUtils.toLowerEnglish(n))) { if(storesLowerCase && n.equals(StringUtils.toLowerEnglish(n))) {
n = StringUtils.toUpperEnglish(n); n = StringUtils.toUpperEnglish(n);
} }
int sqlType = rsm.getColumnType(i+1); int sqlType = rsMeta.getColumnType(i+1);
long precision = rsm.getPrecision(i+1); long precision = rsMeta.getPrecision(i+1);
int scale = rsm.getScale(i+1); int scale = rsMeta.getScale(i+1);
int type = DataType.convertSQLTypeToValueType(sqlType); int type = DataType.convertSQLTypeToValueType(sqlType);
precision = Math.max(precision, DataType.getDataType(type).defaultPrecision); precision = Math.max(precision, DataType.getDataType(type).defaultPrecision);
Column col = new Column(n, type, precision, scale); Column col = new Column(n, type, precision, scale);
...@@ -127,7 +127,7 @@ public class TableLink extends Table { ...@@ -127,7 +127,7 @@ public class TableLink extends Table {
try { try {
rs = meta.getIndexInfo(null, null, originalTable, false, false); rs = meta.getIndexInfo(null, null, originalTable, false, false);
} catch(SQLException e) { } catch(SQLException e) {
// Oracle throws an exception if the table is not found or is a SYNONMY // Oracle throws an exception if the table is not found or is a SYNONYM
rs = null; rs = null;
} }
String indexName = null; String indexName = null;
......
...@@ -52,8 +52,6 @@ public abstract class FileBase { ...@@ -52,8 +52,6 @@ public abstract class FileBase {
ok = true; ok = true;
} else if(f.endsWith(Constants.SUFFIX_LOB_FILE)) { } else if(f.endsWith(Constants.SUFFIX_LOB_FILE)) {
ok = true; ok = true;
} else if(f.endsWith(Constants.SUFFIX_SUMMARY_FILE)) {
ok = true;
} else if(all) { } else if(all) {
if(f.endsWith(Constants.SUFFIX_LOCK_FILE)) { if(f.endsWith(Constants.SUFFIX_LOCK_FILE)) {
ok = true; ok = true;
......
...@@ -840,4 +840,11 @@ public class Recover implements DataHandler { ...@@ -840,4 +840,11 @@ public class Recover implements DataHandler {
return null; return null;
} }
/**
* INTERNAL
*/
public Object getLobSyncObject() {
return this;
}
} }
...@@ -72,6 +72,7 @@ public class RunScript { ...@@ -72,6 +72,7 @@ public class RunScript {
String script = "backup.sql"; String script = "backup.sql";
String options = null; String options = null;
boolean continueOnError = false; boolean continueOnError = false;
boolean showTime = false;
for (int i = 0; args != null && i < args.length; i++) { for (int i = 0; args != null && i < args.length; i++) {
if (args[i].equals("-url")) { if (args[i].equals("-url")) {
url = args[++i]; url = args[++i];
...@@ -83,6 +84,8 @@ public class RunScript { ...@@ -83,6 +84,8 @@ public class RunScript {
continueOnError = true; continueOnError = true;
} else if (args[i].equals("-script")) { } else if (args[i].equals("-script")) {
script = args[++i]; script = args[++i];
} else if (args[i].equals("-time")) {
showTime = true;
} else if (args[i].equals("-driver")) { } else if (args[i].equals("-driver")) {
String driver = args[++i]; String driver = args[++i];
try { try {
...@@ -117,8 +120,10 @@ public class RunScript { ...@@ -117,8 +120,10 @@ public class RunScript {
} }
// } // }
time = System.currentTimeMillis() - time; time = System.currentTimeMillis() - time;
if(showTime) {
System.out.println("Done in " + time + " ms"); System.out.println("Done in " + time + " ms");
} }
}
/** /**
* Executes the SQL commands in a script file against a database. * Executes the SQL commands in a script file against a database.
......
...@@ -195,9 +195,9 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData { ...@@ -195,9 +195,9 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
} }
/** /**
* Returns whether the last column accessed was a null value. * Returns whether the last column accessed was null.
* *
* @return true if the last column accessed was a null value * @return true if the last column accessed was null
*/ */
public boolean wasNull() throws SQLException { public boolean wasNull() throws SQLException {
return wasNull; return wasNull;
......
...@@ -46,20 +46,20 @@ public class Cache2Q implements Cache { ...@@ -46,20 +46,20 @@ public class Cache2Q implements Cache {
values = new CacheObject[len]; values = new CacheObject[len];
sizeIn = sizeOut = sizeMain = 0; sizeIn = sizeOut = sizeMain = 0;
sizeRecords = 0; sizeRecords = 0;
recalcMax(); recalculateMax();
} }
void setPercentIn(int percent) { void setPercentIn(int percent) {
percentIn = percent; percentIn = percent;
recalcMax(); recalculateMax();
} }
void setPercentOut(int percent) { void setPercentOut(int percent) {
percentOut = percent; percentOut = percent;
recalcMax(); recalculateMax();
} }
private void recalcMax() { private void recalculateMax() {
maxMain = maxSize; maxMain = maxSize;
maxIn = maxSize * percentIn / 100; maxIn = maxSize * percentIn / 100;
maxOut = maxSize * percentOut / 100; maxOut = maxSize * percentOut / 100;
...@@ -305,7 +305,7 @@ public class Cache2Q implements Cache { ...@@ -305,7 +305,7 @@ public class Cache2Q implements Cache {
public void setMaxSize(int newSize) throws SQLException { public void setMaxSize(int newSize) throws SQLException {
maxSize = newSize < 0 ? 0 : newSize; maxSize = newSize < 0 ? 0 : newSize;
recalcMax(); recalculateMax();
removeOld(); removeOld();
} }
......
...@@ -152,17 +152,17 @@ public class DateTimeUtils { ...@@ -152,17 +152,17 @@ public class DateTimeUtils {
if(s.endsWith("Z")) { if(s.endsWith("Z")) {
s = s.substring(0, s.length()-1); s = s.substring(0, s.length()-1);
} else { } else {
int tzstart = s.indexOf('+', s2 + 1); int timezoneStart = s.indexOf('+', s2 + 1);
if(tzstart < 0) { if(timezoneStart < 0) {
tzstart = s.indexOf('-', s2 + 1); timezoneStart = s.indexOf('-', s2 + 1);
} }
if(tzstart >= 0) { if(timezoneStart >= 0) {
String tzName = "GMT" + s.substring(tzstart); String tzName = "GMT" + s.substring(timezoneStart);
tz = TimeZone.getTimeZone(tzName); tz = TimeZone.getTimeZone(tzName);
if(!tz.getID().equals(tzName)) { if(!tz.getID().equals(tzName)) {
throw Message.getSQLException(errorCode, s + " " + tz.getID() + "/" + tzName); throw Message.getSQLException(errorCode, s + " " + tz.getID() + "/" + tzName);
} }
s = s.substring(0, tzstart); s = s.substring(0, timezoneStart);
} }
} }
......
...@@ -23,7 +23,7 @@ public class ExactUTF8InputStreamReader extends Reader { ...@@ -23,7 +23,7 @@ public class ExactUTF8InputStreamReader extends Reader {
public void close() throws IOException { public void close() throws IOException {
} }
public int read(char[] cbuf, int off, int len) throws IOException { public int read(char[] chars, int off, int len) throws IOException {
for(int i=0; i<len; i++, off++) { for(int i=0; i<len; i++, off++) {
int x = in.read(); int x = in.read();
if(x < 0) { if(x < 0) {
...@@ -31,11 +31,11 @@ public class ExactUTF8InputStreamReader extends Reader { ...@@ -31,11 +31,11 @@ public class ExactUTF8InputStreamReader extends Reader {
} }
x = x & 0xff; x = x & 0xff;
if(x < 0x80) { if(x < 0x80) {
cbuf[off] = (char)x; chars[off] = (char)x;
} else if(x >= 0xe0) { } else if(x >= 0xe0) {
cbuf[off] = (char)(((x & 0xf) << 12) + ((in.read() & 0x3f) << 6) + (in.read() & 0x3f)); chars[off] = (char)(((x & 0xf) << 12) + ((in.read() & 0x3f) << 6) + (in.read() & 0x3f));
} else { } else {
cbuf[off] = (char)(((x & 0x1f) << 6) + (in.read() & 0x3f)); chars[off] = (char)(((x & 0x1f) << 6) + (in.read() & 0x3f));
} }
} }
return len; return len;
......
...@@ -386,9 +386,9 @@ public class StringUtils { ...@@ -386,9 +386,9 @@ public class StringUtils {
* Parses a date using a format string * Parses a date using a format string
*/ */
public static Date parseDateTime(String date, String format, String locale, String timezone) throws SQLException { public static Date parseDateTime(String date, String format, String locale, String timezone) throws SQLException {
SimpleDateFormat sdf = getDateFormat(format, locale, timezone); SimpleDateFormat dateFormat = getDateFormat(format, locale, timezone);
try { try {
return sdf.parse(date); return dateFormat.parse(date);
} catch(ParseException e) { } catch(ParseException e) {
throw Message.getSQLException(Message.PARSE_ERROR_1, date); throw Message.getSQLException(Message.PARSE_ERROR_1, date);
} }
......
...@@ -51,7 +51,7 @@ public class CompareMode { ...@@ -51,7 +51,7 @@ public class CompareMode {
public static Collator getCollator(String name) { public static Collator getCollator(String name) {
Collator result = null; Collator result = null;
if(name.length() == 2) { if(name.length() == 2) {
Locale locale = new Locale(name.toLowerCase()); Locale locale = new Locale(name.toLowerCase(), "");
if(compareLocaleNames(locale, name)) { if(compareLocaleNames(locale, name)) {
result = Collator.getInstance(locale); result = Collator.getInstance(locale);
} }
......
...@@ -607,7 +607,14 @@ public abstract class Value { ...@@ -607,7 +607,14 @@ public abstract class Value {
return false; return false;
} }
public void unlink(DataHandler handler) throws SQLException { public void unlink() throws SQLException {
}
public boolean isFileBased() {
return false;
}
public void close() throws SQLException {
} }
} }
...@@ -338,20 +338,28 @@ public class ValueLob extends Value { ...@@ -338,20 +338,28 @@ public class ValueLob extends Value {
return linked; return linked;
} }
public void unlink(DataHandler handler) throws SQLException { public void close() throws SQLException {
if(fileName != null) {
if(tempFile != null) {
tempFile.stopAutoDelete();
}
deleteFile(handler, fileName);
}
}
public void unlink() throws SQLException {
if (linked && fileName != null) { if (linked && fileName != null) {
String temp; String temp;
// synchronize on the database, to avoid concurrent temp file creation / deletion / backup
synchronized(handler) {
if(Constants.LOB_FILES_IN_DIRECTORIES) { if(Constants.LOB_FILES_IN_DIRECTORIES) {
temp = getFileName(handler, -1, objectId); temp = getFileName(handler, -1, objectId);
} else { } else {
// just to get a filename - an empty file will be created // just to get a filename - an empty file will be created
temp = handler.createTempFile(); temp = handler.createTempFile();
} }
// delete the temp file deleteFile(handler, temp);
// TODO could there be a race condition? maybe another thread creates the file again? renameFile(handler, fileName, temp);
FileUtils.delete(temp);
// rename the current file to the temp file
FileUtils.rename(fileName, temp);
tempFile = FileStore.open(handler, temp, null); tempFile = FileStore.open(handler, temp, null);
tempFile.autoDelete(); tempFile.autoDelete();
tempFile.closeSilently(); tempFile.closeSilently();
...@@ -359,6 +367,7 @@ public class ValueLob extends Value { ...@@ -359,6 +367,7 @@ public class ValueLob extends Value {
linked = false; linked = false;
} }
} }
}
public Value link(DataHandler handler, int tabId) throws SQLException { public Value link(DataHandler handler, int tabId) throws SQLException {
if(fileName == null) { if(fileName == null) {
...@@ -374,7 +383,7 @@ public class ValueLob extends Value { ...@@ -374,7 +383,7 @@ public class ValueLob extends Value {
} }
copy.tableId = tabId; copy.tableId = tabId;
String live = getFileName(handler, copy.tableId, copy.objectId); String live = getFileName(handler, copy.tableId, copy.objectId);
FileUtils.copy(fileName, live); copyFile(handler, fileName, live);
copy.fileName = live; copy.fileName = live;
copy.linked = true; copy.linked = true;
return copy; return copy;
...@@ -384,7 +393,7 @@ public class ValueLob extends Value { ...@@ -384,7 +393,7 @@ public class ValueLob extends Value {
String live = getFileName(handler, tableId, objectId); String live = getFileName(handler, tableId, objectId);
tempFile.stopAutoDelete(); tempFile.stopAutoDelete();
tempFile = null; tempFile = null;
FileUtils.rename(fileName, live); renameFile(handler, fileName, live);
fileName = live; fileName = live;
linked = true; linked = true;
} }
...@@ -575,7 +584,7 @@ public class ValueLob extends Value { ...@@ -575,7 +584,7 @@ public class ValueLob extends Value {
for(int i=0; i<list.length; i++) { for(int i=0; i<list.length; i++) {
String name = list[i]; String name = list[i];
if(name.startsWith(prefix+"." + tableId) && name.endsWith(".lob.db")) { if(name.startsWith(prefix+"." + tableId) && name.endsWith(".lob.db")) {
FileUtils.delete(name); deleteFile(handler, name);
} }
} }
} }
...@@ -589,7 +598,7 @@ public class ValueLob extends Value { ...@@ -589,7 +598,7 @@ public class ValueLob extends Value {
} else { } else {
String name = list[i]; String name = list[i];
if(name.endsWith(".t" + tableId + ".lob.db")) { if(name.endsWith(".t" + tableId + ".lob.db")) {
FileUtils.delete(name); deleteFile(handler, name);
} }
} }
} }
...@@ -599,4 +608,27 @@ public class ValueLob extends Value { ...@@ -599,4 +608,27 @@ public class ValueLob extends Value {
return compression; return compression;
} }
public boolean isFileBased() {
return fileName != null;
}
private static synchronized void deleteFile(DataHandler handler, String fileName) throws SQLException {
// synchronize on the database, to avoid concurrent temp file creation / deletion / backup
synchronized(handler.getLobSyncObject()) {
FileUtils.delete(fileName);
}
}
private static synchronized void renameFile(DataHandler handler, String oldName, String newName) throws SQLException {
synchronized(handler.getLobSyncObject()) {
FileUtils.rename(oldName, newName);
}
}
private void copyFile(DataHandler handler, String fileName, String live) throws SQLException {
synchronized(handler.getLobSyncObject()) {
FileUtils.copy(fileName, live);
}
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论