protected void createDatabase(Configuration config) throws SQLException {
		generateRawDatabase();
		trackcallgraph = config.info.trackcallgraph;

		initConnection();
		setConnectionOnTables(db);

		try (Statement st = db.createStatement()) {
			beginTransaction(false);
			boolean commit = false;
			try {
				archtable.createTable();
				compilertable.createTable();
				repositorytable.createTable();
				pathtable.createTable();
				catstringtable.createTable();

				keyValueTable.create(st);
				keyValueTable.writeBasicInfo(config.info);
				keyValueTable.insert("k", Integer.toString(config.k));
				keyValueTable.insert("L", Integer.toString(config.L));
				commit = true;
			}
			finally {
				endTransaction(commit);
			}

			exeCategoryTable.create(st);
			exeTable.create(st);
			descTable.create(st);

			if (trackcallgraph) {
				callgraphTable.create(st);
			}

			installWeights(db, config.weightfactory);
			installIDFLookup(db, config.idflookup);
		}
		catch (final SQLException err) {
			throw new SQLException("Could not create database: " + err.getMessage());
		}
	}
Generate tables and initialize state for a new database.
@param config the database configuration
@throws SQLException if there is aproblem opening a connectino to the database
Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/client/AbstractSQLFunctionDatabase.java