Skip site navigation (1) Skip section navigation (2)

Re: Postgres Partitions not working with hibernate 4.1.6.Final

From: "Freddie Burgess" <fburgess(at)radiantblue(dot)com>
To: "'Jaime Casanova'" <jaime(at)2ndquadrant(dot)com>
Cc: <pgsql-bugs(at)postgresql(dot)org>
Subject: Re: Postgres Partitions not working with hibernate 4.1.6.Final
Date: 2012-09-25 21:34:20
Message-ID: 001501cd9b65$866b6600$93423200$ (view raw, whole thread or download thread mbox)
Lists: pgsql-bugs
Hi Jaime,

We have our partitioning setup exactly like the instructions in
ddl-partitioning.html and prior to the upgrade to Hibernate 4.1.6 ingest was
working flawlessly as long as we set the
rtitionBatcherFactory in Hibernate. If we comment out this setting in our
old configuration using Hibernate 3.2.2.GA inserts into our partitioned
tables breaks as well.

I'm not sure how org.hibernate.jdbc.Batcher is affecting partition inserts.

I previously omitted the return call to the PostgresPartitionBatcher module
component to the batcher process.

package im.empl.cores.service.ingest.postgres;

import java.lang.reflect.Field;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import org.apache.log4j.Logger;
import org.hibernate.HibernateException;
import org.hibernate.engine.jdbc.batch.spi.Batch;
import org.hibernate.engine.jdbc.batch.spi.BatchKey;
import org.hibernate.engine.jdbc.batch.spi.BatchObserver;
import org.hibernate.engine.jdbc.spi.JdbcCoordinator;

public class PostgresPartitionBatcher implements Batch
	private static Logger logger =
	protected void doExecuteBatch() {

		try {
			 * use reflection to access the private field of the
super class
			 * ugly but necessary
			Field field =

			int batchSize = field.getInt(this);
			if (batchSize != 0) {
				try {
//					ps.executeBatch();
				catch (RuntimeException re) {
					throw re;
				finally {
					batchSize = 0;
		catch (Exception e) {
			logger.error("Batch execution failed.", e);
			throw new HibernateException(
					"Unable to execute batch.");

	public void addObserver(BatchObserver arg0) {
		// TODO Auto-generated method stub

	public void addToBatch() {
		// TODO Auto-generated method stub

	public void execute() {
		// TODO Auto-generated method stub

	public PreparedStatement getBatchStatement(String arg0, boolean
arg1) {
		// TODO Auto-generated method stub
		return null;

	public BatchKey getKey() {
		// TODO Auto-generated method stub
		return null;

	public void release() {
		// TODO Auto-generated method stub

-----Original Message-----
From: jcasanov(at)systemguards(dot)com(dot)ec [mailto:jcasanov(at)systemguards(dot)com(dot)ec] On
Behalf Of Jaime Casanova
Sent: Tuesday, September 25, 2012 4:50 PM
To: Freddie Burgess
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: [BUGS] Postgres Partitions not working with hibernate

On Tue, Sep 25, 2012 at 3:12 PM, Freddie Burgess <fburgess(at)radiantblue(dot)com>
> Does anyone know why the previous .jdbc.batcher logic managed the 
> postgres partitioned inserts without any issues?
> Are there any other alternative that will allow us to insert into a 
> Postgres partition table without making massive code changes?

don't know about hibernate or that strange way to insert into partitions.
the postgresql's way is to create triggers on parent table to route the
inserts into the partitions as described here:

> Would upgrading from 4.1.6.Final to Hibernate 4.1.7 in Linux, fix this 
> partitioning ingest problem?

don't know, but that certainly looks like a hibernate bug, not a postgresql

Jaime Casanova
Professional PostgreSQL: Soporte 24x7 y capacitación

In response to

pgsql-bugs by date

Next:From: Stefan PrölsDate: 2012-09-26 07:23:52
Subject: Re: BUG #7567: Sequences not properly replicated
Previous:From: Jaime CasanovaDate: 2012-09-25 20:50:01
Subject: Re: Postgres Partitions not working with hibernate 4.1.6.Final

Privacy Policy | About PostgreSQL
Copyright © 1996-2017 The PostgreSQL Global Development Group