Hi!
I wonder: Is the output of slapcat expected to be stable (assuming the database did not change)? I know that LDAP attributes are considered to be sets that have no implicit ordering, but diff-wise it would be rather nice to have a stable output ordering.
Here is an example of non-stable output ordering (sdiff output, only first 18 columns for confidentiality):
# sdiff b0 b1
dn: olcDatabase={1 dn: olcDatabase={1
objectClass: olcDa objectClass: olcDa
objectClass: olcHd objectClass: olcHd
olcDatabase: {1}hd olcDatabase: {1}hd
olcDbDirectory: /v olcDbDirectory: /v
olcSuffix: dc=sap, olcSuffix: dc=sap,
olcAccess: {0}to * <
olcAccess: {1}to d <
olcAccess: {2}to a <
olcAccess: {3}to a <
olcAccess: {4}to a <
olcAccess: {5}to * <
olcLimits: {0}dn.e olcLimits: {0}dn.e
olcRootDN: cn=Admi olcRootDN: cn=Admi
olcRootPW: {SSHA}y olcRootPW: {SSHA}y
olcSecurity: ssf=1 olcSecurity: ssf=1
olcSyncrepl: {0}ri olcSyncrepl: {0}ri
olcSyncrepl: {1}ri olcSyncrepl: {1}ri
olcSyncrepl: {2}ri olcSyncrepl: {2}ri
olcUpdateRef: ldap olcUpdateRef: ldap
olcUpdateRef: ldap olcUpdateRef: ldap
olcUpdateRef: ldap olcUpdateRef: ldap
olcMirrorMode: TRU olcMirrorMode: TRU
olcDbCacheSize: 10 olcDbCacheSize: 10
olcDbCheckpoint: 1 olcDbCheckpoint: 1
olcDbConfig: {0}se olcDbConfig: {0}se
olcDbConfig: {1}se olcDbConfig: {1}se
olcDbConfig: {2}se olcDbConfig: {2}se
olcDbConfig: {3}se olcDbConfig: {3}se
olcDbConfig: {4}se olcDbConfig: {4}se
olcDbConfig: {5}se olcDbConfig: {5}se
olcDbIDLcacheSize: olcDbIDLcacheSize:
olcDbIndex: object olcDbIndex: object
olcDbIndex: uidNum olcDbIndex: uidNum
olcDbIndex: gidNum olcDbIndex: gidNum
olcDbIndex: member olcDbIndex: member
olcDbIndex: member olcDbIndex: member
olcDbIndex: cn eq, olcDbIndex: cn eq,
olcDbIndex: uid eq olcDbIndex: uid eq
olcDbIndex: sn eq, olcDbIndex: sn eq,
olcDbIndex: givenN olcDbIndex: givenN
olcDbIndex: entryU olcDbIndex: entryU
olcDbIndex: entryC olcDbIndex: entryC
olcDbIndex: ipServ olcDbIndex: ipServ
olcDbIndex: ipServ olcDbIndex: ipServ
olcDbIndex: roleOc olcDbIndex: roleOc
olcDbIndex: mail e olcDbIndex: mail e
olcDbIndex: displa olcDbIndex: displa
olcDbIndex: modify olcDbIndex: modify
structuralObjectCl structuralObjectCl
entryUUID: db3ffe4 entryUUID: db3ffe4
creatorsName: cn=c creatorsName: cn=c
createTimestamp: 2 createTimestamp: 2
entryCSN: 20170706 | olcAccess: {0}to *
> olcAccess: {1}to d
> olcAccess: {2}to a
> olcAccess: {3}to a
> olcAccess: {4}to a
> olcAccess: {5}to *
> entryCSN: 20200114
modifiersName: cn= modifiersName: cn=
modifyTimestamp: 2 modifyTimestamp: 2
So is the order of output given by some hash functions in slapcat, or is it the order in which the database returns the attributes?
What would I have to do to sort the attribute types in the same order as they are listed in the schema (one possible stable output)?
Regards,
Ulrich