📄 database.java
字号:
public DiskFile getDataFile() {
return fileData;
}
public DiskFile getIndexFile() {
return fileIndex;
}
public synchronized void setCacheSize(int kb) throws SQLException {
if (fileData != null) {
fileData.getCache().setMaxSize(kb);
int valueIndex = kb <= 32 ? kb : (kb >>> SysProperties.CACHE_SIZE_INDEX_SHIFT);
fileIndex.getCache().setMaxSize(valueIndex);
cacheSize = kb;
}
}
public synchronized void setMasterUser(User user) throws SQLException {
addDatabaseObject(systemSession, user);
systemSession.commit(true);
}
public Role getPublicRole() {
return publicRole;
}
public String getTempTableName(int sessionId) {
String tempName;
for (int i = 0;; i++) {
tempName = Constants.TEMP_TABLE_PREFIX + sessionId + "_" + i;
if (mainSchema.findTableOrView(null, tempName) == null) {
break;
}
}
return tempName;
}
public void setCompareMode(CompareMode compareMode) {
this.compareMode = compareMode;
}
public CompareMode getCompareMode() {
return compareMode;
}
public String getCluster() {
return cluster;
}
public void setCluster(String cluster) {
this.cluster = cluster;
}
public void checkWritingAllowed() throws SQLException {
if (readOnly) {
throw Message.getSQLException(ErrorCode.DATABASE_IS_READ_ONLY);
}
if (noDiskSpace) {
throw Message.getSQLException(ErrorCode.NO_DISK_SPACE_AVAILABLE);
}
}
public boolean getReadOnly() {
return readOnly;
}
public void setWriteDelay(int value) {
writeDelay = value;
if (writer != null) {
writer.setWriteDelay(value);
}
}
public void deleteLogFileLater(String fileName) throws SQLException {
if (writer != null) {
writer.deleteLogFileLater(fileName);
} else {
FileUtils.delete(fileName);
}
}
public Class loadUserClass(String className) throws SQLException {
try {
return ClassUtils.loadUserClass(className);
} catch (ClassNotFoundException e) {
throw Message.getSQLException(ErrorCode.CLASS_NOT_FOUND_1, new String[] { className }, e);
} catch (NoClassDefFoundError e) {
throw Message.getSQLException(ErrorCode.CLASS_NOT_FOUND_1, new String[] { className }, e);
}
}
public void setEventListener(String className) throws SQLException {
if (className == null || className.length() == 0) {
eventListener = null;
} else {
try {
eventListener = (DatabaseEventListener) loadUserClass(className).newInstance();
String url = databaseURL;
if (cipher != null) {
url += ";CIPHER=" + cipher;
}
eventListener.init(url);
} catch (Throwable e) {
throw Message.getSQLException(ErrorCode.ERROR_SETTING_DATABASE_EVENT_LISTENER_2, new String[] {
className, e.toString() }, e);
}
}
}
public synchronized void freeUpDiskSpace() throws SQLException {
long sizeAvailable = 0;
if (emergencyReserve != null) {
sizeAvailable = emergencyReserve.length();
long newLength = sizeAvailable / 4;
if (newLength < SysProperties.EMERGENCY_SPACE_MIN) {
newLength = 0;
noDiskSpace = true;
}
emergencyReserve.setLength(newLength);
}
if (eventListener != null) {
eventListener.diskSpaceIsLow(sizeAvailable);
}
}
/**
* Set the progress of a long running operation.
* This method calls the {@link DatabaseEventListener} if one is registered.
*
* @param state the {@link DatabaseEventListener} state
* @param name the object name
* @param x the current position
* @param max the highest value
*/
public void setProgress(int state, String name, int x, int max) {
if (eventListener != null) {
try {
eventListener.setProgress(state, name, x, max);
} catch (Exception e2) {
// ignore this second (user made) exception
}
}
}
public void exceptionThrown(SQLException e, String sql) {
if (eventListener != null) {
try {
eventListener.exceptionThrown(e, sql);
} catch (Exception e2) {
// ignore this second (user made) exception
}
}
}
public void sync() throws SQLException {
if (log != null) {
log.sync();
}
if (fileData != null) {
fileData.sync();
}
if (fileIndex != null) {
fileIndex.sync();
}
}
public int getMaxMemoryRows() {
return maxMemoryRows;
}
public void setMaxMemoryRows(int value) {
this.maxMemoryRows = value;
}
public void setMaxMemoryUndo(int value) {
this.maxMemoryUndo = value;
}
public int getMaxMemoryUndo() {
return maxMemoryUndo;
}
public int getChecksum(byte[] data, int start, int end) {
int x = 0;
while (start < end) {
x += data[start++];
}
return x;
}
public void setLockMode(int lockMode) {
this.lockMode = lockMode;
}
public int getLockMode() {
return lockMode;
}
public synchronized void setCloseDelay(int value) {
this.closeDelay = value;
}
public boolean getLogIndexChanges() {
return logIndexChanges;
}
public synchronized void setLog(int level) throws SQLException {
if (logLevel == level) {
return;
}
boolean logData;
boolean logIndex;
switch (level) {
case 0:
logData = false;
logIndex = false;
break;
case 1:
logData = true;
logIndex = false;
break;
case 2:
logData = true;
logIndex = true;
break;
default:
throw Message.getInternalError("level=" + level);
}
if (fileIndex != null) {
fileIndex.setLogChanges(logIndex);
}
if (log != null) {
log.setDisabled(!logData);
log.checkpoint();
}
traceSystem.getTrace(Trace.DATABASE).error("SET LOG " + level, null);
logLevel = level;
}
public ObjectArray getAllStorages() {
return new ObjectArray(storageMap.values());
}
public boolean getRecovery() {
return recovery;
}
public Session getSystemSession() {
return systemSession;
}
public String getDatabasePath() {
if (persistent) {
return FileUtils.getAbsolutePath(databaseName);
} else {
return null;
}
}
public void handleInvalidChecksum() throws SQLException {
SQLException e = Message.getSQLException(ErrorCode.FILE_CORRUPTED_1, "wrong checksum");
if (!recovery) {
throw e;
} else {
traceSystem.getTrace(Trace.DATABASE).error("recover", e);
}
}
public boolean isClosing() {
return closing;
}
public int getWriteDelay() {
return writeDelay;
}
public int getCacheSize() {
return cacheSize;
}
public void setMaxLengthInplaceLob(int value) {
this.maxLengthInplaceLob = value;
}
public int getMaxLengthInplaceLob() {
return maxLengthInplaceLob;
}
public void setIgnoreCase(boolean b) {
ignoreCase = b;
}
public boolean getIgnoreCase() {
if (starting) {
// tables created at startup must not be converted to ignorecase
return false;
}
return ignoreCase;
}
public synchronized void setDeleteFilesOnDisconnect(boolean b) {
this.deleteFilesOnDisconnect = b;
}
public String getLobCompressionAlgorithm(int type) {
return lobCompressionAlgorithm;
}
public void setLobCompressionAlgorithm(String stringValue) {
this.lobCompressionAlgorithm = stringValue;
}
public void notifyFileSize(long length) {
if (length > biggestFileSize) {
biggestFileSize = length;
setMaxLogSize(0);
}
}
public synchronized void setMaxLogSize(long value) {
long minLogSize = biggestFileSize / Constants.LOG_SIZE_DIVIDER;
minLogSize = Math.max(value, minLogSize);
long currentLogSize = getLog().getMaxLogSize();
if (minLogSize > currentLogSize || (value > 0 && minLogSize > value)) {
// works for currentLogSize <= 0 as well
value = minLogSize;
}
if (value > 0) {
getLog().setMaxLogSize(value);
}
}
public void setAllowLiterals(int value) {
this.allowLiterals = value;
}
public int getAllowLiterals() {
if (starting) {
return Constants.ALLOW_LITERALS_ALL;
}
return allowLiterals;
}
public boolean getOptimizeReuseResults() {
return optimizeReuseResults;
}
public void setOptimizeReuseResults(boolean b) {
optimizeReuseResults = b;
}
public String getCacheType() {
return cacheType;
}
public void invalidateIndexSummary() throws SQLException {
if (indexSummaryValid) {
indexSummaryValid = false;
log.invalidateIndexSummary();
}
}
public boolean getIndexSummaryValid() {
return indexSummaryValid;
}
public Object getLobSyncObject() {
return lobSyncObject;
}
public int getSessionCount() {
return sessions.size();
}
public void setReferentialIntegrity(boolean b) {
referentialIntegrity = b;
}
public boolean getReferentialIntegrity() {
return referentialIntegrity;
}
public boolean isStarting() {
return starting;
}
public boolean isMultiVersion() {
return multiVersion;
}
public void opened() throws SQLException {
if (eventListener != null) {
eventListener.opened();
}
}
public void setMode(Mode mode) {
this.mode = mode;
}
public Mode getMode() {
return mode;
}
public boolean getMultiThreaded() {
return multiThreaded;
}
public void setMultiThreaded(boolean multiThreaded) {
this.multiThreaded = multiThreaded;
}
public void setMaxOperationMemory(int maxOperationMemory) {
this.maxOperationMemory = maxOperationMemory;
}
public int getMaxOperationMemory() {
return maxOperationMemory;
}
public Session getExclusiveSession() {
return exclusiveSession;
}
public void setExclusiveSession(Session session) {
this.exclusiveSession = session;
}
public boolean getLobFilesInDirectories() {
return lobFilesInDirectories;
}
public SmallLRUCache getLobFileListCache() {
return lobFileListCache;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -