[odb-users] Use of postgresql array mapping for native views
Lisa Fiedler
lfiedler at informatik.uni-leipzig.de
Tue Apr 23 03:43:14 EDT 2019
Never mind, it works now. Thank you very much for pointing me to this
article!!
On 4/23/19 9:05 AM, Lisa Fiedler wrote:
>
> On 4/22/19 6:02 PM, Boris Kolpackov wrote:
>> Lisa Fiedler <lfiedler at informatik.uni-leipzig.de> writes:
>>
>>> value_traits<std::vector<u_int64_t>, id_string>
>>>
>>> [...]
>>>
>>> typedef std::vector<u_int64_t> id_vector;
>>> #pragma db value(id_vector) type("BIGINT[]")
>> This doesn't make much sense to me: you are providing a mapping
>> traits for vector<u_int64_t> to string but then trying to use
>> BIGINT[] as the database type?
>
> I agree. I am sorry.
>
> But even after writing the following lines (note I am using
> vector<int> now to reproduce the instructions in the article):
>
> #pragma db map type("BIGINT *\\[(\\d*)\\]") \
> as("TEXT") \
> to("(?)::BIGINT[$1]") \
> from("(?)::TEXT")
>
> typedef std::vector<int> id_vector;
> #pragma db value(id_vector) type("BIGINT[]")
>
> and then using precisely the same value_traits as in
>
> https://www.codesynthesis.com/~boris/blog/2012/07/18/custom-database-to-cxx-type-mapping-in-odb/
>
>
> and then trying to do
>
> #pragma db view
> struct queryTaxonomyPath_view{
>
> #pragma db type("BIGINT[]")
> id_vector path;
> };
>
> and
>
> odb::result<queryTaxonomyPath_view> res
> (db_->query<queryTaxonomyPath_view>("SELECT * FROM
> complete.generate_taxonomic_path(" +to_string(taxId) + "::bigint)"));
> cout << "size: " << res.size() << endl;
>
> for(auto & it : res){
> cout << it.path.size() << endl;
>
> }
>
> does compile, however never terminates upon execution. res.size() is
> still printed, but at the for loop the program gets stuck.
>
> generate_taxonomic_path is a postgresql user defined function, which
> returns a table with an attribute of type BIGINT[].
>
> I don't understand why this does not work out ?
>
>>
>> I suggest that you read through this article and see if it
>> clarifies things:
>>
>> https://www.codesynthesis.com/~boris/blog/2012/07/18/custom-database-to-cxx-type-mapping-in-odb/
>>
>
More information about the odb-users
mailing list