Ich wollte nur Wolfs “%f”-Lösung nicht unkommentiert stehen lassen, könnte ja sein, dass jemand das aufschnappt und übernimmt.
Die Idee “Wenn integer nicht ausreicht, nehme ich halt float, dann kann ich bis 10^308 zählen” klingt so verführerisch, dass jeder schon mal drauf reingefallen ist und erst später merkt, dass bei grossen Zahlen x+1=x gilt.
Perl rechnet immer in double (zumindest wechselt es wenn nötig automatisch zu double). Deshalb kann ich leicht mit 15-stelligen Ganzzahlen rechnen ohne Gefahr, dass n+1==n. Und 15 Stellen reichen (fürs erste) für uns. So gesehen hat Perl ziemlich lange Integer. Und unformatiert (oder mit %s-Format) kann man diese riesigen Zahlen auch problemlos ausgeben.
Nur Bitoperationen (&,|,^,~,<<,>>) werden auf int32 gerechnet – und halt das %d-Format.
Dass %d so implementiert ist, dass zuerst nach int32 konvertiert ist, wusste ich allerdings noch nicht. Wie so oft: bei OSM, da wird was gelernt.
Das stimmt. In den letzten Tagen und Wochen war der tägliche Zuwachs etwas geringer als zuvor; auch meine Schätzung aus #11 lag um (voraussichtlich) fünf Tage daneben.
Ein Tag mehr, um in letzter Minute lebenswichtige Software zu reparieren
Falls ich jemanden beruhigen kann: Die Verarbeitung auf Debian 6.0.6 64-Bit, Postgres 8.4.13 mit osm2pgsql-Schema und hourly-diffs eines kleinen Gebietes funktioniert bei mir mit osm2pgsql 0.81.0 (64bit id space) und Osmosis 0.41. Java ist Version 1.6.0_26.
Ich hab anlässlich des 32. Bits nichts geändert, ausser in den letzten Wochen mal die neueren Versionen der Programme geholt.
Maptool für Navit konnte anscheinend auch nicht mit node-ids über 2^31 umgehen. Da gab’s aber gestern ein Update dazu. Seit rev-5376 funktioniert nun auch maptool…