CMDBuild Forum

failed create SQL view

Hi, 

I've create a function:

-- Function: cmf_asset_strutt()

CREATE OR REPLACE FUNCTION cmf_asset_strutt()

  RETURNS SETOF record AS

$BODY$BEGIN

    RETURN QUERY EXECUTE

    'select "Asset"."Description", "Struttura"."strPADRE" from "Asset", "Struttura", "Map_asset_Strutt" where "Asset"."Id" = "IdObj1" AND  "IdObj2" = "Struttura"."Id";';

END

$BODY$

  LANGUAGE plpgsql VOLATILE

  COST 100

  ROWS 1000;

ALTER FUNCTION cmf_asset_strutt() SET application_name='DEFAULT';

 

ALTER FUNCTION cmf_asset_strutt()

  OWNER TO postgres;

COMMENT ON FUNCTION cmf_asset_strutt() IS 'TYPE: function';

 

and then I've created a SQL View that use this function.

When CMDBuild start I can't access to CMDBuild gui, and in cmdbuild.log there is this Exception:

org.codehaus.jackson.map.JsonMappingException: (was java.lang.UnsupportedOperationException) (through reference chain: org.cmdbuild.services.json.dto.JsonSuccessResponse["response"]->org.cmdbuild.servlets.json.serializers.JsonDashboardListResponse["dataSources"]->java.util.ArrayList[0]->org.cmdbuild.servlets.json.serializers.JsonDataSource["output"])

at org.codehaus.jackson.map.JsonMappingException.wrapWithPath(JsonMappingException.java:218)

at org.codehaus.jackson.map.JsonMappingException.wrapWithPath(JsonMappingException.java:183)

at org.codehaus.jackson.map.ser.std.SerializerBase.wrapAndThrow(SerializerBase.java:140)

at org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:158)

at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112)

at org.codehaus.jackson.map.ser.std.StdContainerSerializers$IndexedListSerializer.serializeContents(StdContainerSerializers.java:122)

at org.codehaus.jackson.map.ser.std.StdContainerSerializers$IndexedListSerializer.serializeContents(StdContainerSerializers.java:71)

at org.codehaus.jackson.map.ser.std.AsArraySerializerBase.serialize(AsArraySerializerBase.java:86)

at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:446)

at org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:150)

at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112)

at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:446)

at org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:150)

at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112)

at org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:610)

at org.codehaus.jackson.map.ser.StdSerializerProvider.serializeValue(StdSerializerProvider.java:256)

at org.codehaus.jackson.map.ObjectMapper._configAndWriteValue(ObjectMapper.java:2575)

at org.codehaus.jackson.map.ObjectMapper.writeValueAsString(ObjectMapper.java:2097)

at org.cmdbuild.servlets.JSONDispatcher.serializeJsonResponse(JSONDispatcher.java:236)

at org.cmdbuild.servlets.JSONDispatcher.addSuccessAndWarningsIfJSON(JSONDispatcher.java:227)

at org.cmdbuild.servlets.JSONDispatcher.writeResponse(JSONDispatcher.java:210)

at org.cmdbuild.servlets.JSONDispatcher.dispatch(JSONDispatcher.java:106)

at org.cmdbuild.servlets.JSONDispatcher.doPost(JSONDispatcher.java:64)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)

at org.cmdbuild.filters.AuthFilter.doFilter(AuthFilter.java:188)

at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)

at org.cmdbuild.filters.PatchManagerFilter.doFilter(PatchManagerFilter.java:48)

at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)

at org.cmdbuild.filters.ConfCheckFilter.doFilter(ConfCheckFilter.java:31)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)

at org.cmdbuild.filters.TranslationFilter.doFilter(TranslationFilter.java:52)

at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)

at org.cmdbuild.filters.LocalizationFilter.doFilter(LocalizationFilter.java:127)

at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1434)

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:745)

Caused by: java.lang.UnsupportedOperationException

at org.cmdbuild.dao.entrytype.attributetype.UndefinedAttributeType.accept(UndefinedAttributeType.java:17)

at org.cmdbuild.servlets.json.serializers.JsonDashboardDTO$JsonDataSourceParameter$TypeConverter.<init>(JsonDashboardDTO.java:118)

at org.cmdbuild.servlets.json.serializers.JsonDashboardDTO$JsonDataSourceParameter.<init>(JsonDashboardDTO.java:102)

at org.cmdbuild.servlets.json.serializers.JsonDashboardDTO$JsonDataSourceParameter.<init>(JsonDashboardDTO.java:95)

at org.cmdbuild.servlets.json.serializers.JsonDashboardDTO$JsonDataSource$1.apply(JsonDashboardDTO.java:72)

at org.cmdbuild.servlets.json.serializers.JsonDashboardDTO$JsonDataSource$1.apply(JsonDashboardDTO.java:69)

at com.google.common.collect.Iterators$8.transform(Iterators.java:817)

at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:48)

at com.google.common.collect.Iterators.addAll(Iterators.java:365)

at com.google.common.collect.Lists.newArrayList(Lists.java:162)

at com.google.common.collect.Lists.newArrayList(Lists.java:146)

at org.cmdbuild.servlets.json.serializers.JsonDashboardDTO$JsonDataSource.getOutput(JsonDashboardDTO.java:91)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.codehaus.jackson.map.ser.BeanPropertyWriter.get(BeanPropertyWriter.java:483)

at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:418)

at org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:150)

... 66 more

thanks

As suggested In Admin Manual, I've added  in and out params:
 
 
CREATE OR REPLACE FUNCTION cmf_asset_struct2(IN "in" character varying, OUT "out" character varying)
  RETURNS SETOF character varying AS
$BODY$BEGIN
    RETURN QUERY EXECUTE
    'select "Asset"."Description", "Struttura"."strPADRE" from "Asset", "Struttura", "Map_asset_Strutt" where "Asset"."Id" = "IdObj1" AND  "IdObj2" = "Struttura"."Id";';
END$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100
  ROWS 1000;
ALTER FUNCTION cmf_asset_struct2(character varying) SET application_name='DEFAULT';
 
ALTER FUNCTION cmf_asset_struct2(character varying)
  OWNER TO postgres;
COMMENT ON FUNCTION cmf_asset_struct2(character varying) IS 'TYPE: function';
 
but doesn't work, and  I can't open CMDBuild Gui
 
please could you give me any suggestion?
thanks