Array fields being returned empty in permanent views, but work fine as
temporary views.
---------------------------------------------------------------------------------------
Key: COUCHDB-899
URL: https://issues.apache.org/jira/browse/COUCHDB-899
Project: CouchDB
Issue Type: Bug
Components: JavaScript View Server
Affects Versions: 1.0.1
Environment: CouchDB 1.0.1 running on Ubuntu 10.10 beta - this is the
contents of my local.ini (comments removed)
[couchdb]
delayed_commits = false
[httpd]
port = 80
bind_address = 0.0.0.0
WWW-Authenticate = Basic realm="administrator"
[couch_httpd_auth]
require_valid_user = true
[log]
level = debug
Reporter: John Le Drew
I am creating an accounting app; the transactions are stored using the
following doc:
{
"_id": "405b791b64424d12e03c12e6e5001535",
"_rev": "1-97d53ba31a6ebb8c0508d0fc8776fac5",
"type": "transaction",
"account": "account_id",
"payee": "Gas Company",
"description": "May Bill",
"date": "2009/05/25",
"status": "cleared",
"category": "Bills / Gas",
"value": -5000
}
Or they can be split acroll multiple accounts / categories / etc. In this case
split over two categories:
{
"_id": "405b791b64424d12e03c12e6e5002532",
"_rev": "1-da46384d5f9fbfd26acbf8fc9a8e82fe",
"type": "transaction",
"account": "account_id",
"payee": "Credit Card Company",
"description": "May Statement",
"date": "2009/06/02",
"status": "uncleared",
"category": "Debt / Credit Card Payments",
"value": -5000,
"split": [
{
"category": "Dept / Default Charges",
"value": -1000
}
]
}
I have made a view to display all the unique categories in use across all
transactions.
// MAP
function(doc) {
if (doc.type && doc.type == 'transaction') {
if (doc.category) emit(doc.category);
if (doc.split) doc.split.map(function(spl) {
if (spl.category) emit(spl.category);
});
}
}
// REDUCE
function(keys, values, rereduce) {
return true;
}
// CURRENT OUTPUT OF VIEW (with group=true)
{
"rows": [
{
"key": "Debt / Credit Card Payments",
"value": true
},
{
"key": "Bills / Gas",
"value": true
}
]
}
// CURRENT OUTPUT OF VIEW WHEN RUN AS A TEMPORARY VIEW (with group=true)
{
"rows": [
{
"key": "Dept / Default Charges",
"value": true
},
{
"key": "Debt / Credit Card Payments",
"value": true
},
{
"key": "Bills / Gas",
"value": true
}
]
}
SIMPLE TEST VIEW
function(doc) {
if (doc.split) emit(null,doc.split);
}
OUTPUT OF TEMP VIEW
{
"total_rows": 1,
"offset": 0,
"rows": [
{
"id": "405b791b64424d12e03c12e6e5002532",
"key": null,
"value": [
{
"category": "Dept / Default Charges",
"value": -1000
}
]
}
]
}
OUTPUT OF SAME VIEW AFTER SAVE
{
"total_rows": 1,
"offset": 0,
"rows": [
{
"id": "405b791b64424d12e03c12e6e5002532",
"key": null,
"value": [
]
}
]
}
It seems from the above that couch is for some reason returning the array as
empty.
Thanks for your time on IRC already.
Cheers
John
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.