/* * Class: org_postgresql_pljava_internal_TupleDesc * Method: _getOid * Signature: (JI)Lorg/postgresql/pljava/internal/Oid; */ JNIEXPORT jobject JNICALL Java_org_postgresql_pljava_internal_TupleDesc__1getOid(JNIEnv* env, jclass cls, jlong _this, jint index) { jobject result = 0; BEGIN_NATIVE Ptr2Long p2l; p2l.longVal = _this; PG_TRY(); { Oid typeId = SPI_gettypeid((TupleDesc)p2l.ptrVal, (int)index); if(!OidIsValid(typeId)) { Exception_throw(ERRCODE_INVALID_DESCRIPTOR_INDEX, "Invalid attribute index \"%d\"", (int)index); } else { result = Oid_create(typeId); } } PG_CATCH(); { Exception_throw_ERROR("SPI_gettypeid"); } PG_END_TRY(); END_NATIVE return result; }
/* * Class: org_postgresql_pljava_internal_TupleDesc * Method: _getColumnIndex * Signature: (JLjava/lang/String;)I; */ JNIEXPORT jint JNICALL Java_org_postgresql_pljava_internal_TupleDesc__1getColumnIndex(JNIEnv* env, jclass cls, jlong _this, jstring colName) { jint result = 0; BEGIN_NATIVE char* name = String_createNTS(colName); if(name != 0) { Ptr2Long p2l; p2l.longVal = _this; PG_TRY(); { result = SPI_fnumber((TupleDesc)p2l.ptrVal, name); if(result == SPI_ERROR_NOATTRIBUTE) { Exception_throw(ERRCODE_UNDEFINED_COLUMN, "Tuple has no attribute \"%s\"", name); } pfree(name); } PG_CATCH(); { Exception_throw_ERROR("SPI_fnumber"); } PG_END_TRY(); } END_NATIVE return result; }
/* * Class: org_postgresql_pljava_internal_TupleDesc * Method: _getColumnName * Signature: (JI)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_org_postgresql_pljava_internal_TupleDesc__1getColumnName(JNIEnv* env, jclass cls, jlong _this, jint index) { jstring result = 0; BEGIN_NATIVE PG_TRY(); { char* name; Ptr2Long p2l; p2l.longVal = _this; name = SPI_fname((TupleDesc)p2l.ptrVal, (int)index); if(name == 0) { Exception_throw(ERRCODE_INVALID_DESCRIPTOR_INDEX, "Invalid attribute index \"%d\"", (int)index); } else { result = String_createJavaStringFromNTS(name); pfree(name); } } PG_CATCH(); { Exception_throw_ERROR("SPI_fname"); } PG_END_TRY(); END_NATIVE return result; }
void *Mem_alloc(size_t size, const char *func, const char *file, int line) { assert(size > 0); void *p = malloc(size); if (! p) Exception_throw(&(MemoryException), func, file, line, "%s", System_getLastError()); return p; }
void *Mem_resize(void *p, long size, const char *func, const char *file, int line) { assert(p); assert(size > 0); p = realloc(p, size); if (! p) Exception_throw(&(MemoryException), func, file, line, "%s", System_getLastError()); return p; }
void *Mem_calloc(long count, long size, const char *func, const char *file, int line) { assert(count > 0); assert(size > 0); void *p = calloc(count, size); if (! p) Exception_throw(&(MemoryException), func, file, line, "%s", System_getLastError()); return p; }
static jlong _getPointer(jobject managed) { if(managed == 0) { Exception_throw(ERRCODE_INTERNAL_ERROR, "Null JavaWrapper object"); return 0; } return JNI_getLongField(managed, s_JavaWrapper_m_pointer); }
Type TupleDesc_getColumnType(TupleDesc tupleDesc, int index) { Type type; Oid typeId = SPI_gettypeid(tupleDesc, index); if(!OidIsValid(typeId)) { Exception_throw(ERRCODE_INVALID_DESCRIPTOR_INDEX, "Invalid attribute index \"%d\"", (int)index); type = 0; } else type = Type_objectTypeFromOid(typeId, Invocation_getTypeMap()); return type; }