"	jarOwner	INT NOT NULL," +
"	jarOwner	NAME NOT NULL," +
	public void initializeSQLJSchema()	throws SQLException	{		Statement stmt = m_connection.createStatement();		stmt.execute(			"CREATE TABLE sqlj.jar_repository(" +			"	jarId		SERIAL PRIMARY KEY," +			"	jarName		VARCHAR(100) UNIQUE NOT NULL," +			"	jarOrigin   VARCHAR(500) NOT NULL," +			"	jarOwner	INT NOT NULL," +			"   deploymentDesc INT" +		")");		stmt.execute("GRANT SELECT ON sqlj.jar_repository TO public");		stmt.execute(			"CREATE TABLE sqlj.jar_entry(" +			"   entryId     SERIAL PRIMARY KEY," +			"	entryName	VARCHAR(200) NOT NULL," +			"	jarId		INT NOT NULL REFERENCES sqlj.jar_repository ON DELETE CASCADE," +			"   entryImage  BYTEA NOT NULL," +			"   UNIQUE(jarId, entryName)" +			")");		stmt.execute("GRANT SELECT ON sqlj.jar_entry TO public");		stmt.execute(			"ALTER TABLE sqlj.jar_repository" +			"   ADD FOREIGN KEY (deploymentDesc) REFERENCES sqlj.jar_entry ON DELETE SET NULL");		// Create the table maintaining the class path.		//		stmt.execute(			"CREATE TABLE sqlj.classpath_entry(" +			"	schemaName	VARCHAR(30) NOT NULL," +			"	ordinal		INT2 NOT NULL," +	// Ordinal in class path			"	jarId		INT NOT NULL REFERENCES sqlj.jar_repository ON DELETE CASCADE," +			"	PRIMARY KEY(schemaName, ordinal)" +			")");		stmt.execute("GRANT SELECT ON sqlj.classpath_entry TO public");		// These are the proposed SQL standard methods.		//		stmt.execute(			"CREATE FUNCTION sqlj.install_jar(VARCHAR, VARCHAR, BOOLEAN) RETURNS void" +			"	AS 'org.postgresql.pljava.management.Commands.installJar'" +			"	LANGUAGE java SECURITY DEFINER");		stmt.execute(			"CREATE FUNCTION sqlj.replace_jar(VARCHAR, VARCHAR, BOOLEAN) RETURNS void" +			"	AS 'org.postgresql.pljava.management.Commands.replaceJar'" +			"	LANGUAGE java SECURITY DEFINER");		stmt.execute(			"CREATE FUNCTION sqlj.remove_jar(VARCHAR, BOOLEAN) RETURNS void" +			"	AS 'org.postgresql.pljava.management.Commands.removeJar'" +			"	LANGUAGE java SECURITY DEFINER");		// Not proposed, but very useful if you want to send the image over		// your JDBC connection.		//		stmt.execute(			"CREATE FUNCTION sqlj.install_jar(BYTEA, VARCHAR, BOOLEAN) RETURNS void" +			"	AS 'org.postgresql.pljava.management.Commands.installJar'" +			"	LANGUAGE java SECURITY DEFINER");		stmt.execute(			"CREATE FUNCTION sqlj.replace_jar(BYTEA, VARCHAR, BOOLEAN) RETURNS void" +			"	AS 'org.postgresql.pljava.management.Commands.replaceJar'" +			"	LANGUAGE java SECURITY DEFINER");		// This function is not as proposed. It's more Java'ish. The proposal		// using sqlj.alter_jar_path is in my opinion bloated and will not be		// well received in the Java community. Luckily, the support is suggested		// to be optional.		//		stmt.execute(			"CREATE FUNCTION sqlj.set_classpath(VARCHAR, VARCHAR) RETURNS void" +			"	AS 'org.postgresql.pljava.management.Commands.setClassPath'" +			"	LANGUAGE java SECURITY DEFINER");		stmt.execute(			"CREATE FUNCTION sqlj.get_classpath(VARCHAR) RETURNS VARCHAR" +			"	AS 'org.postgresql.pljava.management.Commands.getClassPath'" +			"	LANGUAGE java STABLE SECURITY DEFINER");		stmt.close();	}