What are the differences between a "complete answer", that one receives from a DNS server, and a "partial answer" ? What is the taxonomy of DNS server responses ?
This is the Frequently Given Answer to that question.
Responses to queries from DNS servers fall into four categories:
an indication of a fundamental error in the query, such as that it was malformed in some way
an indication of an error in the server or the client, such as a server failure or a refusal to talk to the client
Both content DNS servers and proxy DNS servers may respond with complete answers.
A complete answer comprises a chain of zero or more (client side) aliases, culminating in either
a (possibly empty) resource record set of the type requested
a "no such name" error indication.
The chain of aliases comprises zero or more "CNAME" resource records. A content DNS server following the algorithm in § 4.3.2 of RFC 1034 will insert this chain in first-to-last order in the response. The response parsing code in most resolving proxy DNS servers and DNS client libraries expects this order. However, the actual text of RFC 1034 itself does not guarantee it.
As RFC 2308 § 2.1 explains, the empty resource record set or the "no such name" error indication correspond to the domain name following the last link in the alias chain (which is, of course, the domain name in the original question if the chain is zero links long).
Only content DNS servers may respond with partial answers.
A partial answer is an answer that would otherwise be a complete answer except that it is interrupted at some point, with the remainder truncated and replaced with a referral to another content server. Essentially the content server is saying "I don't know anything further past this point. Ask over there.".
As RFC 2308 § 2.1 explains, where the answer is interrupted partway through the chain of aliases, before the final resource record set, the referral corresponds to the domain name that would otherwise have come next.