an inner member of an outer-join clause. This is not allowed if the table also participates in a regular join clause.

This exception is almost killing me today !!

an inner member of an outer-join clause. This is not allowed if the table also participates in a regular join clause.

after try and tests and resolves, wiki helps me..

Alternatives

The effect of an outer join can also be obtained using a UNION ALL between an INNER JOIN and a SELECT of the rows in the "main" table that do not fulfill the join condition. For example
SELECT employee.LastName, employee.DepartmentID, department.DepartmentName
FROM employee
LEFT OUTER JOIN department ON employee.DepartmentID = department.DepartmentID;
can also be written as
SELECT employee.LastName, employee.DepartmentID, department.DepartmentName
FROM employee
INNER JOIN department ON employee.DepartmentID = department.DepartmentID
 
UNION ALL
 
SELECT employee.LastName, employee.DepartmentID, CAST(NULL AS VARCHAR(20))
FROM employee
WHERE NOT EXISTS (
    SELECT * FROM department
             WHERE employee.DepartmentID = department.DepartmentID)

looks easy, turning back, maybe i should have became calmer and more relax, which should be all the case !!

so simply, overall, use less outer join !!!!! when must there is outer join, cannot mix regular join there.

http://en.wikipedia.org/wiki/Join_(SQL)

Java IOException Not enough space

Nice article on explaining how to resolve java not enough space exception. Just encountered this exception during the day

$ ./S84got-oo-pra1 start [property] java.io.IOException: Not enough space [property] at java.lang.UNIXProcess.forkAndExec(Native Method) [property] at java.lang.UNIXProcess.<init>(UNIXProcess.java:53) [property] at java.lang.ProcessImpl.start(ProcessImpl.java:65) [property] at java.lang.ProcessBuilder.start(ProcessBuilder.java:451) [property] at java.lang.Runtime.exec(Runtime.java:591) [property] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [property] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [property] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [property] at java.lang.reflect.Method.invoke(Method.java:585) [property] at org.apache.tools.ant.taskdefs.Execute$Java13CommandLauncher.exec(Execute.java:828) [property] at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:445) [property] at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:459) [property] at org.apache.tools.ant.taskdefs.Execute.getProcEnvironment(Execute.java:165) [property] at org.apache.tools.ant.taskdefs.Property.loadEnvironment(Property.java:526) [property] at org.apache.tools.ant.taskdefs.Property.execute(Property.java:403) [property] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288) [property] at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source) [property] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [property] at java.lang.reflect.Method.invoke(Method.java:585) [property] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105) [property] at org.apache.tools.ant.Task.perform(Task.java:348) [property] at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:62) [property] at net.sf.antcontrib.logic.IfTask.execute(IfTask.java:197) [property] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [property] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [property] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [property] at java.lang.reflect.Method.invoke(Method.java:585) [property] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105) [property] at org.apache.tools.ant.TaskAdapter.execute(TaskAdapter.java:134) [property] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288) [property] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [property] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [property] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [property] at java.lang.reflect.Method.invoke(Method.java:585) [property] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105) [property] at org.apache.tools.ant.Task.perform(Task.java:348) [property] at org.apache.tools.ant.Target.execute(Target.java:357) [property] at org.apache.tools.ant.helper.ProjectHelper2.parse(ProjectHelper2.java:140) [property] at org.apache.tools.ant.ProjectHelper.configureProject(ProjectHelper.java:96) [property] at org.apache.tools.ant.Main.runBuild(Main.java:683) [property] at org.apache.tools.ant.Main.startAnt(Main.java:199) [property] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257) [property] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)  BUILD FAILED /apps/gmmt/bea/weblogic922/bin/init-1.9/init.xml:51: The following error occurred while executing this line: /apps/gmmt/bea/weblogic922/bin/init-1.9/common-macros.xml:233: Please export env. variable START_DIR and rerun! usage working directory when starting the server

adding more swap space solved the issue

 /usr/sbin/mkfile 1g /path/to/swapfile /usr/bin/swap -a /path/to/swapfile /usr/bin/swap -l

http://wiki.hudson-ci.org/display/HUDSON/IOException+Not+enough+space

java email

		Properties props = new Properties();
		props.put("mail.host",mailServer);
		props.put("mail.transport.protocol", "smtp");

		// create some properties and get the default Session
		Session session = Session.getDefaultInstance(props, null);
		session.setDebug(debug);

		// create a message
		Message msg = new MimeMessage(session);

		// set the from and to address
		InternetAddress addressFrom = new InternetAddress(from);
		msg.setFrom(addressFrom);

		InternetAddress[] addressTo = new InternetAddress[recipients.length];
		for (int i = 0; i < recipients.length; i++) {
			addressTo[i] = new InternetAddress(recipients[i]);
		}
		msg.setRecipients(Message.RecipientType.TO, addressTo);

		// Optional : You can also set your custom headers in the Email if you
		// Want
		msg.addHeader("MyHeaderName", "myHeaderValue");

		
		// Create the message part 
		BodyPart messageBodyPart = new MimeBodyPart();

		// Fill the message
		if((Integer)results.get("recentRun") > 0) {
			msg.setSubject(MessageFormat.format(subject, ""));	
			//MessageFormat.format(subject, "is running");//dynamic properties placeholder ??
			messageBodyPart.setContent(MessageFormat.format((String) message,"",SYD.format(results.get("latestRun"))),"text/html");
		}
		else {
			msg.setSubject(MessageFormat.format(subject, "NOT "));
			//MessageFormat.format(subject, "is not running");//dynamic properties placeholder ??
			messageBodyPart.setContent(MessageFormat.format((String) message,"<b><FONT COLOR='RED'>NOT</FONT></b> ",SYD.format(results.get("latestRun"))),"text/html");
		}
		
		Multipart multipart = new MimeMultipart();
		multipart.addBodyPart(messageBodyPart);

/*		
 * // Part two is attachment
		messageBodyPart = new MimeBodyPart();
		//DataSource source = new FileDataSource("C:\\OOLCheck\\OOLReport.pdf");
		DataSource source = new FileDataSource("OOLReport.pdf");
		messageBodyPart.setDataHandler(new DataHandler(source));
		messageBodyPart.setFileName("OOLReport.pdf");

		multipart.addBodyPart(messageBodyPart);
		
		messageBodyPart = new MimeBodyPart();
		//DataSource source2 = new FileDataSource("C:\\OOLCheck\\OOLReport_OEReport.pdf");
		DataSource source2 = new FileDataSource("OOLReport_OEReport.pdf");
		messageBodyPart.setDataHandler(new DataHandler(source2));
		messageBodyPart.setFileName("OOLReport_OEReport.pdf");

		multipart.addBodyPart(messageBodyPart);

*/		// Put parts in message
		msg.setContent(multipart,"text/html");
		
		try {
			Transport.send(msg);
			}catch(MessagingException e){
			}

spring dynamic properties

Nice post: http://amitsavm.blogspot.com/2012/03/dynamic-placeholder-substitution-in.html#comment-form

Basically, to use java.text.MessageFormat to replace the placeholder runtime

GET_TABLE_COUNT = select count(1) from {0}

@SuppressWarnings(“all”)
    public static String getProperty(final String key, final String[] arguments){
        return MessageFormat.format(prop.get(key), arguments);
    }