private void reloadTables() throws IOException {

		reloadInProgress = true;
		try {
			dbParms.refresh();

			Hashtable<String, Table> oldTables = tables;
			tables = new Hashtable<>();
			// NOTE: master table invalidates any obsolete tables during refresh
			TableRecord[] tableRecords = masterTable.refreshTableRecords();
			for (TableRecord tableRecord : tableRecords) {

				String tableName = tableRecord.getName();

				// Process each primary tables
				if (tableRecord.getIndexedColumn() < 0) {
					Table t = oldTables.get(tableName);
					if (t == null || t.isInvalid()) {
						oldTables.remove(tableName);
						t = new Table(this, tableRecord);
						notifyTableAdded(t);
					}
					tables.put(tableName, t);
				}

				// secondary table indexes
				else if (!oldTables.containsKey(tableName)) {
					IndexTable.getIndexTable(this, tableRecord);
				}
			}
		}
		finally {
			reloadInProgress = false;
		}
	}
Reload tables from database following an undo or redo.
@throws IOException thrown if IO error occurs.
Ghidra/Framework/DB/src/main/java/db/DBHandle.java